update CliCommandLine, other code changes

This commit is contained in:
Jon Sequeira 2017-03-12 15:06:34 -07:00
parent 5c4db56d3b
commit a6c2b6c9f6
11 changed files with 77 additions and 32 deletions

View file

@ -287,7 +287,7 @@ namespace Microsoft.DotNet.Tools.Common
return result;
}
public static bool HasExtension(string filePath, string extension)
public static bool HasExtension(this string filePath, string extension)
{
var comparison = StringComparison.Ordinal;
@ -335,5 +335,8 @@ namespace Microsoft.DotNet.Tools.Common
notExisting.Select(p => string.Format(pathDoesNotExistLocalizedFormatString, p))));
}
}
public static bool IsDirectory(this string path) =>
File.GetAttributes(path).HasFlag(FileAttributes.Directory);
}
}

View file

@ -1,3 +1,4 @@
using System;
using System.IO;
using System.Linq;
using Microsoft.DotNet.Cli.CommandLine;
@ -63,5 +64,25 @@ namespace Microsoft.DotNet.Cli
public static ArgumentsRule DefaultToCurrentDirectory(this ArgumentsRule rule) =>
rule.With(defaultValue: () => PathUtility.EnsureTrailingSlash(Directory.GetCurrentDirectory()));
public static ArgumentsRule ExistingSlnFileOrDirectoryOnly(
this ArgumentsRule rule) =>
rule
.ExistingFilesOnly()
.And(new ArgumentsRule(o =>
{
foreach (var path in o.Arguments)
{
if (path.HasExtension(".sln") ||
path.IsDirectory())
{
continue;
}
return $"Specified path '{path}' is not a directory or solution file.";
}
return null;
}));
}
}

View file

@ -14,7 +14,7 @@ namespace Microsoft.DotNet.Cli
public static void ShowHelpIfRequested(this ParseResult parseResult)
{
if (parseResult.AppliedOptions.Any(o => o.HasOption("help")))
if (parseResult.HasOption("help"))
{
// NOTE: this is a temporary stage in refactoring toward the ClicCommandLineParser being used at the CLI entry point.
throw new HelpException(parseResult.Command().HelpView());

View file

@ -33,6 +33,7 @@ namespace Microsoft.DotNet.Cli
CompleteCommandParser.Complete(),
CommonOptions.HelpOption(),
Create.Option("--info", ""),
Create.Option("-d", "")));
Create.Option("-d", ""),
Create.Option("--debug", "")));
}
}

View file

@ -22,18 +22,15 @@ namespace Microsoft.DotNet.Tools.Add
internal override Dictionary<string, Func<AppliedOption, CommandBase>> SubCommands =>
new Dictionary<string, Func<AppliedOption, CommandBase>>
{
{
"reference",
add => new AddProjectToProjectReferenceCommand(
add["reference"],
add.Value<string>())
},
{
"package",
add => new AddPackageReferenceCommand(
add["package"],
add.Value<string>())
}
["reference"] =
add => new AddProjectToProjectReferenceCommand(
add["reference"],
add.Value<string>()),
["package"] =
add => new AddPackageReferenceCommand(
add["package"],
add.Value<string>())
};
public static int Run(string[] args)

View file

@ -20,17 +20,22 @@ namespace Microsoft.DotNet.Tools.Add.PackageReference
private readonly string _packageId;
private readonly string _fileOrDirectory;
public AddPackageReferenceCommand(AppliedOption appliedCommand, string fileOrDirectory)
public AddPackageReferenceCommand(
AppliedOption appliedCommand,
string fileOrDirectory)
{
if (appliedCommand == null)
{
throw new ArgumentNullException(nameof(appliedCommand));
}
if (fileOrDirectory == null)
{
throw new ArgumentNullException(nameof(fileOrDirectory));
}
_appliedCommand = appliedCommand;
_fileOrDirectory = fileOrDirectory;
_packageId = appliedCommand.Value<string>();
if ( string.IsNullOrWhiteSpace(_packageId) || _appliedCommand.Arguments.Count > 1)
{
throw new GracefulException(LocalizableStrings.SpecifyExactlyOnePackageReference);
}
}
public override int Execute()

View file

@ -20,12 +20,19 @@ namespace Microsoft.DotNet.Tools.Add.ProjectToProjectReference
private readonly AppliedOption _appliedCommand;
private readonly string _fileOrDirectory;
public AddProjectToProjectReferenceCommand(AppliedOption appliedCommand, string fileOrDirectory)
public AddProjectToProjectReferenceCommand(
AppliedOption appliedCommand,
string fileOrDirectory)
{
if (appliedCommand == null)
{
throw new ArgumentNullException(nameof(appliedCommand));
}
if (fileOrDirectory == null)
{
throw new ArgumentNullException(nameof(fileOrDirectory));
}
_appliedCommand = appliedCommand;
_fileOrDirectory = fileOrDirectory;
}

View file

@ -11,11 +11,22 @@ namespace Microsoft.DotNet.Cli
{
DebugHelper.HandleDebugSwitch(ref args);
var resultOfParsingArg =
var result =
Parser.Instance.Parse(
args.Single());
Console.WriteLine(resultOfParsingArg.Diagram());
Console.WriteLine(result.Diagram());
if (result.Errors.Any())
{
Console.WriteLine();
Console.WriteLine("ERRORS");
Console.WriteLine();
foreach (var error in result.Errors)
{
Console.WriteLine($"[{error?.Option?.Name ?? "???"}] {error.Message}");
}
}
return 0;
}

View file

@ -12,19 +12,19 @@ namespace Microsoft.DotNet.Cli
"sln",
".NET modify solution file command",
Accept.ExactlyOneArgument()
.ExistingSlnFileOrDirectoryOnly()
.DefaultToCurrentDirectory(),
CommonOptions.HelpOption(),
Create.Command("add",
".NET Add project(s) to a solution file Command",
Accept.ExactlyOneArgument()
.With(name: "SLN_FILE"),
Accept.OneOrMoreArguments(),
CommonOptions.HelpOption()),
Create.Command("list",
"List all projects in the solution.",
Accept.ExactlyOneArgument()
.With(name: "SLN_FILE"),
Accept.OneOrMoreArguments(),
CommonOptions.HelpOption()),
Create.Command("remove",
"Remove the specified project(s) from the solution. The project is not impacted."));
"Remove the specified project(s) from the solution. The project is not impacted.",
Accept.OneOrMoreArguments()));
}
}

View file

@ -40,7 +40,7 @@
<PackageReference Include="Microsoft.Win32.Registry" Version="4.3.0" />
<PackageReference Include="Microsoft.Build" Version="$(CLI_MSBuild_Version)" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="$(PlatformAbstractionsVersion)" />
<PackageReference Include="Microsoft.DotNet.Cli.CommandLine" Version="0.1.0-alpha-88" />
<PackageReference Include="Microsoft.DotNet.Cli.CommandLine" Version="0.1.0-alpha-92" />
<PackageReference Include="Microsoft.TemplateEngine.Abstractions" Version="$(TemplateEngineVersion)" />
<PackageReference Include="Microsoft.TemplateEngine.Cli" Version="$(TemplateEngineVersion)" />
<PackageReference Include="Microsoft.TemplateEngine.Orchestrator.RunnableProjects" Version="$(TemplateEngineVersion)" />

View file

@ -42,6 +42,6 @@
<PackageReference Include="xunit" Version="2.2.0-beta4-build3444" />
<PackageReference Include="xunit.netcore.extensions" Version="1.0.0-prerelease-00206" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="$(PlatformAbstractionsVersion)" />
<PackageReference Include="Microsoft.DotNet.Cli.CommandLine" Version="0.1.0-alpha-88" />
<PackageReference Include="Microsoft.DotNet.Cli.CommandLine" Version="0.1.0-alpha-92" />
</ItemGroup>
</Project>