namespace Framework.Cli.Command { using Microsoft.Extensions.CommandLineUtils; using System; /// /// Cli ExternalGit command. /// internal class CommandExternalGit : CommandBase { public CommandExternalGit(AppCli appCli) : base(appCli, "externalGit", "Copy ExternalGit folders.") { } private CommandOption optionDelete; private CommandOption optionDeleteAll; protected internal override void Register(CommandLineApplication configuration) { optionDelete = configuration.Option("--delete", "Delete ExternalGit dest folders.", CommandOptionType.NoValue); optionDeleteAll = configuration.Option("--deleteAll", "Delete all ExternalGit dest folders.", CommandOptionType.NoValue); } /// /// Delete folder ExternalGit/ExternalProjectName/ /// /// If true, delete folder ExternalGit/ private void ExecuteDelete(bool isDeleteAll = false) { var args = UtilExternalGit.ExternalArgs(!isDeleteAll); // Delete folder App/ Console.WriteLine("Delete dest folder App/"); UtilCliInternal.FolderDelete(args.AppDestFolderName); // Copy folder Database/ Console.WriteLine("Delete dest folder App/"); UtilCliInternal.FolderDelete(args.DatabaseDestFolderName); // Copy folder CliApp/ Console.WriteLine("Delete dest folder CliApp/"); UtilCliInternal.FolderDelete(args.CliAppDestFolderName); // Copy folder CliDatabase/ Console.WriteLine("Delete dest folder CliDatabase/"); UtilCliInternal.FolderDelete(args.CliDatabaseDestFolderName); // Copy folder CliDeployDb/ Console.WriteLine("Delete dest folder CliDeployDb/"); UtilCliInternal.FolderDelete(args.CliDeployDbDestFolderName); } private void ExecuteCopy() { var args = UtilExternalGit.ExternalArgs(); // Copy folder App/ Console.WriteLine("Copy folder App/"); args.FolderCopy(args.AppSourceFolderName, args.AppDestFolderName); // Copy folder Database/ Console.WriteLine("Copy folder Database/"); args.FolderCopy(args.DatabaseSourceFolderName, args.DatabaseDestFolderName); // Copy folder CliApp/ Console.WriteLine("Copy folder CliApp/"); args.FolderCopy(args.CliAppSourceFolderName, args.CliAppDestFolderName); // Copy folder CliDatabase/ Console.WriteLine("Copy folder CliDatabase/"); args.FolderCopy(args.CliDatabaseSourceFolderName, args.CliDatabaseDestFolderName); Console.WriteLine("Update file DatabaseIntegrate.cs"); args.FileReplaceLine( args.CliDatabaseDestFolderName + "DatabaseIntegrate.cs", " public static class FrameworkConfigGridIntegrateAppCli", " public static class FrameworkConfigGridIntegrateAppCli" + "ExternalGit" + args.ExternalProjectName); args.FileReplaceLine( args.CliDatabaseDestFolderName + "DatabaseIntegrate.cs", " public static class FrameworkConfigFieldIntegrateAppCli", " public static class FrameworkConfigFieldIntegrateAppCli" + "ExternalGit" + args.ExternalProjectName); // Copy folder CliDeployDb/ Console.WriteLine("Copy folder CliDeployDb/"); args.FolderCopy(args.CliDeployDbSourceFolderName, args.CliDeployDbDestFolderName); AppCli.CommandExternalGit(args); } protected internal override void Execute() { if (optionDelete.OptionGet()) { // Delete folder ExternalGit/ExternalProjectName/ ExecuteDelete(); } else { if (optionDeleteAll.OptionGet()) { // Delete folder ExternalGit/ ExecuteDelete(true); } else { // Copy folder ExternalGit/ExternalProjectName/ ExecuteCopy(); } } } } }