/// <summary> /// Compiles all files in the namespace *.customizations*.json into one large json file in bin\Release|Debug\customizations folder /// </summary> /// <param name="modelsPath">The path the to customization models to be compiled</param> public static void CompileServiceCustomizations(string modelsPath) { Console.WriteLine("Compiling service customizations from {0}", modelsPath); if (Directory.Exists("customizations")) { Console.WriteLine("...cleaning previous compilation output"); // Cleanup any previous run customization. foreach (var file in Directory.GetFiles("customizations")) { File.Delete(file); } } else { Directory.CreateDirectory("customizations"); } var fileServices = Directory.GetFiles(modelsPath, "*.customizations*.json"); foreach (var file in fileServices) { // The name before the .customizations extension // Used to get all files for that service var baseName = file.Substring(file.IndexOf("ServiceModels\\", StringComparison.OrdinalIgnoreCase) + "ServiceModels\\".Length, file.IndexOf(".customizations", StringComparison.OrdinalIgnoreCase) - Convert.ToInt32(file.IndexOf("ServiceModels\\", StringComparison.OrdinalIgnoreCase) + "ServiceModels\\".Length)); var filePath = Path.Combine("customizations", baseName + ".customizations.json"); var fileEntries = Directory.GetFiles(modelsPath, baseName + "*.customizations*.json"); var jsonWriter = new JsonWriter {PrettyPrint = true}; jsonWriter.WriteObjectStart(); foreach (var entry in fileEntries) { var customJson = JsonMapper.ToObject(new StreamReader(entry)); foreach (var property in customJson.PropertyNames) { jsonWriter.WritePropertyName(property); jsonWriter.Write(customJson[property].ToJson()); } } jsonWriter.WriteObjectEnd(); // Fixes json being placed into the json mapper var output = jsonWriter.ToString().Replace("\\\"", "\"").Replace("\"{", "{").Replace("}\"", "}").Replace("\"[", "[").Replace("]\"", "]"); // Empty json file if (jsonWriter.ToString().Length < 10) continue; File.WriteAllText(filePath, output); Console.WriteLine("...updated {0}", Path.GetFullPath(filePath)); } }
/// <summary> /// Compiles all files in the namespace *.customizations*.json into one large json file in bin\Release|Debug\customizations folder /// </summary> /// <param name="modelsPath">The path the to customization models to be compiled</param> public static void CompileServiceCustomizations(string modelsPath) { string[] fileServices = Directory.GetFiles(modelsPath, "*.customizations*.json"); foreach (var file in fileServices) { // The name before the .customizations extension // Used to get all files for that service var baseName = file.Substring(file.IndexOf("ServiceModels\\") + "ServiceModels\\".Length, file.IndexOf(".customizations") - Convert.ToInt32(file.IndexOf("ServiceModels\\") + "ServiceModels\\".Length)); string[] fileEntries = Directory.GetFiles(modelsPath, baseName + "*.customizations*.json"); var jsonWriter = new JsonWriter(); jsonWriter.PrettyPrint = true; jsonWriter.WriteObjectStart(); foreach (var entry in fileEntries) { var customJson = JsonMapper.ToObject(new StreamReader(entry)); foreach (var property in customJson.PropertyNames) { jsonWriter.WritePropertyName(property); jsonWriter.Write(customJson[property].ToJson()); } } jsonWriter.WriteObjectEnd(); // Fixes json being placed into the json mapper var output = jsonWriter.ToString().Replace("\\\"", "\"").Replace("\"{", "{").Replace("}\"", "}").Replace("\"[", "[").Replace("]\"", "]"); // Empty json file if (jsonWriter.ToString().Length < 10) continue; Directory.CreateDirectory("customizations"); var filePath = "customizations\\" + baseName + ".customizations.json"; if (File.Exists(filePath)) { var existingContent = File.ReadAllText(filePath); if (string.Equals(existingContent, output)) continue; } File.WriteAllText(filePath, output); Console.WriteLine("\tUpdated {0}", baseName + ".customizations.json"); } }
void WriteNamespaceToc(JsonWriter writer, string ns) { var assemblyWrapper = _generatedNamespaces[ns]; var tocId = ns.Replace(".", "_"); var nsFilePath = Path.Combine("./" + Options.ContentSubFolderName, GenerationManifest.OutputSubFolderFromNamespace(ns), FilenameGenerator.GenerateNamespaceFilename(ns)).Replace('\\', '/'); writer.WritePropertyName(ns); writer.WriteObjectStart(); writer.WritePropertyName("id"); writer.Write(tocId); writer.WritePropertyName("href"); writer.Write(nsFilePath); writer.WritePropertyName("nodes"); writer.WriteObjectStart(); foreach (var type in assemblyWrapper.GetTypesForNamespace(ns).OrderBy(x => x.Name)) { var filePath = Path.Combine("./" + Options.ContentSubFolderName, GenerationManifest.OutputSubFolderFromNamespace(type.Namespace), FilenameGenerator.GenerateFilename(type)).Replace('\\', '/'); writer.WritePropertyName(type.GetDisplayName(false)); writer.WriteObjectStart(); writer.WritePropertyName("id"); writer.Write(type.GetDisplayName(true).Replace(".", "_")); writer.WritePropertyName("href"); writer.Write(filePath); writer.WriteObjectEnd(); } writer.WriteObjectEnd(); writer.WriteObjectEnd(); }