/// <summary> /// Generate Azure NodeJS client code for given ServiceClient. /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(ServiceClient serviceClient) { var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient); // Service client var serviceClientTemplate = new Microsoft.Rest.Generator.Azure.NodeJS.Templates.AzureServiceClientTemplate { Model = serviceClientTemplateModel }; await Write(serviceClientTemplate, serviceClient.Name.ToCamelCase() + ".js"); if (!DisableTypeScriptGeneration) { var serviceClientTemplateTS = new AzureServiceClientTemplateTS { Model = serviceClientTemplateModel, }; await Write(serviceClientTemplateTS, serviceClient.Name.ToCamelCase() + ".d.ts"); } //Models if (serviceClient.ModelTypes.Any()) { // Paged Models foreach (var pageModel in pageModels) { //Add the PageTemplateModel to AzureServiceClientTemplateModel if (!serviceClientTemplateModel.PageTemplateModels.Contains(pageModel)) { serviceClientTemplateModel.PageTemplateModels.Add(pageModel); } var pageTemplate = new PageModelTemplate { Model = pageModel }; await Write(pageTemplate, Path.Combine("models", pageModel.Name.ToCamelCase() + ".js")); } var modelIndexTemplate = new AzureModelIndexTemplate { Model = serviceClientTemplateModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!DisableTypeScriptGeneration) { var modelIndexTemplateTS = new AzureModelIndexTemplateTS { Model = serviceClientTemplateModel }; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.Name.ToCamelCase() + ".js")); } } //MethodGroups if (serviceClientTemplateModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!DisableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel as AzureMethodGroupTemplateModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.MethodGroupType.ToCamelCase() + ".js")); } } }
/// <summary> /// Generate Azure NodeJS client code /// </summary> /// <param name="cm"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { var disableTypeScriptGeneration = Singleton <GeneratorSettingsJs> .Instance.DisableTypeScriptGeneration; var codeModel = cm as CodeModelJsa; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a Azure NodeJS code model."); } // Service client var serviceClientTemplate = new AzureServiceClientTemplate { Model = codeModel }; await Write(serviceClientTemplate, codeModel.Name.ToCamelCase() + ".js"); if (!disableTypeScriptGeneration) { var serviceClientTemplateTS = new AzureServiceClientTemplateTS { Model = codeModel, }; await Write(serviceClientTemplateTS, codeModel.Name.ToCamelCase() + ".d.ts"); } var modelIndexTemplate = new AzureModelIndexTemplate { Model = codeModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!disableTypeScriptGeneration) { var modelIndexTemplateTS = new AzureModelIndexTemplateTS { Model = codeModel }; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } //Models if (codeModel.ModelTemplateModels.Any()) { // Paged Models foreach (var pageModel in codeModel.PageTemplateModels) { var pageTemplate = new PageModelTemplate { Model = pageModel }; await Write(pageTemplate, Path.Combine("models", pageModel.Name.ToCamelCase() + ".js")); } foreach (var modelType in codeModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.NameAsFileName.ToCamelCase() + ".js")); } } //MethodGroups if (codeModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = codeModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!disableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = codeModel }; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in codeModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.TypeName.ToCamelCase() + ".js")); } } }
/// <summary> /// Generate Azure NodeJS client code /// </summary> /// <param name="cm"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { var disableTypeScriptGeneration = Singleton<GeneratorSettingsJs>.Instance.DisableTypeScriptGeneration; var codeModel = cm as CodeModelJsa; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a Azure NodeJS code model."); } // Service client var serviceClientTemplate = new AzureServiceClientTemplate { Model = codeModel }; await Write(serviceClientTemplate, codeModel.Name.ToCamelCase() + ".js"); if (!disableTypeScriptGeneration) { var serviceClientTemplateTS = new AzureServiceClientTemplateTS { Model = codeModel, }; await Write(serviceClientTemplateTS, codeModel.Name.ToCamelCase() + ".d.ts"); } var modelIndexTemplate = new AzureModelIndexTemplate { Model = codeModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!disableTypeScriptGeneration) { var modelIndexTemplateTS = new AzureModelIndexTemplateTS { Model = codeModel }; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } //Models if (codeModel.ModelTemplateModels.Any()) { // Paged Models foreach (var pageModel in codeModel.PageTemplateModels) { var pageTemplate = new PageModelTemplate { Model = pageModel }; await Write(pageTemplate, Path.Combine("models", pageModel.Name.ToCamelCase() + ".js")); } foreach (var modelType in codeModel.ModelTemplateModels.Where( each => !codeModel.PageTemplateModels.Any( ptm=> ptm.Name.EqualsIgnoreCase(each.Name)) )) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.NameAsFileName.ToCamelCase() + ".js")); } } //MethodGroups if (codeModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = codeModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!disableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = codeModel }; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in codeModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.TypeName.ToCamelCase() + ".js")); } } }