Exemplo n.º 1
0
        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!");
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }