Exemplo n.º 1
0
 protected async Task GenerateReadmeMd(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
 {
     if (generatorSettings.GenerateReadmeMd)
     {
         await Write(codeModel.GenerateReadmeMd(), "README.md").ConfigureAwait(false);
     }
 }
Exemplo n.º 2
0
        protected async Task GenerateConstantsTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
        {
            var ConstantsTemplate = new ConstantsTemplate {
                Model = codeModel
            };

            await Write(ConstantsTemplate, GetCoreSourceCodeFilePath(generatorSettings, "constants.js"));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        protected async Task GenerateRouteEntryTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
        {
            var RouteEntryTemplate = new RouteEntryTemplate {
                Model = codeModel
            };

            await Write(RouteEntryTemplate, GetSourceCodeFilePath(generatorSettings, "route.js")).ConfigureAwait(false);
        }
Exemplo n.º 5
0
        protected async Task GenerateActionEntryTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
        {
            var ActionEntryTemplate = new ActionEntryTemplate {
                Model = codeModel
            };

            await Write(ActionEntryTemplate, GetSourceCodeFilePath(generatorSettings, "action.js")).ConfigureAwait(false);
        }
Exemplo n.º 6
0
        protected async Task GenerateUtilTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
        {
            var UtilTemplate = new UtilTemplate {
                Model = codeModel
            };

            await Write(UtilTemplate, GetCoreSourceCodeFilePath(generatorSettings, "util.js"));
        }
Exemplo n.º 7
0
 protected async Task GeneratePackageJson(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
 {
     if (generatorSettings.GeneratePackageJson)
     {
         var packageJson = new PackageJson {
             Model = codeModel
         };
         await Write(packageJson, "package.json").ConfigureAwait(false);
     }
 }
Exemplo n.º 8
0
 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);
     }
 }
Exemplo n.º 9
0
 protected async Task GenerateLicenseTxt(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
 {
     if (generatorSettings.GenerateLicenseTxt)
     {
         LicenseTemplate license = new LicenseTemplate {
             Model = codeModel
         };
         await Write(license, "LICENSE.txt").ConfigureAwait(false);
     }
 }
Exemplo n.º 10
0
 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));
 }
Exemplo n.º 11
0
        /// <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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        public void UpdatePackageVersionWithEmptyPackageName()
        {
            GeneratorSettingsJs settings = new GeneratorSettingsJs();

            settings.PackageName = "";
            Assert.IsNull(settings.PackageVersion);

            settings.UpdatePackageVersion();

            Assert.AreEqual("", settings.PackageName);
            Assert.IsNull(settings.PackageVersion);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        protected async Task GenerateServiceClientJs <T>(Func <Template <T> > serviceClientTemplateCreator, GeneratorSettingsJs generatorSettings) where T : CodeModelJs
        {
            Template <T> serviceClientTemplate = serviceClientTemplateCreator();

            await Write(serviceClientTemplate, "index.js");
        }
Exemplo n.º 19
0
        /// <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);
        }
Exemplo n.º 20
0
 protected string GetActionSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string methodGroupName, string actionFileName)
 => GetSourceCodeFilePath(generatorSettings, "actions", methodGroupName, actionFileName);
Exemplo n.º 21
0
 protected string GetCoreSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string coreFileName)
 => GetSourceCodeFilePath(generatorSettings, "core", coreFileName);
Exemplo n.º 22
0
 protected string GetModelSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string modelFileName)
 => GetSourceCodeFilePath(generatorSettings, "models", modelFileName);
Exemplo n.º 23
0
 protected string GetRouteSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string routeFileName)
 => GetSourceCodeFilePath(generatorSettings, "routes", routeFileName);
Exemplo n.º 24
0
 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);
     }
 }
Exemplo n.º 25
0
        protected async Task GenerateMethodGroupIndexTemplateDts(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings)
        {
            var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS {
                Model = codeModel
            };

            await Write(methodGroupIndexTemplateTS, GetOperationSourceCodeFilePath(generatorSettings, "index.d.ts")).ConfigureAwait(false);
        }
Exemplo n.º 26
0
 protected string GetOperationSourceCodeFilePath(GeneratorSettingsJs generatorSettings, string operationFileName)
 => GetSourceCodeFilePath(generatorSettings, "operations", operationFileName);
Exemplo n.º 27
0
        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);
        }
Exemplo n.º 28
0
        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);
        }
Exemplo n.º 29
0
        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"));
        }
Exemplo n.º 30
0
        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);
        }