Esempio n. 1
0
        public virtual ISubCommand Create(string[] args, ISubCommandController controller, SubCommandParseOption option)
        {
            var  parser  = CommandUtility.GetParser(option);
            var  options = Activator.CreateInstance <TOptions>();
            bool parsed  = parser.ParseArguments(args, options);

            if (!parsed && option == SubCommandParseOption.Strict)
            {
                throw new OptionParserException();
            }
            var helpOption = options as ICanPrintHelpMessage;

            if (helpOption != null && helpOption.PrintHelpMessage)
            {
                return(new HelpCommand(GetHelpText()));
            }
            var logOption = options as ILoggable;

            if (logOption != null)
            {
                if (!string.IsNullOrWhiteSpace(logOption.LogFilePath))
                {
                    Logger.AddOrReplaceListener(new ReportLogListener(logOption.LogFilePath), TypeEqualityComparer.Default);
                }

                if (logOption.LogLevel.HasValue)
                {
                    Logger.LogLevelThreshold = logOption.LogLevel.Value;
                }
            }

            return(CreateCommand(options, controller));
        }
Esempio n. 2
0
 public override HelpCommand CreateCommand(HelpCommandOptions options, ISubCommandController controller)
 {
     if (string.IsNullOrEmpty(options.Command))
     {
         return(new HelpCommand(controller.GetHelpText()));
     }
     if (controller.TryGetCommandCreator(options.Command, out ISubCommandCreator creator))
     {
         return(new HelpCommand(creator.GetHelpText()));
     }
     else
     {
         throw new OptionParserException($"{options.Command} is not a supported sub command.");
     }
 }
Esempio n. 3
0
 public CompositeCommand(string[] args, ISubCommandController controller, CompositeOptions options)
 {
     var result = ToOrderedKeyValuePair(options.ConfigFile);
     foreach (var pair in result)
     {
         ISubCommandCreator command;
         if (!controller.TryGetCommandCreator(pair.Key, out command))
         {
             Logger.LogWarning($"{pair.Key} is not a recognized command name, ignored.");
         }
         else
         {
             Commands.Add(command.Create(args, controller, SubCommandParseOption.Loose));
         }
     }
 }
Esempio n. 4
0
        public CompositeCommand(string[] args, ISubCommandController controller, CompositeOptions options)
        {
            var result = ToOrderedKeyValuePair(options.ConfigFile);

            foreach (var pair in result)
            {
                if (!controller.TryGetCommandCreator(pair.Key, out ISubCommandCreator command))
                {
                    Logger.LogWarning($"{pair.Key} is not a recognized command name, ignored.");
                }
                else
                {
                    Commands.Add(command.Create(args, controller, SubCommandParseOption.Loose));
                }
            }
        }
Esempio n. 5
0
        public virtual ISubCommand Create(string[] args, ISubCommandController controller, SubCommandParseOption option)
        {
            var  parser  = CommandUtility.GetParser(option);
            var  options = Activator.CreateInstance <TOptions>();
            bool parsed  = parser.ParseArguments(args, options);

            if (!parsed && option == SubCommandParseOption.Strict)
            {
                throw new OptionParserException();
            }
            var helpOption = options as ICanPrintHelpMessage;

            if (helpOption != null && helpOption.PrintHelpMessage)
            {
                return(new HelpCommand(GetHelpText()));
            }
            string root        = string.Empty;
            var    buildOption = options as BuildCommandOptions;

            if (buildOption != null)
            {
                root = Path.GetDirectoryName(buildOption.ConfigFile);
            }
            var logOption = options as ILoggable;

            if (logOption != null)
            {
                if (!string.IsNullOrWhiteSpace(logOption.LogFilePath) && Logger.FindListener(l => l is ReportLogListener) == null)
                {
                    if (string.IsNullOrWhiteSpace(logOption.RepoRoot))
                    {
                        Logger.RegisterListener(new ReportLogListener(logOption.LogFilePath, string.Empty, root));
                    }
                    else
                    {
                        Logger.RegisterListener(new ReportLogListener(logOption.LogFilePath, logOption.RepoRoot, root));
                    }
                }

                if (logOption.LogLevel.HasValue)
                {
                    Logger.LogLevelThreshold = logOption.LogLevel.Value;
                }
            }

            return(CreateCommand(options, controller));
        }
Esempio n. 6
0
        public virtual ISubCommand Create(string[] args, ISubCommandController controller, SubCommandParseOption option)
        {
            var  parser  = CommandUtility.GetParser(option);
            var  options = Activator.CreateInstance <TOptions>();
            bool parsed  = parser.ParseArguments(args, options);

            if (!parsed && option == SubCommandParseOption.Strict)
            {
                throw new OptionParserException();
            }
            var helpOption = options as ICanPrintHelpMessage;

            if (helpOption != null && helpOption.PrintHelpMessage)
            {
                return(new HelpCommand(GetHelpText()));
            }

            var    buildOption = options as BuildCommandOptions;
            string root        = Path.GetDirectoryName(buildOption?.ConfigFile ?? Directory.GetCurrentDirectory());

            var logOption = options as LogOptions;

            if (logOption != null)
            {
                if (!string.IsNullOrWhiteSpace(logOption.LogFilePath) && Logger.FindAsyncListener(l => l is ReportLogListener) == null)
                {
                    Logger.RegisterAsyncListener(new ReportLogListener(logOption.LogFilePath, logOption.RepoRoot ?? string.Empty, root));
                }

                if (logOption.LogLevel.HasValue)
                {
                    Logger.LogLevelThreshold = logOption.LogLevel.Value;
                }

                Logger.WarningsAsErrors = logOption.WarningsAsErrors;

                if (!string.IsNullOrEmpty(logOption.CorrelationId))
                {
                    if (AmbientContext.CurrentContext == null)
                    {
                        AmbientContext.InitializeAmbientContext(logOption.CorrelationId);
                    }
                }
            }

            return(CreateCommand(options, controller));
        }
Esempio n. 7
0
        public CompositeCommand(string[] args, ISubCommandController controller, CompositeOptions options)
        {
            var result = ToOrderedKeyValuePair(options.ConfigFile);

            foreach (var pair in result)
            {
                if (!controller.TryGetCommandCreator(pair.Key, out ISubCommandCreator command))
                {
                    if (!pair.Key.Equals("$schema", StringComparison.Ordinal))
                    {
                        Logger.LogWarning($"{pair.Key} is not a recognized command name, ignored.");
                    }
                }
                else
                {
                    Commands.Add(command.Create(args, controller, SubCommandParseOption.Loose));
                }
            }

            AllowReplay = Commands.Any(c => c.AllowReplay);
        }
Esempio n. 8
0
 public abstract TCommand CreateCommand(TOptions options, ISubCommandController controller);
Esempio n. 9
0
 public override InitCommand CreateCommand(InitCommandOptions options, ISubCommandController controller)
 {
     return(new InitCommand(options));
 }
Esempio n. 10
0
 public override ExportCommand CreateCommand(ExportCommandOptions options, ISubCommandController controller)
 {
     return(new ExportCommand(options));
 }
Esempio n. 11
0
 public override TemplateCommand CreateCommand(TemplateCommandOptions options, ISubCommandController controller)
 {
     return(new TemplateCommand(options));
 }
Esempio n. 12
0
 public override DownloadCommand CreateCommand(DownloadCommandOptions options, ISubCommandController controller)
 {
     return(new DownloadCommand(options));
 }
Esempio n. 13
0
 public override PdfCommand CreateCommand(PdfCommandOptions options, ISubCommandController controller)
 {
     return(new PdfCommand(options));
 }
Esempio n. 14
0
 public override MetadataCommand CreateCommand(MetadataCommandOptions options, ISubCommandController controller)
 {
     return new MetadataCommand(options);
 }
Esempio n. 15
0
 public override MergeCommand CreateCommand(MergeCommandOptions options, ISubCommandController controller)
 {
     return(new MergeCommand(options));
 }
Esempio n. 16
0
 public override BuildCommand CreateCommand(BuildCommandOptions options, ISubCommandController controller)
 {
     return(new BuildCommand(options));
 }
Esempio n. 17
0
 public override DependencyCommand CreateCommand(DependencyCommandOptions options, ISubCommandController controller)
 {
     return(new DependencyCommand(options));
 }
Esempio n. 18
0
 public override ServeCommand CreateCommand(ServeCommandOptions options, ISubCommandController controller)
 {
     return(new ServeCommand(options));
 }