Esempio n. 1
0
        public StreamWriter GetInstance()
        {
            try
            {
                this._attemps++;
                return(new StreamWriter(this._path, false, Encoding.UTF8));
            }
            catch (Exception ex)
            {
                this._attemps++;
                if (this._attemps <= 99)
                {
                    PrinstScn.WriteWarningLine(string.Format(">>>>> Retry {0} GetInstance {1} Erro: [{2}]", this._path, _attemps, ex.Message));
                    Thread.Sleep(2000 * _attemps);

                    return(GetInstance());
                }
                throw ex;
            }
        }
        public static void Flow(string[] args, Func <IEnumerable <ExternalResource> > GetConfigExternarReources, HelperSysObjectsBase sysObject)
        {
            if (sysObject.DisableCompleteFlow)
            {
                PrinstScn.WriteWarningLine("Fluxo completo foi desabilitado para essa aplicação");
                Flow(args, sysObject);
            }
            else
            {
                var executeFlow = FlowOptions(args, GetConfigExternarReources, sysObject);
                if (args.FirstOrDefault() != "?")
                {
                    if (!executeFlow)
                    {
                        PrinstScn.WriteLine("Fluxo Não implementado #");
                    }

                    Flow(new string[] { "?" }, GetConfigExternarReources, sysObject);
                }
            }
        }
        private static bool FlowOptions(string[] args, Func <IEnumerable <ExternalResource> > GetConfigExternarReources, HelperSysObjectsBase sysObject)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;

            var flow = string.Empty;

            if (args.Length == 0)
            {
                Options();
                flow = Console.ReadLine();
            }
            else if (args.FirstOrDefault() == "?")
            {
                Options();
            }
            else
            {
                flow = args.FirstOrDefault();
            }


            var result = FlowOptionsClassic(args, sysObject, flow);

            if (flow == ((int)Eflows.AtualizarAplicacao).ToString())
            {
                PrinstScn.WriteLine("Clonar e Copiar para aplicação");
                HelperExternalResources.CloneAndCopy(GetConfigExternarReources());
                result = true;
            }

            if (flow == ((int)Eflows.ReduzirArquivosParaCrudBasic).ToString())
            {
                PrinstScn.WriteLine("Essa opção deleta diversos arquivos do Front SPA, tem certeza que deseja fazer isso? [S=Sim, N=Não]");
                var confirmDelete = Console.ReadLine();
                if (confirmDelete.ToLower() == "s")
                {
                    HelperCrudBasicDelete.Fix(sysObject);

                    var usePathProjects = confirmDelete;
                    MainWithOutConfirmation(args, usePathProjects.ToLower() == "s", sysObject);
                }
                result = true;
            }

            if (flow == ((int)Eflows.AtualizarAplicaoParcialmente).ToString())
            {
                Console.WriteLine("Qual dos seguintes Projetos você deseja Atualizar:");

                Console.WriteLine("[1 = >> template-gerador-back-core2.0-DDD]");
                Console.WriteLine("[2 = >> framework-core2.0-common]");
                Console.WriteLine("[3 = >> template-gerador-front-coreui-angular6.0]");
                Console.WriteLine("[4 = >> framework-angular6.0-CRUD]");
                Console.WriteLine("[5 = >> Seed-layout-front-coreui-angular6.0]");
                Console.WriteLine("[6 = >> Gerador]");

                var resouceRepositoryNumberRead = Console.ReadLine();
                HelperExternalResources.CloneAndCopy(FilterRepository(GetConfigExternarReources, resouceRepositoryNumberRead));
                result = true;
            }

            if (flow == ((int)Eflows.GerarEstruturaParaNovoContexto).ToString())
            {
                PrinstScn.WriteWarningLine("ATENÇÃO ESSE PROCEDIMENTO VAI BAIXAR DO GIT PROJETOS INICIAIS NAS PASTAS DE OUTPUT DO SEU PROJETO ATUAL. CASO SEU PROJETO AINDA ESTEJA COM O NOME DEFAULT SEED, ELE SERA SOBRESCRITO. AS CONFIGURAÇÕES DE OUTPUT ESTÃO NO APP.CONFIG DO GERADOR. TEM CERTEZA QUE DESEJA FAZER ISSO? (S=SIM/N=NÃO)");
                var continueClony = Console.ReadLine();
                if (continueClony.ToLower() == "s")
                {
                    var projectFiles = HelperExternalResources.CloneAndCopyStructureForNewContext(GetConfigExternarReources());

                    Console.WriteLine("Digite o nome do novo Contexto");
                    var contextName = Console.ReadLine();
                    FixRenameSeed.Fix(sysObject.GetOutputClassRoot(), contextName, false);

                    var seedFile = HelperExternalResources.CopySolutionFile(GetConfigExternarReources(), contextName);

                    var projectFilesFix = FixRenameSeed.FixCollectionFile(projectFiles, contextName);

                    var filesFixContent = new List <string>();
                    filesFixContent.AddRange(projectFilesFix);
                    filesFixContent.Add(seedFile);

                    foreach (var file in filesFixContent)
                    {
                        FixRenameSeed.FixContentFile(contextName, file);
                    }
                }

                result = true;
            }

            if (flow == ((int)Eflows.AtualizarAplicacaoSemcopiar).ToString())
            {
                PrinstScn.WriteLine("Clonar apenas");
                HelperExternalResources.CloneOnly(GetConfigExternarReources());
                result = true;
            }


            if (flow == ((int)Eflows.AtualizarRepository).ToString())
            {
                PrinstScn.WriteLine("Atualizar repositorio local com arquivos da aplicação");
                HelperExternalResources.UpdateLocalRepository(GetConfigExternarReources());
                result = true;
            }


            if (flow == ((int)Eflows.FixFileNameToExtInApp).ToString())
            {
                PrinstScn.WriteLine("Atualizar nomes dos Arquivos da aplicação para .Ext");
                FixRenameExt.Fix(sysObject);
                result = true;
            }

            if (flow == ((int)Eflows.RenomearProjeto).ToString())
            {
                Console.WriteLine("[1 = >> Apenas Sistema de Arquivos]");
                Console.WriteLine("[2 = >> Sistema de Arquivos e Conteúdo]");

                var Renameprocess = Console.ReadLine();
                if (Renameprocess != "1" && Renameprocess != "2")
                {
                    Console.WriteLine("fluxo Não disponível");
                    return(true);
                }
                var replaceinContentFile = Renameprocess == "1" ? false : true;


                PrinstScn.WriteLine("Definir nome do Projeto");
                var projectName = Console.ReadLine();

                FixRenameSeed.Fix(sysObject.GetOutputClassRoot(), projectName, replaceinContentFile);
                result = true;
            }

            if (flow == ((int)Eflows.RenomearUmaEntidadeDoSistema).ToString())
            {
                Console.WriteLine("[1 = >> Apenas Sistema de Arquivos (Ignorar Case)]");
                Console.WriteLine("[2 = >> Sistema de Arquivos e Conteúdo (Considerar Case)]");

                var Renameprocess = Console.ReadLine();
                if (Renameprocess != "1" && Renameprocess != "2")
                {
                    Console.WriteLine("fluxo Não disponível");
                    return(true);
                }
                var replaceinContentFile = Renameprocess == "1" ? false : true;

                Console.WriteLine("Digite o nome da Entidade que Dejeja Renomear");
                var termOrigin = Console.ReadLine();

                Console.WriteLine("Digite o novo Nome");
                var termDestination = Console.ReadLine();

                var _fromTo = new Dictionary <string, string> {
                    { termOrigin, termDestination }
                };

                FixRenameFiles.Fix(sysObject.GetOutputClassRoot(), _fromTo, replaceinContentFile);
                result = true;
            }

            if (flow == ((int)Eflows.RenomearEntidadesDoSistema).ToString())
            {
                Console.WriteLine("[1 = >> Apenas Sistema de Arquivos]");
                Console.WriteLine("[2 = >> Sistema de Arquivos e Conteúdo]");

                Console.WriteLine("<<<< Atenção esse processo é Case Sensitive >>>>>");

                var Renameprocess = Console.ReadLine();
                if (Renameprocess != "1" && Renameprocess != "2")
                {
                    Console.WriteLine("fluxo Não disponível");
                    return(true);
                }
                var replaceinContentFile = Renameprocess == "1" ? false : true;

                Console.WriteLine("Digite o Caminho do Arquivo , com a relação de Para separado por ;");
                var filePath = Console.ReadLine();
                var content  = File.ReadAllLines(filePath);

                var _fromTo = new Dictionary <string, string>();
                foreach (var item in content)
                {
                    _fromTo.Add(item.Split(';').FirstOrDefault(), item.Split(';').LastOrDefault());
                }

                var fronToFixed = PrepareFromTo(_fromTo);

                Console.ForegroundColor = ConsoleColor.Green;
                foreach (var item in fronToFixed)
                {
                    Console.WriteLine($"{item.Key} >> {item.Value}");
                }

                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("Confira as trocas e a ordenação e escolha sim ou não (s=Sim/n=Não)");
                var done = Console.ReadLine();

                if (done == "s")
                {
                    FixRenameFiles.Fix(sysObject.GetOutputClassRoot(), fronToFixed, replaceinContentFile);
                }

                result = true;
            }

            if (flow == ((int)Eflows.ImportarArquivosDeOutroProjeto).ToString())
            {
                Console.WriteLine("Digite a Namespace do projeto de Origem");
                var originNamespace = Console.ReadLine();

                Console.WriteLine("Digite o Caminho do projeto de Origem");
                var originPathRoot = Console.ReadLine();

                HelperMigationToAnotherProject.DoMigation(sysObject, originPathRoot, originNamespace);
                result = true;
            }

            if (flow == ((int)Eflows.LimparDadosSeed).ToString())
            {
                PrinstScn.WriteLine("Limpar Diretorios do Seed");
                FixRenameSeed.ClearEnd(sysObject.GetOutputClassRoot());
                result = true;
            }
            Console.ForegroundColor = ConsoleColor.White;
            return(result);
        }