@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
198 lines (197 loc) • 7.97 kB
JavaScript
;
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;