Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public static CodeModelTS CodeModel(GeneratorSettingsTS settings = null)
        {
            CodeModelTS codeModel = DependencyInjection.New <CodeModelTS>();

            codeModel.Settings = settings;

            return(codeModel);
        }
Esempio n. 3
0
 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;
        }
Esempio n. 5
0
        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);
        }