Convert dotnet-run to System.CommandLine
This commit is contained in:
parent
6e465818c5
commit
0ecbc0d5fc
11 changed files with 284 additions and 189 deletions
|
@ -39,13 +39,13 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Init
|
|||
EndProject
|
||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Compiler.Native", "src\Microsoft.DotNet.Tools.Compiler.Native\Microsoft.DotNet.Tools.Compiler.Native.xproj", "{172485DD-B94E-4F3E-851E-CF23908FF960}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "src\corehost\cmake\win7-x64\ALL_BUILD.vcxproj", "{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "src\corehost\cmake\win7-x64\ALL_BUILD.vcxproj", "{86A16EC3-EC30-391A-A411-9E7EF1357A0A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "corehost", "src\corehost\cmake\win7-x64\corehost.vcxproj", "{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "corehost", "src\corehost\cmake\win7-x64\corehost.vcxproj", "{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "src\corehost\cmake\win7-x64\ZERO_CHECK.vcxproj", "{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "src\corehost\cmake\win7-x64\ZERO_CHECK.vcxproj", "{AB25E68A-8581-30C1-B19C-61FCADE4774C}"
|
||||
EndProject
|
||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Pack", "src\Microsoft.DotNet.Tools.Pack\Microsoft.DotNet.Tools.Pack.xproj", "{3E196F0D-ACEA-433D-8D07-5F8A44517C28}"
|
||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.Tools.Pack", "src\Microsoft.DotNet.Tools.Pack\Microsoft.DotNet.Tools.Pack.xproj", "{0F480791-4BA0-44E3-8CC4-C71656664175}"
|
||||
EndProject
|
||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.DotNet.ProjectModel.Workspaces", "src\Microsoft.DotNet.ProjectModel.Workspaces\Microsoft.DotNet.ProjectModel.Workspaces.xproj", "{BD7833F8-3209-4682-BF75-B4BCA883E279}"
|
||||
EndProject
|
||||
|
@ -271,58 +271,58 @@ Global
|
|||
{172485DD-B94E-4F3E-851E-CF23908FF960}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{172485DD-B94E-4F3E-851E-CF23908FF960}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{172485DD-B94E-4F3E-851E-CF23908FF960}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.Debug|x64.Build.0 = Debug|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.Release|x64.ActiveCfg = Release|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.Release|x64.Build.0 = Release|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.Debug|x64.Build.0 = Debug|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.Release|x64.ActiveCfg = Release|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.Release|x64.Build.0 = Release|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.Debug|x64.Build.0 = Debug|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.Release|x64.ActiveCfg = Release|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.Release|x64.Build.0 = Release|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.Debug|x64.Build.0 = Debug|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.Release|x64.ActiveCfg = Release|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.Release|x64.Build.0 = Release|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.Debug|x64.Build.0 = Debug|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.Release|x64.ActiveCfg = Release|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.Release|x64.Build.0 = Release|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.Debug|x64.Build.0 = Debug|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.Release|x64.ActiveCfg = Release|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.Release|x64.Build.0 = Release|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.Release|x64.Build.0 = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{BD7833F8-3209-4682-BF75-B4BCA883E279}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BD7833F8-3209-4682-BF75-B4BCA883E279}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BD7833F8-3209-4682-BF75-B4BCA883E279}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
|
@ -374,10 +374,10 @@ Global
|
|||
{A16958E1-24C7-4F1E-B317-204AD91625DD} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{BC765FBF-AD7A-4A99-9902-5540C5A74181} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{172485DD-B94E-4F3E-851E-CF23908FF960} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{7DFC6663-5AF1-4307-AAD7-B056011EF6F0} = {C0CA389D-A35E-4082-BC05-598C9D6301BC}
|
||||
{1187A81C-B59E-4B0B-A0A0-ED55D8E39A9D} = {C0CA389D-A35E-4082-BC05-598C9D6301BC}
|
||||
{C3B057EE-D6C1-4D16-9E1F-D0EED4181D13} = {C0CA389D-A35E-4082-BC05-598C9D6301BC}
|
||||
{3E196F0D-ACEA-433D-8D07-5F8A44517C28} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{86A16EC3-EC30-391A-A411-9E7EF1357A0A} = {C0CA389D-A35E-4082-BC05-598C9D6301BC}
|
||||
{D22D1279-24FF-3F01-9ADB-9F23CA8AD062} = {C0CA389D-A35E-4082-BC05-598C9D6301BC}
|
||||
{AB25E68A-8581-30C1-B19C-61FCADE4774C} = {C0CA389D-A35E-4082-BC05-598C9D6301BC}
|
||||
{0F480791-4BA0-44E3-8CC4-C71656664175} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{BD7833F8-3209-4682-BF75-B4BCA883E279} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{DB29F219-DC92-4AF7-A2EE-E89FFBB3F5F0} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
EndGlobalSection
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<add key="AspNetCIDev" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
|
||||
<add key="roslyn-nightly" value="https://www.myget.org/F/roslyn-nightly/api/v3/index.json" />
|
||||
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||
<add key="dotnet-corefxlab" value="https://www.myget.org/F/dotnet-corefxlab/api/v3/index.json" />
|
||||
<add key="corefxlab" value="https://www.myget.org/F/netcore-package-prototyping/api/v3/index.json" />
|
||||
<add key="corert" value="https://www.myget.org/F/dotnet/auth/3e4f1dbe-f43a-45a8-b029-3ad4d25605ac/api/v2" />
|
||||
</packageSources>
|
||||
|
|
|
@ -125,6 +125,8 @@ namespace Microsoft.DotNet.Cli.Utils
|
|||
|
||||
public CommandResult Execute()
|
||||
{
|
||||
Reporter.Verbose.WriteLine($"Running {_process.StartInfo.FileName} {_process.StartInfo.Arguments}");
|
||||
|
||||
ThrowIfRunning();
|
||||
_running = true;
|
||||
|
||||
|
|
|
@ -33,12 +33,24 @@ namespace Microsoft.DotNet.Cli.Utils
|
|||
private static bool GetBool(string name, bool defaultValue = false)
|
||||
{
|
||||
var str = Environment.GetEnvironmentVariable(name);
|
||||
bool value;
|
||||
if(string.IsNullOrEmpty(str) || !bool.TryParse(str, out value))
|
||||
if (string.IsNullOrEmpty(str))
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
return value;
|
||||
|
||||
switch (str.ToLowerInvariant())
|
||||
{
|
||||
case "true":
|
||||
case "1":
|
||||
case "yes":
|
||||
return true;
|
||||
case "false":
|
||||
case "0":
|
||||
case "no":
|
||||
return false;
|
||||
default:
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ using System;
|
|||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using Microsoft.Dnx.Runtime.Common.CommandLine;
|
||||
|
||||
namespace Microsoft.DotNet.Cli.Utils
|
||||
{
|
||||
|
|
|
@ -21,7 +21,8 @@
|
|||
"Microsoft.Extensions.CommandLineUtils.Sources": {
|
||||
"type": "build",
|
||||
"version": "1.0.0-*"
|
||||
}
|
||||
},
|
||||
"System.CommandLine" : "0.1.0-d111815-3"
|
||||
},
|
||||
"frameworks": {
|
||||
"dnxcore50": { }
|
||||
|
|
|
@ -1,15 +1,9 @@
|
|||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.Dnx.Runtime.Common.CommandLine;
|
||||
using Microsoft.DotNet.Cli.Utils;
|
||||
using Microsoft.Extensions.ProjectModel;
|
||||
using NuGet.Frameworks;
|
||||
using System;
|
||||
using System.CommandLine;
|
||||
|
||||
namespace Microsoft.DotNet.Tools.Run
|
||||
{
|
||||
|
@ -19,52 +13,24 @@ namespace Microsoft.DotNet.Tools.Run
|
|||
{
|
||||
DebugHelper.HandleDebugSwitch(ref args);
|
||||
|
||||
var app = new CommandLineApplication(throwOnUnexpectedArg: false);
|
||||
app.Name = "dotnet run";
|
||||
app.FullName = ".NET Executor";
|
||||
app.Description = "Runner for the .NET Platform";
|
||||
app.HelpOption("-h|--help");
|
||||
RunCommand runCmd = new RunCommand();
|
||||
|
||||
var framework = app.Option("-f|--framework <FRAMEWORK>", "Compile a specific framework", CommandOptionType.MultipleValue);
|
||||
var configuration = app.Option("-c|--configuration <CONFIGURATION>", "Configuration under which to build", CommandOptionType.SingleValue);
|
||||
var preserveTemporaryOutput = app.Option("-t|--preserve-temporary", "Keep the output's temporary directory around", CommandOptionType.NoValue);
|
||||
|
||||
// This is required to be an option because otherwise we can't tell if the first argument is a project or the first argument to pass to an application
|
||||
var project = app.Option("-p|--project <PROJECT_PATH>", "The path to the project to run (defaults to the current directory). Can be a path to a project.json or a project directory.", CommandOptionType.SingleValue);
|
||||
|
||||
app.OnExecute(() =>
|
||||
ArgumentSyntax.Parse(args, syntax =>
|
||||
{
|
||||
// Locate the project and get the name and full path
|
||||
var path = project.Value();
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
if (File.Exists(path) && (Path.GetExtension(path) == ".csx"))
|
||||
{
|
||||
return RunInteractive(path);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
path = Directory.GetCurrentDirectory();
|
||||
}
|
||||
syntax.HandleErrors = false;
|
||||
syntax.DefineOption("f|framework", ref runCmd.Framework, "Compile a specific framework");
|
||||
syntax.DefineOption("c|configuration", ref runCmd.Configuration, "Configuration under which to build");
|
||||
syntax.DefineOption("t|preserve-temporary", ref runCmd.PreserveTemporary, "Keep the output's temporary directory around");
|
||||
syntax.DefineOption("p|project", ref runCmd.Project, "The path to the project to run (defaults to the current directory). Can be a path to a project.json or a project directory");
|
||||
|
||||
var contexts = ProjectContext.CreateContextForEachFramework(path);
|
||||
ProjectContext context;
|
||||
if (!framework.HasValue())
|
||||
{
|
||||
context = contexts.First();
|
||||
}
|
||||
else
|
||||
{
|
||||
var fx = NuGetFramework.Parse(framework.Value());
|
||||
context = contexts.FirstOrDefault(c => c.TargetFramework.Equals(fx));
|
||||
}
|
||||
return Run(context, configuration.Value() ?? Constants.DefaultConfiguration, app.RemainingArguments, preserveTemporaryOutput.HasValue());
|
||||
// TODO: this is not supporting args which can be switches (i.e. --test)
|
||||
// TODO: we need to make a change in System.CommandLine or parse args ourselves.
|
||||
syntax.DefineParameterList("args", ref runCmd.Args, "Arguments to pass to the executable or script");
|
||||
});
|
||||
|
||||
try
|
||||
{
|
||||
return app.Execute(args);
|
||||
return runCmd.Start();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -76,77 +42,5 @@ namespace Microsoft.DotNet.Tools.Run
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
private static int Run(ProjectContext context, string configuration, List<string> remainingArguments, bool preserveTemporaryOutput)
|
||||
{
|
||||
// Create a temporary directory
|
||||
var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));
|
||||
|
||||
// Compile to that directory
|
||||
var result = Command.Create($"dotnet-compile", $"--output \"{tempDir}\" --temp-output \"{tempDir}\" --framework \"{context.TargetFramework}\" --configuration \"{configuration}\" {context.ProjectFile.ProjectDirectory}")
|
||||
.ForwardStdOut(onlyIfVerbose: true)
|
||||
.ForwardStdErr()
|
||||
.Execute();
|
||||
|
||||
if (result.ExitCode != 0)
|
||||
{
|
||||
return result.ExitCode;
|
||||
}
|
||||
|
||||
// Now launch the output and give it the results
|
||||
var outputName = Path.Combine(tempDir, context.ProjectFile.Name + Constants.ExeSuffix);
|
||||
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
if (context.TargetFramework.IsDesktop())
|
||||
{
|
||||
// Run mono if we're running a desktop target on non windows
|
||||
remainingArguments.Insert(0, outputName + ".exe");
|
||||
|
||||
if (string.Equals(configuration, "Debug", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// If we're compiling for the debug configuration then add the --debug flag
|
||||
// other options may be passed using the MONO_OPTIONS env var
|
||||
remainingArguments.Insert(0, "--debug");
|
||||
}
|
||||
|
||||
outputName = "mono";
|
||||
}
|
||||
}
|
||||
|
||||
// Locate the runtime
|
||||
string runtime = Environment.GetEnvironmentVariable("DOTNET_HOME");
|
||||
if (string.IsNullOrEmpty(runtime))
|
||||
{
|
||||
// Use the runtime deployed with the tools, if present
|
||||
var candidate = Path.Combine(AppContext.BaseDirectory, "..", "runtime");
|
||||
if (File.Exists(Path.Combine(candidate, Constants.LibCoreClrName)))
|
||||
{
|
||||
runtime = Path.GetFullPath(candidate);
|
||||
}
|
||||
}
|
||||
|
||||
result = Command.Create(outputName, string.Join(" ", remainingArguments))
|
||||
.ForwardStdOut()
|
||||
.ForwardStdErr()
|
||||
.EnvironmentVariable("DOTNET_HOME", runtime)
|
||||
.Execute();
|
||||
|
||||
// Clean up
|
||||
if (!preserveTemporaryOutput)
|
||||
{
|
||||
Directory.Delete(tempDir, recursive: true);
|
||||
}
|
||||
|
||||
return result.ExitCode;
|
||||
}
|
||||
|
||||
private static int RunInteractive(string scriptName)
|
||||
{
|
||||
var command = Command.Create($"dotnet-repl-csi", scriptName)
|
||||
.ForwardStdOut()
|
||||
.ForwardStdErr();
|
||||
var result = command.Execute();
|
||||
return result.ExitCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
154
src/Microsoft.DotNet.Tools.Run/RunCommand.cs
Normal file
154
src/Microsoft.DotNet.Tools.Run/RunCommand.cs
Normal file
|
@ -0,0 +1,154 @@
|
|||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.DotNet.Cli.Utils;
|
||||
using Microsoft.Extensions.ProjectModel;
|
||||
using NuGet.Frameworks;
|
||||
|
||||
namespace Microsoft.DotNet.Tools.Run
|
||||
{
|
||||
public class RunCommand
|
||||
{
|
||||
public string Framework = null;
|
||||
public string Configuration = null;
|
||||
public bool PreserveTemporary = false;
|
||||
public string Project = null;
|
||||
public IReadOnlyList<string> Args = null;
|
||||
|
||||
bool _isInteractive = false;
|
||||
ProjectContext _context;
|
||||
List<string> _args;
|
||||
|
||||
public int Start()
|
||||
{
|
||||
CalculateDefaultsForNonAssigned();
|
||||
|
||||
if (_isInteractive)
|
||||
{
|
||||
return RunInteractive(Project);
|
||||
}
|
||||
else
|
||||
{
|
||||
return RunExecutable();
|
||||
}
|
||||
}
|
||||
|
||||
private void CalculateDefaultsForNonAssigned()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Project))
|
||||
{
|
||||
if (File.Exists(Project) && (Path.GetExtension(Project) == ".csx"))
|
||||
{
|
||||
_isInteractive = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Project = Directory.GetCurrentDirectory();
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(Configuration))
|
||||
{
|
||||
Configuration = Constants.DefaultConfiguration;
|
||||
}
|
||||
|
||||
var contexts = ProjectContext.CreateContextForEachFramework(Project);
|
||||
if (Framework == null)
|
||||
{
|
||||
_context = contexts.First();
|
||||
}
|
||||
else
|
||||
{
|
||||
var fx = NuGetFramework.Parse(Framework);
|
||||
_context = contexts.FirstOrDefault(c => c.TargetFramework.Equals(fx));
|
||||
}
|
||||
|
||||
if (Args == null)
|
||||
{
|
||||
_args = new List<string>();
|
||||
}
|
||||
else
|
||||
{
|
||||
_args = new List<string>(Args);
|
||||
}
|
||||
}
|
||||
|
||||
private int RunExecutable()
|
||||
{
|
||||
// Create a temporary directory
|
||||
var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));
|
||||
|
||||
// Compile to that directory
|
||||
var result = Command.Create($"dotnet-compile", $"--output \"{tempDir}\" --temp-output \"{tempDir}\" --framework \"{_context.TargetFramework}\" --configuration \"{Configuration}\" {_context.ProjectFile.ProjectDirectory}")
|
||||
.ForwardStdOut(onlyIfVerbose: true)
|
||||
.ForwardStdErr()
|
||||
.Execute();
|
||||
|
||||
if (result.ExitCode != 0)
|
||||
{
|
||||
return result.ExitCode;
|
||||
}
|
||||
|
||||
// Now launch the output and give it the results
|
||||
var outputName = Path.Combine(tempDir, _context.ProjectFile.Name + Constants.ExeSuffix);
|
||||
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
if (_context.TargetFramework.IsDesktop())
|
||||
{
|
||||
// Run mono if we're running a desktop target on non windows
|
||||
_args.Insert(0, outputName + ".exe");
|
||||
|
||||
if (string.Equals(Configuration, "Debug", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// If we're compiling for the debug configuration then add the --debug flag
|
||||
// other options may be passed using the MONO_OPTIONS env var
|
||||
_args.Insert(0, "--debug");
|
||||
}
|
||||
|
||||
outputName = "mono";
|
||||
}
|
||||
}
|
||||
|
||||
// Locate the runtime
|
||||
string runtime = Environment.GetEnvironmentVariable("DOTNET_HOME");
|
||||
if (string.IsNullOrEmpty(runtime))
|
||||
{
|
||||
// Use the runtime deployed with the tools, if present
|
||||
var candidate = Path.Combine(AppContext.BaseDirectory, "..", "runtime");
|
||||
if (File.Exists(Path.Combine(candidate, Constants.LibCoreClrName)))
|
||||
{
|
||||
runtime = Path.GetFullPath(candidate);
|
||||
}
|
||||
}
|
||||
|
||||
result = Command.Create(outputName, string.Join(" ", _args))
|
||||
.ForwardStdOut()
|
||||
.ForwardStdErr()
|
||||
.EnvironmentVariable("DOTNET_HOME", runtime)
|
||||
.Execute();
|
||||
|
||||
// Clean up
|
||||
if (!PreserveTemporary)
|
||||
{
|
||||
Directory.Delete(tempDir, recursive: true);
|
||||
}
|
||||
|
||||
return result.ExitCode;
|
||||
}
|
||||
|
||||
private static int RunInteractive(string scriptName)
|
||||
{
|
||||
var command = Command.Create($"dotnet-repl-csi", scriptName)
|
||||
.ForwardStdOut()
|
||||
.ForwardStdErr();
|
||||
var result = command.Execute();
|
||||
return result.ExitCode;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -16,11 +16,8 @@
|
|||
"type": "build",
|
||||
"version": "1.0.0-*"
|
||||
},
|
||||
"Microsoft.Extensions.CommandLineUtils.Sources": {
|
||||
"type": "build",
|
||||
"version": "1.0.0-*"
|
||||
},
|
||||
"Microsoft.Net.Compilers.netcore": "1.2.0-beta-20151117-04"
|
||||
"Microsoft.Net.Compilers.netcore": "1.2.0-beta-20151117-04",
|
||||
"System.CommandLine" : "0.1.0-d111815-3"
|
||||
},
|
||||
"frameworks": {
|
||||
"dnxcore50": { }
|
||||
|
|
18
test/TestAppWithArgs/Program.cs
Normal file
18
test/TestAppWithArgs/Program.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
|
||||
namespace ConsoleApplication
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
Console.WriteLine("Hello World!");
|
||||
|
||||
Console.WriteLine($"I was passed {args.Length} args:");
|
||||
foreach (var arg in args)
|
||||
{
|
||||
Console.WriteLine($"arg: [{arg}]");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
17
test/TestAppWithArgs/project.json
Normal file
17
test/TestAppWithArgs/project.json
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"version": "1.0.0-*",
|
||||
"compilationOptions": {
|
||||
"emitEntryPoint": true
|
||||
},
|
||||
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Runtime": "1.0.1-beta-*",
|
||||
"System.IO": "4.0.10-beta-*",
|
||||
"System.Console": "4.0.0-beta-*",
|
||||
"System.Runtime": "4.0.21-beta-*"
|
||||
},
|
||||
|
||||
"frameworks": {
|
||||
"dnxcore50": { }
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue