Skip to content

Commit 9bced12

Browse files
authored
Merge pull request dotnet-script#282 from filipw/feature/info-option
Feature/info option
2 parents 09f74fc + 170159e commit 9bced12

File tree

3 files changed

+122
-7
lines changed

3 files changed

+122
-7
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using Xunit;
5+
using System.Text.RegularExpressions;
6+
7+
8+
namespace Dotnet.Script.Tests
9+
{
10+
public class EnvironmentTests
11+
{
12+
[Fact]
13+
public void ShouldPrintVersionNumber()
14+
{
15+
var result = ScriptTestRunner.Default.Execute("--version");
16+
Assert.Equal(0, result.exitCode);
17+
Assert.Matches(@"\d*.\d*.\d*", result.output);
18+
19+
result = ScriptTestRunner.Default.Execute("-v");
20+
Assert.Equal(0, result.exitCode);
21+
Assert.Matches(@"\d*.\d*.\d*", result.output);
22+
}
23+
24+
[Fact]
25+
public void ShouldPrintInfo()
26+
{
27+
var result = ScriptTestRunner.Default.Execute("--info");
28+
Assert.Equal(0, result.exitCode);
29+
Assert.Contains("Version", result.output);
30+
Assert.Contains("Install location", result.output);
31+
Assert.Contains("Target framework", result.output);
32+
Assert.Contains("Platform identifier", result.output);
33+
Assert.Contains("Runtime identifier", result.output);
34+
}
35+
36+
}
37+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using Dotnet.Script.DependencyModel.Environment;
6+
7+
namespace Dotnet.Script.Tests
8+
{
9+
public class ScriptTestRunner
10+
{
11+
public static readonly ScriptTestRunner Default = new ScriptTestRunner();
12+
13+
private ScriptEnvironment _scriptEnvironment;
14+
15+
private ScriptTestRunner()
16+
{
17+
_scriptEnvironment = ScriptEnvironment.Default;
18+
}
19+
20+
21+
public (string output, int exitCode) Execute(params string[] arguments)
22+
{
23+
var result = ProcessHelper.RunAndCaptureOutput("dotnet", GetDotnetScriptArguments(arguments));
24+
return result;
25+
}
26+
27+
public int ExecuteInProcess(params string[] arguments)
28+
{
29+
return Program.Main(arguments ?? Array.Empty<string>());
30+
}
31+
32+
public (string output, int exitCode) ExecuteFixture(string fixture, params string[] arguments)
33+
{
34+
var pathToFixture = Path.Combine("..", "..", "..", "TestFixtures", fixture);
35+
var result = ProcessHelper.RunAndCaptureOutput("dotnet", GetDotnetScriptArguments(new string[] { pathToFixture}.Concat(arguments ?? Array.Empty<string>()).ToArray()));
36+
return result;
37+
}
38+
39+
public int ExecuteFixtureInProcess(string fixture, params string[] arguments)
40+
{
41+
var pathToFixture = Path.Combine("..", "..", "..", "TestFixtures", fixture);
42+
return Program.Main(new[] { GetPathToFixture(fixture) }.Concat(arguments ?? Array.Empty<string>()).ToArray());
43+
}
44+
45+
private static string GetPathToFixture(string fixture)
46+
{
47+
return Path.Combine("..", "..", "..", "TestFixtures", fixture);
48+
}
49+
50+
private string[] GetDotnetScriptArguments(params string[] arguments)
51+
{
52+
string configuration;
53+
#if DEBUG
54+
configuration = "Debug";
55+
#else
56+
configuration = "Release";
57+
#endif
58+
var allArguments = new List<string>(new[] { "exec", Path.Combine(Directory.GetCurrentDirectory(), "..", "..", "..", "..", "Dotnet.Script", "bin", configuration, _scriptEnvironment.TargetFramework, "dotnet-script.dll")});
59+
if (arguments != null)
60+
{
61+
allArguments.AddRange(arguments);
62+
}
63+
return allArguments.ToArray();
64+
}
65+
}
66+
}

src/Dotnet.Script/Program.cs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ private static int Wain(string[] args)
7070

7171
app.HelpOption("-? | -h | --help");
7272

73-
app.VersionOption("-v | --version", GetVersionInfo);
73+
app.VersionOption("-v | --version", GetVersion());
74+
75+
var infoOption = app.Option("--info", "Displays environmental information", CommandOptionType.NoValue);
7476

7577
app.Command("eval", c =>
7678
{
@@ -127,6 +129,13 @@ private static int Wain(string[] args)
127129
app.OnExecute(async () =>
128130
{
129131
int exitCode = 0;
132+
133+
if (infoOption.HasValue())
134+
{
135+
Console.Write(GetEnvironmentInfo());
136+
return 0;
137+
}
138+
130139
if (!string.IsNullOrWhiteSpace(file.Value))
131140
{
132141
var optimizationLevel = OptimizationLevel.Debug;
@@ -207,18 +216,21 @@ private static Task<int> Run(bool debugMode, ScriptContext context)
207216
return runner.Execute<int>(context);
208217
}
209218

210-
private static string GetVersionInfo()
219+
private static string GetEnvironmentInfo()
211220
{
212-
StringBuilder sb = new StringBuilder();
213-
var versionAttribute = typeof(Program).GetTypeInfo().Assembly.GetCustomAttributes<AssemblyInformationalVersionAttribute>().SingleOrDefault();
214-
sb.AppendLine($"Version : {versionAttribute?.InformationalVersion}");
221+
StringBuilder sb = new StringBuilder();
222+
sb.AppendLine($"Version : {GetVersion()}");
215223
sb.AppendLine($"Install location : {ScriptEnvironment.Default.InstallLocation}");
216224
sb.AppendLine($"Target framework : {ScriptEnvironment.Default.TargetFramework}");
217225
sb.AppendLine($"Platform identifier : {ScriptEnvironment.Default.PlatformIdentifier}");
218226
sb.AppendLine($"Runtime identifier : {ScriptEnvironment.Default.RuntimeIdentifier}");
219-
return sb.ToString();
227+
return sb.ToString();
228+
}
220229

221-
230+
private static string GetVersion()
231+
{
232+
var versionAttribute = typeof(Program).GetTypeInfo().Assembly.GetCustomAttributes<AssemblyInformationalVersionAttribute>().SingleOrDefault();
233+
return versionAttribute?.InformationalVersion;
222234
}
223235

224236
private static ScriptCompiler GetScriptCompiler(bool debugMode)

0 commit comments

Comments
 (0)