/// <summary> /// 出力先のディレクトリを生成する /// </summary> private OutputPathInfo MakeOutputDirectory(GeneratorConfig config, GeneratorConfig.Definition.TemplateFiles template) { var r = new OutputPathInfo(); // コード全体の出力パス if (false == Directory.Exists(config.OutputConfig.OutputDirectory)) { // 出力パスが存在しなければディレクトを生成する Directory.CreateDirectory(config.OutputConfig.OutputDirectory); } // サービスコードの出力パス { var sp = Path.Combine(config.OutputConfig.OutputDirectory, template.OutputSubdirectoryName); r.ServicePath = sp; if (false == Directory.Exists(sp)) { logger.Info($"生成結果出力先パスを作成 : ${sp}"); // 出力パスが存在しなければディレクトを生成する Directory.CreateDirectory(sp); } } return(r); }
/// <summary> /// コード定義を生成する /// </summary> /// <param name="config"></param> /// <param name="ServiceTemplate"></param> /// <param name="outPath"></param> /// <param name="s"></param> public static void DoCodeGeneration(GeneratorConfig.Definition.TemplateFiles config, string templateSteing, OutputPathInfo outPath, SiteInfos s) { // 内部でテンプレートの出力設定を参照できるように書き換える s.TemplateFilesConfig = config; var result = TemplateExpansion(config.TemplateFileName, templateSteing, s); { // 文字コードを指定 System.Text.Encoding enc = System.Text.Encoding.GetEncoding(config.Encoding); // 出力ファイル名 var outFileName = Path.Combine(outPath.ServicePath, $"{config.HeadPrefix}{s.SiteDefinition.SiteVariableName}{config.EndPrefix}.{config.OutputExtension}"); logger.Info($"生成結果コードを書き出し: {outFileName}"); string fullPath = System.IO.Path.GetFullPath(outFileName); // ファイルを開く using (StreamWriter writer = new StreamWriter(outFileName, false, enc)) { // テキストを書き込む writer.WriteLine(result); } } }