kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
119 lines • 5.26 kB
JavaScript
;
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = require("path");
const colors = require("colors/safe");
const child_process_1 = require("child_process");
const fs_extra_1 = require("fs-extra");
const creating = (what, how = 'creating') => {
console.log(colors.green('✓') + ` ${how} ${what}`);
};
const notCreating = (what) => {
console.log(colors.dim('-') + ' not creating ' + what);
};
const tsconfig = {
extends: './node_modules/@kui-shell/builder/tsconfig-base.json',
references: [{ path: 'plugins/plugin-sample' }]
};
const copyDirectory = (breadcrumb, target, force) => __awaiter(void 0, void 0, void 0, function* () {
const targetExists = yield fs_extra_1.pathExists(target);
if (!targetExists || force) {
if (!targetExists) {
yield fs_extra_1.mkdir(target);
}
const source = path_1.dirname(require.resolve(breadcrumb));
yield fs_extra_1.copy(source, target, {
preserveTimestamps: true
});
creating(target);
}
else {
notCreating(target);
}
});
exports.main = (argv) => __awaiter(void 0, void 0, void 0, function* () {
const force = !!argv.find(_ => _ === '-f' || _ === '--force');
if (!(yield fs_extra_1.pathExists('plugins'))) {
yield fs_extra_1.mkdir('plugins');
creating('plugins directory');
}
else {
notCreating('plugins directory');
}
if (!(yield fs_extra_1.pathExists('packages/app/src'))) {
yield fs_extra_1.mkdirp('packages/app/src');
creating('packages/app/src directory');
}
else {
notCreating('packages/app/src directory');
}
if (!(yield fs_extra_1.pathExists('packages/app/src/main.ts'))) {
yield fs_extra_1.writeFile('packages/app/src/main.ts', '// intentionally blank');
creating('packages/app/src directory');
}
else {
notCreating('packages/app/src directory');
}
if (!(yield fs_extra_1.pathExists('tsconfig.json'))) {
yield fs_extra_1.writeFile('tsconfig.json', JSON.stringify(tsconfig, undefined, 2));
creating('tsconfig.json');
}
else {
notCreating('tsconfig.json');
}
copyDirectory('@kui-shell/builder/examples/plugin-sample/package.json', 'plugins/plugin-sample', force);
copyDirectory('@kui-shell/builder/examples/build-configs/default/theme/theme.json', 'theme', force);
creating('reconfiguring package.json');
const pjson = require(path_1.join(__dirname, '../../../../package.json'));
pjson.main = 'node_modules/@kui-shell/core/main/main.js';
if (!pjson.devDependencies) {
pjson.devDependencies = {};
}
pjson.devDependencies.mocha = '6.1.4';
pjson.devDependencies['@types/mocha'] = '5.2.7';
pjson.devDependencies['@types/node'] = '12.0.10';
pjson.devDependencies.electron = '6.0.8';
pjson.devDependencies.spectron = '8.0.0';
pjson.devDependencies.typescript = '3.6.3';
if (!pjson.dependencies) {
pjson.dependencies = {};
}
pjson.dependencies['@kui-shell/plugin-sample'] = 'file:./plugins/plugin-sample';
if (!pjson.scripts) {
pjson.scripts = {};
}
pjson.scripts.init = 'if [ ! -e node_modules/@kui-shell/prescan.json ]; then kui-compile; fi';
pjson.scripts.compile = 'kui-compile';
pjson.scripts.watch = 'tsc --build . --watch';
pjson.scripts['watch:webpack'] = 'kui-watch-webpack';
pjson.scripts['pty:rebuild'] = 'cd node_modules/node-pty-prebuilt-multiarch && npm run install';
pjson.scripts['pty:electron'] =
'if [ ! -e node_modules/node-pty-prebuilt-multiarch/.npmrc ]; then cp node_modules/@kui-shell/builder/npmrc node_modules/node-pty-prebuilt-multiarch/.npmrc && npm run pty:rebuild; fi';
pjson.scripts['pty:nodejs'] =
'if [ -e node_modules/node-pty-prebuilt-multiarch/.npmrc ]; then rm -f node_modules/node-pty-prebuilt-multiarch/.npmrc; npm run pty:rebuild; fi';
pjson.scripts.start = 'npm run -s init && npm run -s pty:electron && electron . shell';
yield fs_extra_1.writeFile('package.json', JSON.stringify(pjson, undefined, 2));
creating('npm install', 'running');
yield new Promise((resolve, reject) => {
child_process_1.exec('npm install', (err, stdout, stderr) => {
if (err) {
console.error(err);
reject(stderr);
}
else {
resolve();
}
});
});
});
exports.main(process.argv);
//# sourceMappingURL=kui-dist-init.js.map