|
|
@@ -0,0 +1,68 @@
|
|
|
+"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 });
|
|
|
+const fs_1 = __importDefault(require("fs"));
|
|
|
+const shell_1 = require("node-utils/shell");
|
|
|
+const file_1 = require("node-utils/file");
|
|
|
+const path_1 = __importDefault(require("path"));
|
|
|
+const util_1 = __importDefault(require("util"));
|
|
|
+const cli = {
|
|
|
+ blue: v => `\x1b[34m${v}\x1b[0m`,
|
|
|
+ green: v => `\x1b[32m${v}\x1b[0m`,
|
|
|
+ yellow: v => `\x1b[33m${v}\x1b[0m`,
|
|
|
+ red: v => `\x1b[31m${v}\x1b[0m`
|
|
|
+};
|
|
|
+(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
+ try {
|
|
|
+ const projectRootDir = path_1.default.resolve(process.cwd());
|
|
|
+ if (!fs_1.default.existsSync(path_1.default.resolve(projectRootDir, 'package.json'))) {
|
|
|
+ yield shell_1.exec('npm init -y', process.stdout, process.stderr);
|
|
|
+ }
|
|
|
+ const cloneDir = path_1.default.resolve(projectRootDir, '.clone');
|
|
|
+ if (fs_1.default.existsSync(cloneDir)) {
|
|
|
+ yield util_1.default.promisify(fs_1.default.rm)(cloneDir, { force: true, recursive: true });
|
|
|
+ }
|
|
|
+ yield shell_1.exec(`git clone ssh://git@bitbucket.siriusonline.de:7999/tsc/express-starter.git "${cloneDir}"`, process.stdout, process.stderr);
|
|
|
+ const pkgJson = yield file_1.readJsonFile(path_1.default.resolve(cloneDir, 'package.json'));
|
|
|
+ let dependencies = Object.keys(pkgJson.dependencies).join('" "');
|
|
|
+ yield shell_1.exec(`npm install "${dependencies}"`, process.stdout, process.stderr);
|
|
|
+ dependencies = Object.keys(pkgJson.devDependencies)
|
|
|
+ .filter(d => d !== 'node-utils')
|
|
|
+ .join('" "');
|
|
|
+ yield shell_1.exec(`npm install --save-dev "${dependencies}"`, process.stdout, process.stderr);
|
|
|
+ const copyFiles = ['.env', '.gitignore', '.prettierrc.js', 'tsconfig.json', '.vscode/settings.json', 'src'];
|
|
|
+ for (const cpFile of copyFiles) {
|
|
|
+ const sourceFile = path_1.default.resolve(cloneDir, cpFile);
|
|
|
+ const targetFile = path_1.default.resolve(projectRootDir, cpFile);
|
|
|
+ const targetDir = path_1.default.dirname(targetFile);
|
|
|
+ if (!fs_1.default.existsSync(targetDir)) {
|
|
|
+ console.log(cli.blue('[INFO]'), 'Creating directory recursively:', targetDir);
|
|
|
+ yield util_1.default.promisify(fs_1.default.mkdir)(targetDir, { recursive: true, mode: 0o777 });
|
|
|
+ }
|
|
|
+ const stat = yield util_1.default.promisify(fs_1.default.stat)(sourceFile);
|
|
|
+ if (stat.isFile()) {
|
|
|
+ yield util_1.default.promisify(fs_1.default.copyFile)(sourceFile, targetFile);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ yield shell_1.exec(`cp -r "${sourceFile}" "${targetFile}"`);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ yield util_1.default.promisify(fs_1.default.rm)(cloneDir, { force: true, recursive: true });
|
|
|
+ process.exit(0);
|
|
|
+ }
|
|
|
+ catch (e) {
|
|
|
+ console.error(e);
|
|
|
+ process.exit(1);
|
|
|
+ }
|
|
|
+}))();
|