protected override async Task <bool> ProcessInternal() { string[] files = await ListInputs(); if (files.Length != 1) { throw new Exception($"Generator received incorrect number of inputs: {files.Length} : {string.Join(",", files)}"); } string modelAsJson = (await ReadFile(files[0])).EnsureYamlIsJson(); CodeModel codeModelT = new ModelSerializer <CodeModel>().Load(modelAsJson); await InitializeCustomSettings(codeModelT); IAnyPlugin plugin = await CreatePlugin(); using (plugin.Activate()) { await InitializeNamespace(); CodeModel codeModel = plugin.Serializer.Load(modelAsJson); GeneratorSettingsTS settings = Singleton <GeneratorSettingsTS> .Instance; settings.UpdatePackageVersion(); ((CodeModelTS)codeModel).Settings = settings; codeModel = plugin.Transformer.TransformCodeModel(codeModel); plugin.CodeGenerator.Generate(codeModel).GetAwaiter().GetResult(); } WriteGeneratedFilesToDisk(); return(true); }
public static CodeModelTS CodeModel(GeneratorSettingsTS settings = null) { CodeModelTS codeModel = DependencyInjection.New <CodeModelTS>(); codeModel.Settings = settings; return(codeModel); }
protected string GetSourceCodeFilePath(GeneratorSettingsTS 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).Replace('\\', '/')); }
protected void InitializeSettings(CodeModelTS codeModel) { GeneratorSettingsTS generatorSettings = Singleton <GeneratorSettingsTS> .Instance; codeModel.PackageName = Settings.Instance.PackageName; codeModel.PackageVersion = Settings.Instance.PackageVersion; codeModel.OutputFolder = generatorSettings.OutputFolder; codeModel.ModelEnumAsUnion = generatorSettings.ModelEnumAsUnion; codeModel.GenerateMetadata = generatorSettings.GenerateMetadata; }
public static CodeModelTS CodeModel(GeneratorSettingsTS settings = null, IEnumerable <CompositeTypeTS> modelTypes = null) { CodeModelTS codeModel = DependencyInjection.New <CodeModelTS>(); codeModel.Settings = settings; if (modelTypes != null) { foreach (CompositeTypeTS modelType in modelTypes) { codeModel.Add(modelType); } } return(codeModel); }