Ejemplo n.º 1
0
        private async Task Run(CommandOption option)
        {
            string directory = GetBaseDirectory(option.Directory);

            await RunWorkflow(builder => builder
                              .StartWith <SetVariable>(
                                  step =>
            {
                step.VariableName = "BaseDirectory";
                step.ValueExpression = new LiteralExpression(directory);
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Option";
                step.ValueExpression = new JavaScriptExpression <CommandOption>($"({option.ToJson()})");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "TemplateDirectory";
                step.ValueExpression = new LiteralExpression <string>("Templates/Localization");
            })
                              .Then <ProjectInfoProviderStep>()
                              .Then <SetModelVariableStep>()
                              /* Add localization */
                              .Then <TextGenerationStep>(
                                  step => { step.TemplateName = "Localization"; }
                                  )
                              .Then <MultiFileFinderStep>(
                                  step =>
            {
                step.SearchFileName = new LiteralExpression("*.json");
                step.BaseDirectory = new JavaScriptExpression <string>(@"`${AspNetCoreDir}/src/${ProjectInfo.FullName}.Domain.Shared/Localization`");
            }
                                  )
                              .Then <ForEach>(
                                  x => { x.CollectionExpression = new JavaScriptExpression <IList <object> >(MultiFileFinderStep.DefaultFileParameterName); },
                                  branch =>
                                  branch.When(OutcomeNames.Iterate)
                                  .Then <LocalizationJsonModificationCreatorStep>(
                                      step =>
            {
                step.TargetFile = new JavaScriptExpression <string>("CurrentValue");
                step.LocalizationJson = new JavaScriptExpression <string>(TextGenerationStep.DefaultGeneratedTextParameterName);
            }
                                      )
                                  .Then(branch)
                                  )
                              .Build()
                              );
        }
Ejemplo n.º 2
0
        private async Task Run(CommandOption option)
        {
            string directory = GetBaseDirectory(option.Directory);

            option.Folder = option.Folder.Replace('\\', '/');
            await RunWorkflow(builder => builder
                              .StartWith <SetVariable>(
                                  step =>
            {
                step.VariableName = "BaseDirectory";
                step.ValueExpression = new LiteralExpression(directory);
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Option";
                step.ValueExpression = new JavaScriptExpression <CommandOption>($"({option.ToJson()})");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Overwrite";
                step.ValueExpression = new JavaScriptExpression <bool>("!Option.NoOverwrite");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "TemplateDirectory";
                step.ValueExpression = new LiteralExpression <string>("Templates/Service");
            })
                              .Then <ProjectInfoProviderStep>()
                              .Then <SetModelVariableStep>()
                              .Then <GroupGenerationStep>(
                                  step =>
            {
                step.GroupName = "Service";
                step.TargetDirectory = new JavaScriptExpression <string>("AspNetCoreDir");
            })
                              .Build()
                              );
        }
Ejemplo n.º 3
0
        private async Task Run(CommandOption option)
        {
            string directory      = GetBaseDirectory(option.Directory);
            var    entityFileName = option.Entity + ".cs";

            await RunWorkflow(builder => builder
                              .StartWith <SetVariable>(
                                  step =>
            {
                step.VariableName = "BaseDirectory";
                step.ValueExpression = new LiteralExpression(directory);
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Option";
                step.ValueExpression = new JavaScriptExpression <CommandOption>($"({option.ToJson()})");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Overwrite";
                step.ValueExpression = new JavaScriptExpression <bool>("!Option.NoOverwrite");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "TemplateDirectory";
                step.ValueExpression = new LiteralExpression <string>("Templates/Crud");
            })
                              .Then <ProjectInfoProviderStep>()
                              .Then <FileFinderStep>(
                                  step => { step.SearchFileName = new LiteralExpression(entityFileName); })
                              .Then <EntityParserStep>()
                              .Then <SetModelVariableStep>()
                              .Then <IfElse>(
                                  step => step.ConditionExpression = new JavaScriptExpression <bool>("Option.SkipEntityConstructors"),
                                  ifElse =>
            {
                ifElse.When(OutcomeNames.False)
                .AddEntityConstructorsGenerationWorkflow()
                .Then("EntityUsing")
                ;
                ifElse.When(OutcomeNames.True)
                .Then("EntityUsing")
                ;
            })
                              .AddEntityUsingGenerationWorkflow("EntityUsing")
                              .AddEfCoreConfigurationWorkflow()
                              .Then <IfElse>(
                                  step => step.ConditionExpression = new JavaScriptExpression <bool>("Option.CustomRepository"),
                                  ifElse =>
            {
                ifElse
                .When(OutcomeNames.True)
                .AddCustomRepositoryGeneration()
                .Then("ServiceGeneration")
                ;
                ifElse
                .When(OutcomeNames.False)
                .Then("ServiceGeneration")
                ;
            }
                                  )
                              .AddServiceGenerationWorkflow("ServiceGeneration")
                              .Then <IfElse>(
                                  step => step.ConditionExpression = new JavaScriptExpression <bool>("Option.SkipLocalization"),
                                  ifElse =>
            {
                ifElse.When(OutcomeNames.False)
                .AddLocalizationGenerationWorkflow("LocalizationGeneration")
                .Then("Ui")
                ;
                ifElse.When(OutcomeNames.True)
                .Then("Ui")
                ;
            })
                              .Then <IfElse>(
                                  step => step.ConditionExpression = new JavaScriptExpression <bool>("Option.SkipUi"),
                                  ifElse =>
            {
                ifElse
                .When(OutcomeNames.False)
                .Then <Switch>(
                    @switch =>
                {
                    @switch.Expression = new JavaScriptExpression <string>("(ProjectInfo.UiFramework)");
                    @switch.Cases = Enum.GetValues(typeof(UiFramework)).Cast <int>().Select(u => u.ToString()).ToArray();
                },
                    @switch =>
                {
                    @switch.When(UiFramework.None.ToString("D"))
                    .Then("TestGeneration");

                    @switch.When(UiFramework.RazorPages.ToString("D"))
                    .AddUiRazorPagesGenerationWorkflow()
                    .Then("TestGeneration");

                    @switch.When(UiFramework.Angular.ToString("D"))
                    // TODO
                    //.AddUiAngularGenerationWorkflow()
                    .Then("TestGeneration");
                }
                    )
                ;
                ifElse
                .When(OutcomeNames.True)
                .Then("TestGeneration")
                ;
            }
                                  ).WithName("Ui")
                              .Then <IfElse>(
                                  step => step.ConditionExpression = new JavaScriptExpression <bool>("Option.SkipTest"),
                                  ifElse =>
            {
                ifElse
                .When(OutcomeNames.False)
                .AddTestGenerationWorkflow()
                .Then("DbMigrations")
                ;
                ifElse
                .When(OutcomeNames.True)
                .Then("DbMigrations")
                ;
            }
                                  ).WithName("TestGeneration")
                              .Then <IfElse>(
                                  step => step.ConditionExpression = new JavaScriptExpression <bool>("Option.SkipDbMigrations"),
                                  ifElse =>
            {
                ifElse
                .When(OutcomeNames.False)
                .AddMigrationAndUpdateDatabaseWorkflow()
                ;
            }
                                  ).WithName("DbMigrations")
                              .Build()
                              );
        }
Ejemplo n.º 4
0
        private async Task Run(CommandOption option)
        {
            string directory = GetBaseDirectory(option.Directory);

            for (int i = 0; i < option.MethodNames.Length; i++)
            {
                // Convert method name to pascal case
                option.MethodNames[i] = option.MethodNames[i].ToPascalCase();
            }

            await RunWorkflow(builder => builder
                              .StartWith <SetVariable>(
                                  step =>
            {
                step.VariableName = "BaseDirectory";
                step.ValueExpression = new LiteralExpression(directory);
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Option";
                step.ValueExpression = new JavaScriptExpression <CommandOption>($"({option.ToJson()})");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "Overwrite";
                step.ValueExpression = new JavaScriptExpression <bool>("!Option.NoOverwrite");
            })
                              .Then <SetVariable>(
                                  step =>
            {
                step.VariableName = "TemplateDirectory";
                step.ValueExpression = new LiteralExpression <string>("Templates/Methods");
            })
                              .Then <ProjectInfoProviderStep>()
                              .Then <FileFinderStep>(
                                  step => { step.SearchFileName = new JavaScriptExpression <string>("`I${Option.ServiceName}AppService.cs`"); })
                              .Then <ServiceInterfaceParserStep>()
                              .Then <SetModelVariableStep>()
                              .Then <AppServiceInterfaceStep>()
                              .Then <FileModifierStep>()
                              .Then <ForEach>(
                                  x => { x.CollectionExpression = new JavaScriptExpression <IList <object> >("Option.MethodNames"); },
                                  branch =>
                                  branch.When(OutcomeNames.Iterate)
                                  .Then <SetVariable>(
                                      step =>
            {
                step.VariableName = "Bag.Name";
                step.ValueExpression = new JavaScriptExpression <string>("CurrentValue");
            }
                                      )
                                  .Then <SetModelVariableStep>()
                                  .Then <GroupGenerationStep>(
                                      step =>
            {
                step.GroupName = "Service";
                step.TargetDirectory = new JavaScriptExpression <string>("AspNetCoreDir");
            }
                                      )
                                  .Then(branch)
                                  )
                              .Then <FileFinderStep>(
                                  step => { step.SearchFileName = new JavaScriptExpression <string>("`${Option.ServiceName}AppService.cs`"); })
                              .Then <AppServiceClassStep>()
                              .Then <FileModifierStep>()
                              .Build()
                              );
        }