UNPKG

@ma3-pro-plugins/ma3-ts-plugin-builder

Version:
158 lines 7.68 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Builder = void 0; const logger_1 = __importDefault(require("../utils/logger")); const fs_extra_1 = __importDefault(require("fs-extra")); const fs = __importStar(require("node:fs")); const path = __importStar(require("path")); const config_1 = require("./config"); const generateEnvFile_1 = require("./generateEnvFile"); const generateTSConfig_1 = require("./generateTSConfig"); const generateXml_1 = require("./generateXml"); const imageConverter_1 = require("./imageConverter"); const tstlRunner_1 = require("./tstlRunner"); const zipCreator_1 = require("./zipCreator"); const Builder = ({ maconfig, buildConfig }) => { const build = () => __awaiter(void 0, void 0, void 0, function* () { try { yield doBuild(); process.exit(0); } catch (error) { logger_1.default.error(error); process.exit(1); } }); function getTSComponent() { for (const comp of maconfig.components) { if (comp.type === "ts") { return comp; } } } function copyAssets(config) { for (const comp of maconfig.components) { switch (comp.type) { case "lua": fs.copyFileSync(`./src/${comp.fileName}`, path.join(config.targetPluginPath, comp.fileName)); break; } } } function installPlugin(config) { try { const srcDir = path.join(config.pluginsPath, config.maPluginPathFirstPart); const destDir = path.join(config.maPluginsInstallPath, config.maPluginPathFirstPart); fs_extra_1.default.mkdirpSync(destDir); fs_extra_1.default.removeSync(path.join(destDir, config.pluginFolderNameWithVersion)); logger_1.default.info(`installPlugin: srcDir=${srcDir}`); // This copy merges directory contents with existing directories. If a file exists it overwrites it. fs_extra_1.default.copySync(srcDir, destDir, { overwrite: true, errorOnExist: false }); logger_1.default.info(`Installed to ${destDir}`); } catch (err) { logger_1.default.error(err); } } function doBuild() { return __awaiter(this, void 0, void 0, function* () { const baseConfig = (0, config_1.createBaseConfig)(maconfig, buildConfig); if (baseConfig.isDev) { logger_1.default.info(`Starting DEV build for maVersion ${buildConfig.maTargetVersion}`); const config = (0, config_1.createConfig)(baseConfig, buildConfig.maTargetVersion); logger_1.default.info("buildPlugin: DEV"); let numOfTSComponents = 0; for (const comp of maconfig.components) { if (comp.type === "ts") { numOfTSComponents++; } } if (numOfTSComponents > 1) { throw Error("Only 1 TS component is supported"); } (0, imageConverter_1.convertImagesToBase64)(config); const comp = getTSComponent(); if (comp != undefined) { const entryConfig = (0, config_1.createEntryConfig)(comp.fileName, config); (0, generateTSConfig_1.generateTSConfig)(`./src/${comp.fileName}`, config, entryConfig, buildConfig); } (0, generateXml_1.generateXml)(maconfig, config); copyAssets(config); if (comp != undefined) { (0, generateEnvFile_1.generateEnvFile)(maconfig, config, "dev"); return (0, tstlRunner_1.runTstlWatch)("tsconfig_dev.json"); } } else { logger_1.default.info("buildPlugin: PROD"); fs_extra_1.default.removeSync(baseConfig.distPath); const maTargetVersions = ["1.6", "1.8"]; for (const maTargetVersion of maTargetVersions) { const config = (0, config_1.createConfig)(baseConfig, maTargetVersion); const comp = getTSComponent(); (0, generateEnvFile_1.generateEnvFile)(maconfig, config, "prod"); (0, imageConverter_1.convertImagesToBase64)(config); if (comp != undefined) { const entryConfig = (0, config_1.createEntryConfig)(comp.fileName, config); (0, generateTSConfig_1.generateTSConfig)(`./src/${comp.fileName}`, config, entryConfig, buildConfig); // transpile(config) (0, tstlRunner_1.runTstl)("tsconfig.json"); } (0, generateXml_1.generateXml)(maconfig, config); copyAssets(config); // createZip(config, maTargetVersion) } // Create Plugin MultiVersion Zip logger_1.default.info("Create MultiVersion Zip File"); yield (0, zipCreator_1.createMultiVersionZip)(baseConfig, buildConfig); logger_1.default.info("Install plugin to local MALightingTechnology folder"); // Install (Copy plugin to .../gma3_library/datapools/plugins/) for (const maTargetVersion of maTargetVersions) { const config = (0, config_1.createConfig)(baseConfig, maTargetVersion); installPlugin(config); } logger_1.default.info("buildPlugin: PROD: DONE"); } }); } return { build: build, }; }; exports.Builder = Builder; //# sourceMappingURL=builder.js.map