コード例 #1
0
ファイル: GenymanGenerator.cs プロジェクト: genyman/core
        protected void ProcessHandlebarTemplates(Func <string, bool> skipTemplate             = null, Func <string, string> overrideTargetName = null,
                                                 Action <TemplateProcessed> templateProcessed = null)
        {
            var folder        = TemplatePath;
            var templateFiles = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories);

            foreach (var templateFile in templateFiles)
            {
                var template   = TargetFileName(templateFile, TemplatePath);
                var targetName = template;

                if (skipTemplate != null)
                {
                    var skip = skipTemplate.Invoke(template);
                    if (skip)
                    {
                        Log.Debug($"Skipping {template}");
                        continue;
                    }
                }

                if (overrideTargetName != null)
                {
                    var result = overrideTargetName.Invoke(template);
                    if (!string.IsNullOrEmpty(result))
                    {
                        targetName = result;
                    }
                }

                var targetPath = Path.Combine(WorkingDirectory, targetName);
                Log.Debug($"Processing {template}. Target: {targetPath}");

                targetPath.EnsureFolderExists();

                var output = FluentHandlebars.Create(this)
                             .WithAllHelpers()
                             .HavingModel(Configuration)
                             .UsingFileTemplate(templateFile)
                             .OutputFile(targetPath, Overwrite);

                templateProcessed?.Invoke(new TemplateProcessed(template, output));
            }
        }
コード例 #2
0
        public override bool Execute()
        {
            var contents = new HttpClient().GetStringAsync("https://raw.githubusercontent.com/AfterShip/phone/master/lib/iso3166_data.js").Result;

            contents = contents.Substring(17, contents.Length - 19);
            var definitions = JsonConvert.DeserializeObject <List <MobileDefinition> >(contents);

            Log.Info($"Found {definitions.Count} definitions");

            Config = new Configuration()
            {
                Definitions = definitions
            };

            FluentHandlebars.Create(this)
            .HavingModel(Config)
            .UsingEmbeddedTemplate("Definitions.cs")
            .OutputFile(Path.Combine(Env.ConfigPath, $"Definitions.cs"), overwrite: true);

            return(true);
        }
コード例 #3
0
        public override void Execute()
        {
            // ViewModel
            var viewModelFile       = Path.Combine(TemplatePath, "{{ Name }}.cs");
            var viewModelTargetFile = Path.Combine(WorkingDirectory, TargetFileName(viewModelFile, TemplatePath));

            viewModelTargetFile = FluentHandlebars.Create(this)
                                  .WithAllHelpers()
                                  .HavingModel(Configuration)
                                  .UsingFileTemplate(viewModelFile)
                                  .OutputFile(viewModelTargetFile, false); //DO NOT OVERWRITE ViewModel

            FluentMSBuild.Use(viewModelTargetFile)
            .WithBuildAction(BuildAction.Compile)
            .AddToProject();

            // generated ViewModel
            var generatedViewModelFile       = Path.Combine(TemplatePath, "{{ Name }}.generated.cs");
            var generatedViewModelTargetFile = Path.Combine(WorkingDirectory, TargetFileName(generatedViewModelFile, TemplatePath));

            generatedViewModelTargetFile = FluentHandlebars.Create(this)
                                           .WithAllHelpers()
                                           .WithCustomHelper(Helpers)
                                           .HavingModel(Configuration)
                                           .UsingFileTemplate(generatedViewModelFile)
                                           .OutputFile(generatedViewModelTargetFile, true);

            FluentMSBuild.Use(generatedViewModelTargetFile)
            .WithBuildAction(BuildAction.Compile)
            .WithDependencyOn(viewModelTargetFile)
            .AddToProject();

            FluentMSBuild.Use(InputFileName)
            .WithBuildAction(BuildAction.None)
            .WithDependencyOn(viewModelTargetFile)
            .AddToProject();
        }