예제 #1
0
        public void Handle(string command, Settings settings)
        {
            command = command?.ToLowerInvariant()?.Trim();
            if (settings.Verbose || command == "version")
            {
                var toolVersion = ProductVersion.FromSystemVersion(Assembly.GetCallingAssembly().GetName().Version);
                Log($"Release Tool {toolVersion}");
            }

            if (settings.Verbose)
            {
                Log(string.Empty);
                Log("Configuration:");
                Log($" ChangeLogFileName = {settings.MarkdownChangeLogFileName}");
                Log($" DoNotPrompt = {settings.DoNotPrompt}");
                Log($" FirstVersion = {settings.FirstVersion}");
                Log($" HtmlChangeLogFileName = {settings.HtmlChangeLogFileName}");
                Log($" LatestChangesFileName = {settings.LatestChangesFileName}");
                Log($" PatchAssemblyVersions = {settings.PatchAssemblyVersions}");
                Log($" ProductName = {settings.ProductName}");
                Log($" ReleaseHistoryFileName = {settings.ReleaseHistoryFileName}");
                Log($" VersionFileName = {settings.VersionFileName}");
                Log($" Verbose = {settings.Verbose}");
                Log(string.Empty);
            }

            if (string.IsNullOrWhiteSpace(command))
            {
                throw new ErrorException("No command was specified!");
            }

            switch (command)
            {
            case "version":
                break;

            case "init":
                new InitCommand(Log).Execute(settings);
                break;

            case "prepare":
                new PrepareCommand(Log).Execute(settings);
                break;

            case "thisversion":
                new ThisVersionCommand(Log).Execute(settings);
                break;

            case "nextversion":
                new NextVersionCommand(Log).Execute(settings);
                break;

            case "changelog":
                new ChangelogCommand(Log).Execute(settings);
                break;

            case "fullchangelog":
                new FullChangelogCommand(Log).Execute(settings);
                break;

            default:
                throw new ErrorException($"Unknown command '{command}'");
            }
        }