Esempio n. 1
0
 internal static int RunCommand(object command, CommandMetadata metadata, string[] args)
 {
     if (metadata.Options == null)
     {
         try
         {
             return Run(command, metadata, null);
         }
         catch (ShellCommandHelpException helpException)
         {
             helpException.ParsingResult = new ParsingResult(new List<ParsingError>());
             throw;
         }
     }
     ParsingResult parsingResult;
     object options = null;
     if (metadata.Type == metadata.Options.Type)
         parsingResult = CommandOptionsParser.Parse(metadata.Options, command, args);
     else
     {
         options = Activator.CreateInstance(metadata.Options.Type);
         parsingResult = CommandOptionsParser.Parse(metadata.Options, options, args);
     }
     if (!parsingResult) throw new ShellCommandHelpException(command) { ParsingResult = parsingResult };
     try
     {
         return Run(command, metadata, options);
     }
     catch (ShellCommandHelpException helpException)
     {
         helpException.ParsingResult = parsingResult;
         throw;
     }
 }
Esempio n. 2
0
 private static int Run(object command, CommandMetadata metadata, object options)
 {
     object returnValue;
     try
     {
         returnValue = options == null ? metadata.RunnableMethod.Invoke(command, new object[] { }) : metadata.RunnableMethod.Invoke(command, new[] { options });
     }
     catch (TargetInvocationException invocationError)
     {
         throw invocationError.InnerException;
     }
     return returnValue != null ? (int)returnValue : 0;
 }
Esempio n. 3
0
 //[GetHelp]
 public string GetUsage(CommandMetadata metadata, ParsingResult parsingResult)
 {
     return new StringBuilder(metadata.Name).AppendLine().AppendLine(metadata.Description)
         .AppendLine(string.Join(Environment.NewLine,
             parsingResult.Errors.Select(
                 err =>
                     (err.OptionMetadata.IsNamedOption
                         ? ((CommandNamedOptionMetadata)err.OptionMetadata).ShortName +
                           ((CommandNamedOptionMetadata)err.OptionMetadata).LongName
                         : string.Empty) + " " + err.OptionMetadata.ToString() + " - " + err.ParsingErrorBase.ToString()))).ToString();
 }
Esempio n. 4
0
 private static void ShowCommandHelp(object command, CommandMetadata metadata, ParsingResult parsingResult)
 {
     // ReSharper disable PossibleNullReferenceException
     if (metadata.HelpMethod == null) HelpBuilder.PrintCommandHelp(Output, metadata, AssemblyInfo, parsingResult);
     else
     {
         var parameters = new List<object>();
         foreach (var type in metadata.HelpMethod.GetParameters().Select(param => param.ParameterType))
             if (type == typeof(CommandMetadata)) parameters.Add(metadata);
             else parameters.Add(parsingResult);
         Output.WriteLine(metadata.HelpMethod.Invoke(command, parameters.ToArray()));
     }
     // ReSharper restore PossibleNullReferenceException
 }