protected async Task GenerateReadmeMd(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { if (generatorSettings.GenerateReadmeMd) { await Write(codeModel.GenerateReadmeMd(), "README.md").ConfigureAwait(false); } }
protected async Task GenerateConstantsTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { var ConstantsTemplate = new ConstantsTemplate { Model = codeModel }; await Write(ConstantsTemplate, GetCoreSourceCodeFilePath(generatorSettings, "constants.js")); }
protected async Task GenerateModelJs(CompositeTypeJs model, GeneratorSettingsJs generatorSettings) { var modelTemplate = new ModelTemplate { Model = model }; await Write(modelTemplate, GetModelSourceCodeFilePath(generatorSettings, model.NameAsFileName.ToCamelCase() + ".js")).ConfigureAwait(false); }
protected async Task GenerateRouteEntryTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { var RouteEntryTemplate = new RouteEntryTemplate { Model = codeModel }; await Write(RouteEntryTemplate, GetSourceCodeFilePath(generatorSettings, "route.js")).ConfigureAwait(false); }
protected async Task GenerateActionEntryTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { var ActionEntryTemplate = new ActionEntryTemplate { Model = codeModel }; await Write(ActionEntryTemplate, GetSourceCodeFilePath(generatorSettings, "action.js")).ConfigureAwait(false); }
protected async Task GenerateUtilTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { var UtilTemplate = new UtilTemplate { Model = codeModel }; await Write(UtilTemplate, GetCoreSourceCodeFilePath(generatorSettings, "util.js")); }
protected async Task GeneratePackageJson(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { if (generatorSettings.GeneratePackageJson) { var packageJson = new PackageJson { Model = codeModel }; await Write(packageJson, "package.json").ConfigureAwait(false); } }
protected async Task GeneratePostinstallScript(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { if (generatorSettings.GeneratePostinstallScript) { PostinstallScript postinstallScript = new PostinstallScript { Model = codeModel }; await Write(postinstallScript, ".scripts/postinstall.js").ConfigureAwait(false); } }
protected async Task GenerateLicenseTxt(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { if (generatorSettings.GenerateLicenseTxt) { LicenseTemplate license = new LicenseTemplate { Model = codeModel }; await Write(license, "LICENSE.txt").ConfigureAwait(false); } }
protected string GetSourceCodeFilePath(GeneratorSettingsJs generatorSettings, params string[] pathSegments) { string[] totalPathSegments = new string[pathSegments.Length + 1]; totalPathSegments[0] = generatorSettings.SourceCodeFolderPath; for (int i = 0; i < pathSegments.Length; i++) { totalPathSegments[1 + i] = pathSegments[i]; } return(Path.Combine(totalPathSegments)); }
/// <summary> /// Generate NodeJS client code /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { GeneratorSettingsJs generatorSettings = Singleton <GeneratorSettingsJs> .Instance; var codeModel = cm as CodeModelJs; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a NodeJS code model."); } generatorSettings.UpdatePackageVersion(); codeModel.PopulateFromSettings(generatorSettings); // Service client await GenerateServiceClientJs(() => new ServiceClientTemplate { Model = codeModel }, generatorSettings).ConfigureAwait(false); await GenerateServiceClientDts(() => new ServiceClientTemplateTS { Model = codeModel }, generatorSettings).ConfigureAwait(false); //Models if (codeModel.ModelTypes.Any()) { await GenerateModelIndexJs(() => new ModelIndexTemplate { Model = codeModel }, generatorSettings).ConfigureAwait(false); await GenerateModelIndexDts(codeModel, generatorSettings).ConfigureAwait(false); foreach (CompositeTypeJs modelType in codeModel.ModelTemplateModels) { await GenerateModelJs(modelType, generatorSettings).ConfigureAwait(false); } } //MethodGroups if (codeModel.MethodGroupModels.Any()) { await GenerateMethodGroupIndexTemplateJs(codeModel, generatorSettings).ConfigureAwait(false); await GenerateMethodGroupIndexTemplateDts(codeModel, generatorSettings).ConfigureAwait(false); foreach (MethodGroupJs methodGroupModel in codeModel.MethodGroupModels) { await GenerateMethodGroupJs(() => new MethodGroupTemplate { Model = methodGroupModel }, generatorSettings).ConfigureAwait(false); } } await GeneratePackageJson(codeModel, generatorSettings).ConfigureAwait(false); await GenerateReadmeMd(codeModel, generatorSettings).ConfigureAwait(false); await GenerateLicenseTxt(codeModel, generatorSettings).ConfigureAwait(false); await GeneratePostinstallScript(codeModel, generatorSettings).ConfigureAwait(false); }
public void UpdatePackageVersionWithExistingPackageNameAndPackageVersionSpecified() { GeneratorSettingsJs settings = new GeneratorSettingsJs(); settings.PackageName = "npm"; settings.PackageVersion = "1.2.3"; settings.UpdatePackageVersion(); Assert.AreEqual("npm", settings.PackageName); Assert.AreEqual("1.2.3", settings.PackageVersion); }
public void UpdatePackageVersionWithNonExistingPackageNameAndPackageVersionSpecified() { GeneratorSettingsJs settings = new GeneratorSettingsJs(); settings.PackageName = "idontexistandyoucantinstallme"; settings.PackageVersion = "2.3.4"; settings.UpdatePackageVersion(); Assert.AreEqual("idontexistandyoucantinstallme", settings.PackageName); Assert.AreEqual("2.3.4", settings.PackageVersion); }
public void UpdatePackageVersionWithNonExistingPackageName() { GeneratorSettingsJs settings = new GeneratorSettingsJs(); settings.PackageName = "idontexistandyoucantinstallme"; Assert.IsNull(settings.PackageVersion); settings.UpdatePackageVersion(); Assert.AreEqual("idontexistandyoucantinstallme", settings.PackageName); Assert.AreEqual("1.0.0", settings.PackageVersion); }
public void UpdatePackageVersionWithEmptyPackageName() { GeneratorSettingsJs settings = new GeneratorSettingsJs(); settings.PackageName = ""; Assert.IsNull(settings.PackageVersion); settings.UpdatePackageVersion(); Assert.AreEqual("", settings.PackageName); Assert.IsNull(settings.PackageVersion); }
public void UpdatePackageVersionWithNullPackageName() { GeneratorSettingsJs settings = new GeneratorSettingsJs(); Assert.IsNull(settings.PackageName); Assert.IsNull(settings.PackageVersion); settings.UpdatePackageVersion(); Assert.IsNull(settings.PackageName); Assert.IsNull(settings.PackageVersion); }
public void UpdatePackageVersionWithExistingPackageName() { GeneratorSettingsJs settings = new GeneratorSettingsJs(); settings.PackageName = "npm"; Assert.IsNull(settings.PackageVersion); settings.UpdatePackageVersion(); Assert.AreEqual("npm", settings.PackageName); AssertEx.NotNull(settings.PackageVersion); AssertEx.NotEmpty(settings.PackageVersion); }
protected async Task GenerateServiceClientJs <T>(Func <Template <T> > serviceClientTemplateCreator, GeneratorSettingsJs generatorSettings) where T : CodeModelJs { Template <T> serviceClientTemplate = serviceClientTemplateCreator(); await Write(serviceClientTemplate, "index.js"); }
/// <summary> /// Generate NodeJS client code /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { GeneratorSettingsJs generatorSettings = Singleton <GeneratorSettingsJs> .Instance; var codeModel = cm as CodeModelJs; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a NodeJS code model."); } codeModel.PopulateFromSettings(generatorSettings); // Service client // Generate Index.js entry file for the server. await GenerateServiceClientJs(() => new ServiceClientTemplate { Model = codeModel }, generatorSettings).ConfigureAwait(false); // Models // Not Change from the Node Js Client if (codeModel.ModelTypes.Any()) { await GenerateModelIndexJs(() => new ModelIndexTemplate { Model = codeModel }, generatorSettings).ConfigureAwait(false); await GenerateModelIndexDts(() => new ModelIndexTemplateTS { Model = codeModel }, generatorSettings).ConfigureAwait(false); foreach (CompositeTypeJs modelType in codeModel.ModelTemplateModels) { await GenerateModelJs(modelType, generatorSettings).ConfigureAwait(false); } } // MethodGroups // Generate Router (Name not change for convinent) if (codeModel.MethodGroupModels.Any()) { await GenerateRouteEntryTemplateJs(codeModel, generatorSettings).ConfigureAwait(false); foreach (MethodGroupJs methodGroupModel in codeModel.MethodGroupModels) { await GenerateRouteGroupJs(() => new RouteGroupTemplate { Model = methodGroupModel }, generatorSettings).ConfigureAwait(false); } } // Generate Actions if (codeModel.MethodGroupModels.Any()) { await GenerateActionEntryTemplateJs(codeModel, generatorSettings).ConfigureAwait(false); foreach (MethodGroupJs methodGroupModel in codeModel.MethodGroupModels) { foreach (MethodJs method in methodGroupModel.MethodTemplateModels) { await GenerateActionJs(() => new ActionTemplate { Model = method }, generatorSettings).ConfigureAwait(false); } } } await GenerateConstantsTemplateJs(codeModel, generatorSettings).ConfigureAwait(false); await GenerateUtilTemplateJs(codeModel, generatorSettings).ConfigureAwait(false); await GeneratePackageJson(codeModel, generatorSettings).ConfigureAwait(false); await GenerateReadmeMd(() => new ReadmeTemplate { Model = codeModel }, generatorSettings).ConfigureAwait(false); await GenerateLicenseTxt(codeModel, generatorSettings).ConfigureAwait(false); }
protected string GetActionSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string methodGroupName, string actionFileName) => GetSourceCodeFilePath(generatorSettings, "actions", methodGroupName, actionFileName);
protected string GetCoreSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string coreFileName) => GetSourceCodeFilePath(generatorSettings, "core", coreFileName);
protected string GetModelSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string modelFileName) => GetSourceCodeFilePath(generatorSettings, "models", modelFileName);
protected string GetRouteSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string routeFileName) => GetSourceCodeFilePath(generatorSettings, "routes", routeFileName);
protected async Task GenerateReadmeMd <T>(Func <Template <T> > readmeMdTemplateCreator, GeneratorSettingsJs generatorSettings) where T : CodeModelJs { if (generatorSettings.GenerateReadmeMd) { Template <T> readmeTemplate = readmeMdTemplateCreator(); await Write(readmeTemplate, "README.md").ConfigureAwait(false); } }
protected async Task GenerateMethodGroupIndexTemplateDts(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = codeModel }; await Write(methodGroupIndexTemplateTS, GetOperationSourceCodeFilePath(generatorSettings, "index.d.ts")).ConfigureAwait(false); }
protected string GetOperationSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string operationFileName) => GetSourceCodeFilePath(generatorSettings, "operations", operationFileName);
protected async Task GenerateActionJs <T>(Func <Template <T> > actionTemplateCreator, GeneratorSettingsJs generatorSettings) where T : MethodJs { Template <T> actionTemplate = actionTemplateCreator(); await Write(actionTemplate, GetActionSourceCodeFilePath(generatorSettings, actionTemplate.Model.Group.ToCamelCase(), actionTemplate.Model.SerializedName.ToPascalCase() + ".js")).ConfigureAwait(false); }
protected async Task GenerateRouteGroupJs <T>(Func <Template <T> > routeGroupTemplateCreator, GeneratorSettingsJs generatorSettings) where T : MethodGroupJs { Template <T> routeGroupTemplate = routeGroupTemplateCreator(); await Write(routeGroupTemplate, GetRouteSourceCodeFilePath(generatorSettings, routeGroupTemplate.Model.TypeName.ToCamelCase() + ".js")).ConfigureAwait(false); }
protected async Task GenerateServiceClientDts <T>(Func <Template <T> > serviceClientTemplateCreator, GeneratorSettingsJs generatorSettings) where T : CodeModelJs { Template <T> serviceClientTemplateTS = serviceClientTemplateCreator(); await Write(serviceClientTemplateTS, GetSourceCodeFilePath(generatorSettings, serviceClientTemplateTS.Model.Name.ToCamelCase() + ".d.ts")); }
protected async Task GenerateModelIndexDts <T>(Func <Template <T> > modelIndexTemplateCreator, GeneratorSettingsJs generatorSettings) where T : CodeModelJs { Template <T> modelIndexTemplateTS = modelIndexTemplateCreator(); await Write(modelIndexTemplateTS, GetModelSourceCodeFilePath(generatorSettings, "index.d.ts")).ConfigureAwait(false); }