private static void UpdateDataFiles(string srcDir) { List <string> additionalDirs = new List <string>(); additionalDirs.Add("Tronsmart Radiant"); for (int i = 0; i < additionalDirs.Count;) { string fullPath = Path.Combine(srcDir, additionalDirs[i]); if (Directory.Exists(fullPath)) { additionalDirs[i++] = GetDriverDir(fullPath); } else { additionalDirs.RemoveAt(i); } } // Create a merged 'driver' directory containing all the data from all distributors (for the WebGUI) string combinedDriverDir = Path.Combine(srcDir, "driver_combined"); srcDir = GetDriverDir(srcDir); if (string.IsNullOrEmpty(srcDir)) { return; } if (!Directory.Exists(combinedDriverDir)) { Directory.CreateDirectory(combinedDriverDir); } string dstDir = Path.Combine(Program.BasePath, "Data"); string leDir = Path.Combine(srcDir, "res", "data", "le"); string deviceDir = Path.Combine(srcDir, "device"); string modelListFile = Path.Combine(deviceDir, "modellist.json"); // Format these files manually (https://beautifier.io/) string indexJsFile = Path.Combine(srcDir, "index.formatted.js"); string zeroJsFile = Path.Combine(srcDir, "0.formatted.js"); if (!File.Exists(indexJsFile) || !File.Exists(zeroJsFile)) { Log("Couldn't find formatted js files to process!"); return; } if (File.Exists(indexJsFile) && File.Exists(zeroJsFile) && Directory.Exists(leDir) && Directory.Exists(deviceDir) && File.Exists(modelListFile)) { Dictionary <string, object> models = new Dictionary <string, object>(); foreach (string additionalDir in additionalDirs) { string additionalLeDir = Path.Combine(additionalDir, "res", "data", "le"); if (Directory.Exists(additionalLeDir)) { CMFile.DumpLighting(additionalLeDir, Path.Combine(dstDir, "lighting")); } string additionalDeviceDir = Path.Combine(additionalDir, "device"); if (Directory.Exists(additionalDeviceDir)) { CopyFilesRecursively(new DirectoryInfo(additionalDeviceDir), new DirectoryInfo(Path.Combine(dstDir, "device")), false); string additionalModelListFile = Path.Combine(additionalDeviceDir, "modellist.json"); if (File.Exists(additionalModelListFile)) { ReadModelList(additionalModelListFile, models); } } CopyFilesRecursively(new DirectoryInfo(additionalDir), new DirectoryInfo(combinedDriverDir), true); } CMFile.DumpLighting(leDir, Path.Combine(dstDir, "lighting")); CopyFilesRecursively(new DirectoryInfo(deviceDir), new DirectoryInfo(Path.Combine(dstDir, "device")), false); // TODO: Merge json files in /res/data/le/ and /res/data/macro/ CopyFilesRecursively(new DirectoryInfo(srcDir), new DirectoryInfo(combinedDriverDir), true); // Combine modellist.json files ReadModelList(modelListFile, models); File.WriteAllText(Path.Combine(dstDir, "device", "modellist.json"), CMFile.FormatJson(MiniJSON.Json.Serialize(models.Values.ToList()))); string langDir = Path.Combine(dstDir, "i18n", "langs"); Directory.CreateDirectory(langDir); string indexJs = File.ReadAllText(indexJsFile); int commonIndex = 0; for (int i = 0; i < 2; i++) { string langStr = FindContent(indexJs, "common: {", '{', '}', ref commonIndex); if (!string.IsNullOrEmpty(langStr)) { File.WriteAllText(Path.Combine(langDir, (i == 0 ? "en" : "zh") + ".json"), langStr); } } string zeroJs = File.ReadAllText(zeroJsFile); string keysStr = FindContent(zeroJs, "el-icon-kb-keyboard", '[', ']'); if (!string.IsNullOrEmpty(keysStr)) { File.WriteAllText(Path.Combine(dstDir, "keys.json"), keysStr); } } else { Log("Missing directory / file!"); } }
private static void UpdateDataFiles(string srcDir) { string rootDir = Path.Combine(srcDir, "GK6XPlus Driver"); if (Directory.Exists(rootDir)) { srcDir = rootDir; } string engineDir = Path.Combine(srcDir, "CMSEngine"); if (Directory.Exists(engineDir)) { srcDir = engineDir; } string driverDir = Path.Combine(srcDir, "driver"); if (Directory.Exists(driverDir)) { srcDir = driverDir; } string dstDir = Path.Combine(Program.BasePath, "Data"); string leDir = Path.Combine(srcDir, "res", "data", "le"); string deviceDir = Path.Combine(srcDir, "device"); // Format these files manually (https://beautifier.io/) string indexJsFile = Path.Combine(srcDir, "index.formatted.js"); string zeroJsFile = Path.Combine(srcDir, "0.formatted.js"); if (!File.Exists(indexJsFile) || !File.Exists(zeroJsFile)) { Log("Couldn't find formatted js files to process!"); return; } if (File.Exists(indexJsFile) && File.Exists(zeroJsFile) && Directory.Exists(leDir) && Directory.Exists(deviceDir)) { CMFile.DumpLighting(leDir, Path.Combine(dstDir, "lighting")); CopyFilesRecursively(new DirectoryInfo(deviceDir), new DirectoryInfo(Path.Combine(dstDir, "device"))); string langDir = Path.Combine(dstDir, "i18n", "langs"); Directory.CreateDirectory(langDir); string indexJs = File.ReadAllText(indexJsFile); int commonIndex = 0; for (int i = 0; i < 2; i++) { string langStr = FindContent(indexJs, "common: {", '{', '}', ref commonIndex); if (!string.IsNullOrEmpty(langStr)) { File.WriteAllText(Path.Combine(langDir, (i == 0 ? "en" : "zh") + ".json"), langStr); } } string zeroJs = File.ReadAllText(zeroJsFile); string keysStr = FindContent(zeroJs, "el-icon-kb-keyboard", '[', ']'); if (!string.IsNullOrEmpty(keysStr)) { File.WriteAllText(Path.Combine(dstDir, "keys.json"), keysStr); } } }