예제 #1
0
        public void Execute(string[] args, IExecutionContext context)
        {
            if (!args.Any())
            {
                context.Out(this.GetCommandsList());
                return;
            }

            if (args[0].Length > 3 && args[0].StartsWith(CommandPrefix, StringComparison.OrdinalIgnoreCase))
            {
                var command = string.Concat(args[0].Skip(3));
                var usage = new CommandFactory().Create(command).GetUsage();
                context.Out(usage);
                return;
            }

            throw new ToolException(Resources.InvalidArgsErrorMessage, this.GetCommandsList(), ExitCode.InvalidArguments);
        }
예제 #2
0
 internal static ExitCode Run(string[] args, IExecutionContext context)
 {
     try
     {
         var factory = new CommandFactory();
         factory.Create(args[0]).Execute(args.Skip(1).ToArray(), context);
         return ExitCode.Success;
     }
     catch (ToolException exception)
     {
         context.Error(exception.Message);
         if (!string.IsNullOrEmpty(exception.Out))
         {
             context.Out(exception.Out);
         }
         return exception.ExitCode;
     }
     catch (Exception)
     {
         context.Error(Properties.Resources.InvalidArgsErrorMessage);
         context.Out(new HelpCommand().GetCommandsList());
         return ExitCode.InvalidArguments;
     }
 }