UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

198 lines (197 loc) 7.97 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.writeConfigFiles = exports.patchResources = exports.pullMasterToCurrentBranch = exports.patchPackage = exports.packageDiff = exports.auth = exports.workspaceId = exports.bitbucket = void 0; const log_1 = require("diginext-utils/dist/xconsole/log"); const fs_1 = __importDefault(require("fs")); const inquirer_1 = __importDefault(require("inquirer")); const json_diff_1 = __importDefault(require("json-diff")); const lodash_1 = __importDefault(require("lodash")); const ncp_1 = require("ncp"); const ora_1 = __importDefault(require("ora")); const path_1 = __importDefault(require("path")); const util_1 = __importDefault(require("util")); const writeFile = util_1.default.promisify(fs_1.default.writeFile); const simple_git_1 = require("simple-git"); // export var bitbucket; exports.auth = { username: "", password: process.env.BITBUCKET_PASSWORD || "", }; const packageDiff = async () => { var _a, _b; const curPackage = await (_a = path_1.default.resolve("package.json"), Promise.resolve().then(() => __importStar(require(_a)))); const newPackage = await (_b = path_1.default.resolve("./.fw/package.json"), Promise.resolve().then(() => __importStar(require(_b)))); const diff = json_diff_1.default.diff(curPackage, newPackage); return diff; }; exports.packageDiff = packageDiff; const patchPackage = async () => { var _a, _b; const diff = await (0, exports.packageDiff)(); const newPackage = await (_a = path_1.default.resolve("./.fw/package.json"), Promise.resolve().then(() => __importStar(require(_a)))); let curPackage = await (_b = path_1.default.resolve("./package.json"), Promise.resolve().then(() => __importStar(require(_b)))); curPackage.version = newPackage.version; (0, log_1.log)(diff); // log(diff.scripts); // log(Object.entries(diff.scripts)); // scripts if (diff && diff.scripts) { for (let [key, val] of Object.entries(diff.scripts)) { if (key.includes("__added")) curPackage.scripts[key.split("__")[0]] = val; if (val.hasOwnProperty("__old")) curPackage.scripts[key] = val.__new; } } // dependencies if (diff && diff.dependencies) { for (let [key, val] of Object.entries(diff.dependencies)) { // if (key.includes("__deleted")) { // delete curPackage.dependencies[key.split("__")[0]]; // } if (key.includes("__added")) { curPackage.dependencies[key.split("__")[0]] = val; } if (typeof val == "object" && val.hasOwnProperty("__old")) { curPackage.dependencies[key] = val.__new; } } } // dev dependencies // log(diff.devDependencies); if (diff && diff.devDependencies) { for (let [key, val] of Object.entries(diff.devDependencies)) { // if (key.includes("__deleted")) { // delete curPackage.devDependencies[key.split("__")[0]]; // } if (key.includes("__added")) { curPackage.devDependencies[key.split("__")[0]] = val; } if (typeof val == "object" && val.hasOwnProperty("__old")) { curPackage.devDependencies[key] = val.__new; } } } // browser list curPackage.browserlist = newPackage.browserlist; // log(curPackage); return curPackage; }; exports.patchPackage = patchPackage; const pullMasterToCurrentBranch = async () => { const git = (0, simple_git_1.simpleGit)("./", { binary: "git" }); const gitStatus = await git.status(["-s"]); let currentBranch = gitStatus.current; let currentBranchKebab = lodash_1.default.kebabCase(currentBranch); // commit & push everything, then try to merge "master" to current branch if (currentBranch != "master") { const buildSpin = (0, ora_1.default)(`Merging "master" -> "${currentBranch}"...`).start(); try { await git.add("./*"); await git.commit("Stage all files for preparing deployment"); await git.checkout("master"); await git.pull(); await git.checkout(currentBranch); await git.mergeFromTo("master", currentBranch); await git.commit(`Merged "master" -> "${currentBranch}" -> Ready to build "${currentBranch}"`); // await git.push(); } catch (e) { (0, log_1.logError)(e); } buildSpin.stopAndPersist({ symbol: "✌️ ", text: `Merged "master" -> "${currentBranch}" successfully!`, }); } return { currentBranch, currentBranchKebab }; }; exports.pullMasterToCurrentBranch = pullMasterToCurrentBranch; /** * @deprecated * @param all */ const patchResources = async (all = true) => { // await copyFile(); const updateList = [ "components/admin", "components/dashkit", "components/diginext", // "deployment/Dockerfile", "plugins", "optimizer", "modules", ".babelrc", // ".gitignore", // ".dockerignore", ".env.example", // "docker-compose.yaml", "jsconfig.json", "next.config.js", // "next.config_three.js", "git.js", "polyfills.js", "postcss.config.js", // "postinstall.js", "server.js", "server.dev.js", "web.config.js", ]; if (all) { await Promise.all(updateList.map((f) => { return (0, ncp_1.ncp)(path_1.default.join("./.fw", f), path_1.default.join("./", f)); })); } else { // hỏi trước const questions = []; updateList.map((f, i) => { questions.push({ type: "confirm", name: `answer-${i}`, message: `Bạn có muốn cập nhật "${f}" không?`, default: true, }); }); const confirms = await inquirer_1.default.prompt(questions); // log("confirms", confirms); // sau đó mới copy files: await Promise.all(updateList.map(async (f, i) => { if (confirms[`answer-${i}`]) { return (0, ncp_1.ncp)(path_1.default.join("./.fw", f), path_1.default.join("./", f)); } })); } }; exports.patchResources = patchResources; const writeConfigFiles = async (diginextContent, packageContent) => { await writeFile(path_1.default.resolve("package.json"), JSON.stringify(packageContent, null, 2), "utf8"); await writeFile(path_1.default.resolve("dx.json"), JSON.stringify(diginextContent, null, 2), "utf8"); }; exports.writeConfigFiles = writeConfigFiles;