Exemple #1
0
        public void NoArgumentsShouldOutputHelp()
        {
            using (var programWriter = new StringWriter())
            {
                var originalOut = Console.Out;
                try
                {
                    Console.SetOut(programWriter);
                    Program.Main(new string[0]);

                    var modelBindingDefinition = Configuration.Configure <GitReleaseNotesArguments>();
                    var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);

                    var bufferWidth = Console.IsOutputRedirected ? 80 : Console.BufferWidth;
                    var f           = new ConsoleHelpFormatter(bufferWidth, 1, 5);

                    using (var helpWriter = new StringWriter())
                    {
                        f.WriteHelp(help, helpWriter);

                        programWriter.ToString().ShouldContain(helpWriter.ToString());
                    }
                }
                finally
                {
                    Console.SetOut(originalOut);
                }
            }
        }
Exemple #2
0
        private static void ShowHelp(IModelBindingDefinition <ConversionOrder> argsDefinition)
        {
            var help = new Args.Help.HelpProvider().GenerateModelHelp(argsDefinition);
            var f    = new ConsoleHelpFormatter(80, 1, 5);

            Console.WriteLine(f.GetHelp(help));
        }
        public static void WriteHelp()
        {
            var help = new HelpProvider().GenerateModelHelp(Configuration.Configure <Arguments>());
            var f    = new ConsoleHelpFormatter(Console.BufferWidth, 1, 5);

            Console.WriteLine(f.GetHelp(help));
        }
Exemple #4
0
        /// <summary>
        /// Writes the help.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="windowWidth">Width of the window.</param>
        public static void WriteHelp(TextWriter writer, int windowWidth)
        {
            var argumentConfiguration = Configuration.Configure <Options>();

            var help          = new HelpProvider().GenerateModelHelp(argumentConfiguration);
            var helpFormatter = new ConsoleHelpFormatter(windowWidth, 1, 5);

            helpFormatter.WriteHelp(help, writer);
        }
        public static void Main(string[] args)
        {
            AppLaunchingCommandLine commandLine;
            IModelBindingDefinition <AppLaunchingCommandLine> modelBindingDefinition = null;

            try
            {
                modelBindingDefinition = Configuration.Configure <AppLaunchingCommandLine>();
                commandLine            = modelBindingDefinition.CreateAndBind(args);

                /*
                 * if (commandLine.ProductId == Guid.Empty)
                 * {
                 *  Console.WriteLine("");
                 *  Console.WriteLine("***Warning*** - no productId supplied");
                 *  Console.WriteLine("");
                 * }
                 */
            }
            catch (Exception /*exception*/)
            {
                if (modelBindingDefinition != null)
                {
                    var help      = new HelpProvider();
                    var formatter = new ConsoleHelpFormatter();

                    var sw   = new StringWriter();
                    var text = help.GenerateModelHelp(modelBindingDefinition);
                    formatter.WriteHelp(text, sw);
                    Console.Write(sw.ToString());
                }
                else
                {
                    Console.Write("Sorry - no help available!");
                }
                return;
            }

            try
            {
                Console.WriteLine("AutomationHost starting");
                using (var program = new Program(commandLine))
                {
                    Console.WriteLine("To show help, enter 'help'");
                    program.Run();
                }
            }
            catch (QuitNowPleaseException)
            {
                Console.WriteLine("Goodbye");
            }
            catch (Exception exception)
            {
                Console.WriteLine(string.Format("Exception seen {0} {1}", exception.GetType().FullName,
                                                exception.Message));
            }
        }
Exemple #6
0
        private static void ShowHelp(IModelBindingDefinition <Options> argsConfig)
        {
            var helpProvider  = new HelpProvider();
            var help          = helpProvider.GenerateModelHelp(argsConfig);
            var helpFormatter = new ConsoleHelpFormatter();

            Console.WriteLine(helpFormatter.GetHelp(help));
            Console.ReadKey();
        }
Exemple #7
0
        public void VerifyEmptyModelTestDoesNotBreak()
        {
            var definition = Configuration.Configure <EmptyHelpModelTest>();
            var help       = new Help.HelpProvider().GenerateModelHelp(definition);

            var f = new ConsoleHelpFormatter(80, 1, 5);

            Assert.AreEqual("<command> \r\n\r\n\r\n", f.GetHelp(help));
        }
Exemple #8
0
        public void VerifyHelpOutput()
        {
            var definition = Configuration.Configure <HelpModelTest>();
            var help       = new Help.HelpProvider().GenerateModelHelp(definition);

            var f = new ConsoleHelpFormatter(80, 1, 5);

            Assert.AreEqual(HelpOutput, f.GetHelp(help));
        }
Exemple #9
0
        public void VerifyHelpOutput()
        {
            var definition = Configuration.Configure <HelpModelTest>();
            var help       = new Help.HelpProvider().GenerateModelHelp(definition);

            ConsoleHelpFormatter f = new ConsoleHelpFormatter(80, 1, 5);

            f.GetHelp(help).Should().Be.EqualTo(Properties.Resources.HelpOutput);
        }
Exemple #10
0
        static int Main(string[] args)
        {
            GitReleaseNotesEnvironment.Log = new ConsoleLog();

            var modelBindingDefinition = Configuration.Configure <GitReleaseNotesArguments>();

            if (args.Any(a => a == "/?" || a == "?" || a.Equals("/help", StringComparison.InvariantCultureIgnoreCase)))
            {
                var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);
                var f    = new ConsoleHelpFormatter();
                f.WriteHelp(help, Console.Out);

                return(0);
            }

            var exitCode = 0;

            var arguments = modelBindingDefinition.CreateAndBind(args);

            // TODO: Convert to context verification (we need the context to be valid, not the arguments)
            if (!ArgumentVerifier.VerifyArguments(arguments))
            {
                return(1);
            }

            var context = arguments.ToContext();

            try
            {
                var releaseNotesGenerator = new ReleaseNotesGenerator(context, new FileSystem.FileSystem());
                releaseNotesGenerator.GenerateReleaseNotes();

                Log.WriteLine("Done");
            }
            catch (GitReleaseNotesException ex)
            {
                exitCode = -1;
                Log.WriteLine("An expected error occurred: {0}", ex.Message);
            }
            catch (Exception ex)
            {
                exitCode = -2;
                Log.WriteLine("An unexpected error occurred: {0}", ex.Message);
            }

            if (Debugger.IsAttached)
            {
                Console.WriteLine("Press any key to continue");
                Console.ReadKey();
            }

            return(exitCode);
        }
Exemple #11
0
        private static void ShowHelp(IModelBindingDefinition <GitReleaseNotesArguments> modelBindingDefinition, string reason = null)
        {
            var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);
            var f    = new ConsoleHelpFormatter();

            f.WriteHelp(help, Console.Out);

            if (reason != null)
            {
                Console.WriteLine();
                Console.WriteLine(reason);
            }
        }
Exemple #12
0
        private static void ShowHelp(IModelBindingDefinition <GitReleaseNotesArguments> modelBindingDefinition, string reason = null)
        {
            var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);

            var bufferWidth = Console.IsOutputRedirected ? 80 : Console.BufferWidth;
            var f           = new ConsoleHelpFormatter(bufferWidth, 1, 5);

            f.WriteHelp(help, Console.Out);

            if (reason != null)
            {
                Console.WriteLine();
                Console.WriteLine(reason);
            }
        }
Exemple #13
0
        /// <summary>
        /// Parses the command line arguments into
        /// </summary>
        /// <param name="args">Array of command line arguments.</param>
        /// <returns>A set of options.</returns>
        private static Options ParseArguments(string[] args)
        {
            var optionModel = Args.Configuration.Configure <Options>();
            var options     = optionModel.CreateAndBind(args);

            if (options.Help)
            {
                var help      = new Args.Help.HelpProvider().GenerateModelHelp(optionModel);
                var formatter = new ConsoleHelpFormatter();

                Console.WriteLine(formatter.GetHelp(help));
            }

            return(options);
        }
        public void NoArgumentsShouldOutputHelp()
        {
            using (var programWriter = new StringWriter())
            {
                Console.SetOut(programWriter);
                Program.Main(new string[0]);

                var modelBindingDefinition = Configuration.Configure <GitReleaseNotesArguments>();
                var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);
                var f    = new ConsoleHelpFormatter(80, 1, 5);

                using (var helpWriter = new StringWriter())
                {
                    f.WriteHelp(help, helpWriter);

                    programWriter.ToString().ShouldContain(helpWriter.ToString());
                }
            }
        }
        public static int Main(string[] args)
        {
            var modelBindingDefinition = Args.Configuration.Configure <GitHubFlowArguments>();
            var arguments = modelBindingDefinition.CreateAndBind(args);

            if (args.Any(a => a == "/?" || a == "?" || a.Equals("/help", StringComparison.InvariantCultureIgnoreCase)))
            {
                var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);
                var f    = new ConsoleHelpFormatter();
                f.WriteHelp(help, Console.Out);

                return(0);
            }

            var context = CreateContext(arguments);

            try
            {
                Run(context);
                using (var assemblyInfoUpdate = new AssemblyInfoUpdate(new FileSystem(), context))
                {
                    var execRun    = RunExecCommandIfNeeded(context);
                    var msbuildRun = RunMsBuildIfNeeded(context);
                    if (!(execRun || msbuildRun))
                    {
                        assemblyInfoUpdate.DoNotRestoreAssemblyInfo();
                        if (!context.CurrentBuildServer.IsRunningInBuildAgent())
                        {
                            Console.WriteLine("WARNING: Not running in build server and /ProjectFile or /Exec arguments not passed");
                            Console.WriteLine();
                            Console.WriteLine("Run GitHubFlowVersion.exe /? for help");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex);
                return(1);
            }

            return(0);
        }
Exemple #16
0
        static void Main(string[] args)
        {
            var model   = Args.Configuration.Configure <ArgumentsModel>();
            var command = model.CreateAndBind(args);

            if (command.Help)
            {
                var help = new HelpProvider().GenerateModelHelp(model);
                var cfmt = new ConsoleHelpFormatter();
                Console.WriteLine(cfmt.GetHelp(help));
                return;
            }

            var context = new InformationSchemaDbContext();

            foreach (Table table in context.Set <Table>())
            {
                Console.WriteLine($"{table.Catalog}.{table.Schema}.{table.Name}");
            }
        }
Exemple #17
0
 static void Main(string[] args)
 {
     try
     {
         var definition = Args.Configuration.Configure <CommandObject>();
         var command    = definition.CreateAndBind(args);
         if (command.Help != null)
         {
             var help = new Args.Help.HelpProvider().GenerateModelHelp(definition);
             var f    = new ConsoleHelpFormatter(80, 1, 5);
             Console.WriteLine(f.GetHelp(help));
             return;
         }
         Console.WriteLine($"正在生成...");
         Console.WriteLine($"目标文件夹:{command.TargetFolder}");
         Console.WriteLine($"秘钥:{command.SecretKey}");
         Console.WriteLine($"忽略文件:{ ((command.Ignore == null || command.Ignore.Count == 0) ? "无" : string.Join(", ", command.Ignore))}");
         VersionService versionService = new VersionService(command.SecretKey);
         if (command.Ignore == null)
         {
             command.Ignore = new List <string>(2);
         }
         command.Ignore.Add(Path.GetFileNameWithoutExtension(typeof(Program).Assembly.Location));
         command.Ignore.Add(versionFileName);
         command.Ignore.Add("Zl.AutoUpgrade.Core");
         PackageVersionInfo info = versionService.ComputeVersionInfo(command.TargetFolder,
                                                                     command.Ignore.ToArray());
         XmlSerializer.SaveToFile(info, System.IO.Path.Combine(command.TargetFolder, versionFileName));
         Console.WriteLine($"生成完毕.");
     }
     catch (Exception exc)
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine(exc);
         Console.ResetColor();
     }
 }
Exemple #18
0
        public static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();
            var kernel        = CreateKernel();
            var loggerFactory = kernel.Get <ILoggerFactory>();
            var logger        = loggerFactory.GetCurrentClassLogger();

            try
            {
                var command = Args.Configuration.Configure <Command>().CreateAndBind(args);

                if (command.Action.Equals(CommandOption.None))
                {
                    var definition = Args.Configuration.Configure <Command>();
                    var help       = new Args.Help.HelpProvider().GenerateModelHelp(definition);
                    var formatter  = new ConsoleHelpFormatter(80, 1, 5);
                    Console.WriteLine(formatter.GetHelp(help));
                }
                else if (command.Action.Equals(CommandOption.Test))
                {
                    Console.WriteLine("For testing purposes!!!");
                }
                else if (command.Action.Equals(CommandOption.CheckStatus))
                {
                    if (String.IsNullOrEmpty(command.Directory))
                    {
                        Console.WriteLine("Directory does not exist!");
                        return;
                    }

                    Console.WriteLine("Searching '{0}' ...", command.Directory);
                    var subDirectoryList = Directory.GetDirectories(command.Directory)
                                           .Select(d => new DirectoryInfo(d))
                                           .Where(d => !d.Name.Equals(SystemVolumeInformationFolder))
                                           .Where(d => !d.Name.Equals(RecycleBinFolder))
                                           .OrderBy(d => d.Name)
                                           .ToList();

                    if (!subDirectoryList.Any())
                    {
                        Console.WriteLine("The directory is empty!");
                        return;
                    }

                    Console.WriteLine("Directories found: {0}", subDirectoryList.Count);
                    Console.WriteLine();
                    foreach (var subDirectory in subDirectoryList)
                    {
                        Console.WriteLine("Searching '{0}' ...", subDirectory.Name);
                        var files = Directory.GetFiles(subDirectory.FullName, FilePostfixPattern)
                                    .Select(f => new FileInfo(f))
                                    .OrderBy(f => f.LastWriteTime)
                                    .ToList();

                        if (!files.Any())
                        {
                            Console.WriteLine("To process files found: {0}.", files.Count);
                        }
                        else
                        {
                            Console.WriteLine("To process files found: {0}, between '{1}' & '{2}'.", files.Count, files.FirstOrDefault().LastWriteTime.ToString("yyyymmdd HH:MM:ss"), files.LastOrDefault().LastWriteTime.ToString("yyyymmdd HH:MM:ss"));
                        }
                    }
                }
                else if (command.Action.Equals(CommandOption.DropDatabase))
                {
                    if (String.IsNullOrEmpty(command.Server))
                    {
                        Console.WriteLine("Server does not exist!");
                        return;
                    }

                    if (String.IsNullOrEmpty(command.Database))
                    {
                        Console.WriteLine("Database does not exist!");
                        return;
                    }

                    var databaseManager = new DatabaseManager(command.Server);
                    databaseManager.DropDatabase(command.Database);
                }
                else if (command.Action.Equals(CommandOption.RestoreDatabase))
                {
                    if (String.IsNullOrEmpty(command.Server))
                    {
                        Console.WriteLine("Server does not exist!");
                        return;
                    }

                    if (String.IsNullOrEmpty(command.Database))
                    {
                        Console.WriteLine("Database does not exist!");
                        return;
                    }

                    if (String.IsNullOrEmpty(command.DatabaseBackupFile))
                    {
                        Console.WriteLine("Database backup file does not exist!");
                        return;
                    }

                    var databaseRestoreSettings = new DatabaseRestoreSettings
                    {
                        DatabaseName   = command.Database,
                        BackupFilePath = command.DatabaseBackupFile,
                    };
                    var databaseManager = new DatabaseManager(command.Server);
                    databaseManager.RestoreDatabase(databaseRestoreSettings);
                }
                else
                {
                    Console.WriteLine("Command cannot be found!");
                    Console.WriteLine();
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                Console.WriteLine("----> EXCEPTION: {0} <----", ex.Message);
                throw;
            }
        }
Exemple #19
0
        private static int GenerateReleaseNotes(string[] args)
        {
            var modelBindingDefinition = Args.Configuration.Configure <GitReleaseNotesArguments>();

            if (args.Any(a => a == "/?" || a == "?" || a.Equals("/help", StringComparison.InvariantCultureIgnoreCase)))
            {
                var help = new HelpProvider().GenerateModelHelp(modelBindingDefinition);
                var f    = new ConsoleHelpFormatter();
                f.WriteHelp(help, Console.Out);

                return(0);
            }

            var arguments = modelBindingDefinition.CreateAndBind(args);

            if (!ArgumentVerifier.VerifyArguments(arguments))
            {
                return(1);
            }

            var workingDirectory = arguments.WorkingDirectory ?? Directory.GetCurrentDirectory();

            var gitDirectory = GitDirFinder.TreeWalkForGitDir(workingDirectory);

            if (string.IsNullOrEmpty(gitDirectory))
            {
                throw new Exception("Failed to find .git directory.");
            }

            Console.WriteLine("Git directory found at {0}", gitDirectory);

            var repositoryRoot = Directory.GetParent(gitDirectory).FullName;

            var gitRepo = new Repository(gitDirectory);

            CreateIssueTrackers(gitRepo, arguments);

            IIssueTracker issueTracker = null;

            if (arguments.IssueTracker == null)
            {
                var firstOrDefault = _issueTrackers.FirstOrDefault(i => i.Value.RemotePresentWhichMatches);
                if (firstOrDefault.Value != null)
                {
                    issueTracker = firstOrDefault.Value;
                }
            }
            if (issueTracker == null)
            {
                if (!_issueTrackers.ContainsKey(arguments.IssueTracker.Value))
                {
                    throw new Exception(string.Format("{0} is not a known issue tracker", arguments.IssueTracker.Value));
                }

                issueTracker = _issueTrackers[arguments.IssueTracker.Value];
            }
            if (!issueTracker.VerifyArgumentsAndWriteErrorsToConsole())
            {
                return(1);
            }

            var    fileSystem           = new FileSystem.FileSystem();
            var    releaseFileWriter    = new ReleaseFileWriter(fileSystem);
            string outputFile           = null;
            var    previousReleaseNotes = new SemanticReleaseNotes();

            if (!string.IsNullOrEmpty(arguments.OutputFile))
            {
                outputFile = Path.IsPathRooted(arguments.OutputFile)
                    ? arguments.OutputFile
                    : Path.Combine(repositoryRoot, arguments.OutputFile);
                previousReleaseNotes = new ReleaseNotesFileReader(fileSystem, repositoryRoot).ReadPreviousReleaseNotes(outputFile);
            }

            var          categories     = arguments.Categories == null ? Categories : Categories.Concat(arguments.Categories.Split(',')).ToArray();
            TaggedCommit tagToStartFrom = arguments.AllTags
                ? GitRepositoryInfoFinder.GetFirstCommit(gitRepo)
                : GitRepositoryInfoFinder.GetLastTaggedCommit(gitRepo) ?? GitRepositoryInfoFinder.GetFirstCommit(gitRepo);
            var currentReleaseInfo = GitRepositoryInfoFinder.GetCurrentReleaseInfo(gitRepo);

            if (!string.IsNullOrEmpty(arguments.Version))
            {
                currentReleaseInfo.Name = arguments.Version;
                currentReleaseInfo.When = DateTimeOffset.Now;
            }
            var releaseNotes = ReleaseNotesGenerator.GenerateReleaseNotes(
                gitRepo, issueTracker,
                previousReleaseNotes, categories,
                tagToStartFrom, currentReleaseInfo,
                issueTracker.DiffUrlFormat);

            var releaseNotesOutput = releaseNotes.ToString();

            releaseFileWriter.OutputReleaseNotesFile(releaseNotesOutput, outputFile);

            return(0);
        }