127 lines
4.7 KiB
JavaScript
127 lines
4.7 KiB
JavaScript
"use strict";
|
|
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.stringifyToDotEnv = exports.capitaliseFirstLetter = exports.moveDirectory = exports.checkSlashesInUrl = exports.progressBar = exports.parseEnv = exports.logErrorToFile = exports.info = exports.success = exports.error = exports.getSubHelpDescription = exports.getHelpDescription = exports.httpCall = exports.downloadFile = void 0;
|
|
const chalk_1 = __importDefault(require("chalk"));
|
|
const fs_1 = __importDefault(require("fs"));
|
|
const path_1 = __importDefault(require("path"));
|
|
const path_2 = require("path");
|
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
const progress = require("cli-progress");
|
|
function downloadFile(url, filePath) {
|
|
return new Promise((resolve, reject) => {
|
|
filePath = path_1.default.resolve(filePath);
|
|
(0, node_fetch_1.default)(url, {
|
|
method: "GET",
|
|
})
|
|
.then(response => {
|
|
const writer = fs_1.default.createWriteStream(filePath);
|
|
if (response.body) {
|
|
response.body.pipe(writer);
|
|
response.body.on("end", resolve);
|
|
response.body.on("error", reject);
|
|
}
|
|
else {
|
|
throw new Error(`Unable to retrieve docker-compose file - ${response.status}`);
|
|
}
|
|
})
|
|
.catch(err => {
|
|
throw err;
|
|
});
|
|
});
|
|
}
|
|
exports.downloadFile = downloadFile;
|
|
function httpCall(url, method) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
const response = yield (0, node_fetch_1.default)(url, {
|
|
method,
|
|
});
|
|
return response.body;
|
|
});
|
|
}
|
|
exports.httpCall = httpCall;
|
|
function getHelpDescription(str) {
|
|
return chalk_1.default.cyan(str);
|
|
}
|
|
exports.getHelpDescription = getHelpDescription;
|
|
function getSubHelpDescription(str) {
|
|
return chalk_1.default.green(str);
|
|
}
|
|
exports.getSubHelpDescription = getSubHelpDescription;
|
|
function error(err) {
|
|
process.exitCode = -1;
|
|
return chalk_1.default.red(`Error - ${err}`);
|
|
}
|
|
exports.error = error;
|
|
function success(str) {
|
|
return chalk_1.default.green(str);
|
|
}
|
|
exports.success = success;
|
|
function info(str) {
|
|
return chalk_1.default.cyan(str);
|
|
}
|
|
exports.info = info;
|
|
function logErrorToFile(file, error) {
|
|
fs_1.default.writeFileSync(path_1.default.resolve(`./${file}`), `Budibase Error\n${error}`);
|
|
}
|
|
exports.logErrorToFile = logErrorToFile;
|
|
function parseEnv(env) {
|
|
const lines = env.toString().split("\n");
|
|
let result = {};
|
|
for (const line of lines) {
|
|
const match = line.match(/^([^=:#]+?)[=:](.*)/);
|
|
if (match) {
|
|
result[match[1].trim()] = match[2].trim();
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
exports.parseEnv = parseEnv;
|
|
function progressBar(total) {
|
|
const bar = new progress.SingleBar({}, progress.Presets.shades_classic);
|
|
bar.start(total, 0);
|
|
return bar;
|
|
}
|
|
exports.progressBar = progressBar;
|
|
function checkSlashesInUrl(url) {
|
|
return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2");
|
|
}
|
|
exports.checkSlashesInUrl = checkSlashesInUrl;
|
|
function moveDirectory(oldPath, newPath) {
|
|
const files = fs_1.default.readdirSync(oldPath);
|
|
// check any file exists already
|
|
for (let file of files) {
|
|
if (fs_1.default.existsSync((0, path_2.join)(newPath, file))) {
|
|
throw new Error("Unable to remove top level directory - some skeleton files already exist.");
|
|
}
|
|
}
|
|
for (let file of files) {
|
|
fs_1.default.renameSync((0, path_2.join)(oldPath, file), (0, path_2.join)(newPath, file));
|
|
}
|
|
fs_1.default.rmdirSync(oldPath);
|
|
}
|
|
exports.moveDirectory = moveDirectory;
|
|
function capitaliseFirstLetter(str) {
|
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
}
|
|
exports.capitaliseFirstLetter = capitaliseFirstLetter;
|
|
function stringifyToDotEnv(json) {
|
|
let str = "";
|
|
for (let [key, value] of Object.entries(json)) {
|
|
str += `${key}=${value}\n`;
|
|
}
|
|
return str;
|
|
}
|
|
exports.stringifyToDotEnv = stringifyToDotEnv;
|