UNPKG

@tsdi/pack

Version:

@tsdi/pack is simple build tasks, base on AOP, Ioc container, via @tsdi. dev build pack activities.

290 lines (288 loc) 11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PlatformService = void 0; var tslib_1 = require("tslib"); var ioc_1 = require("@tsdi/ioc"); var platform_server_1 = require("@tsdi/platform-server"); var fs_1 = require("fs"); var path_1 = require("path"); var shelljs_1 = require("shelljs"); var IPlatformService_1 = require("./IPlatformService"); var globby = require("globby"); var NodeActivityContext_1 = require("./NodeActivityContext"); var minimist = require('minimist'); var del = require('del'); var relChkExp = /^(.{1,2}\/?\\?)?$/; var notExp = /^!/; var replNodeMdlExp = /(node_modules)[\\\/]/g; var PlatformService = /** @class */ (function () { function PlatformService(ctx) { this.ctx = ctx; this.packageFile = 'package.json'; } /** * get evn args. * * @returns {ObjectMap} * @memberof NodeContext */ PlatformService.prototype.getEnvArgs = function () { if (!this.envArgs) { this.envArgs = minimist(tslib_1.__spreadArrays(this.ctx.workflow.args, process.argv.slice(2))); } return this.envArgs; }; PlatformService.prototype.hasArg = function (arg) { return process.argv.indexOf(arg) > -1 || process.argv.indexOf('--' + arg) > -1; }; /** * get root folders. * * @param {Express2<string, string, boolean>} [express] * @returns {string[]} * @memberof NodeContext */ PlatformService.prototype.getRootFolders = function (express) { return this.getFolders(this.getRootPath(), express); }; PlatformService.prototype.getCompilerOptions = function (tsconfig) { var filename = this.toRootPath(tsconfig); var cfg = platform_server_1.syncRequire(filename) || {}; return cfg.compilerOptions || {}; }; PlatformService.prototype.getFileName = function (pathName) { return path_1.basename(pathName).replace(path_1.extname(pathName), ''); }; /** * get folders of path. * * @param {string} pathstr * @param {Express2<string, string, boolean>} [express] * @returns {string[]} * @memberof NodeContext */ PlatformService.prototype.getFolders = function (pathstr, express) { pathstr = path_1.normalize(pathstr); var dir = fs_1.readdirSync(pathstr); var folders = []; dir.forEach(function (d) { var sf = path_1.join(pathstr, d); var f = fs_1.lstatSync(sf); if (f.isDirectory()) { if (express) { var fl = express(sf, d); if (fl) { folders.push(fl); } } else { folders.push(sf); } } }); return folders; }; PlatformService.prototype.getFiles = function (express, options, filter, mapping) { return tslib_1.__awaiter(this, void 0, void 0, function () { var filePaths; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!(ioc_1.isString(express) || ioc_1.isArray(express))) { throw Error('input express param type error!'); } if (ioc_1.isFunction(options)) { filter = options; mapping = filter; options = {}; } return [4 /*yield*/, globby(this.normalizeSrc(express), options)]; case 1: filePaths = (_a.sent()).map(function (e) { return ioc_1.isString(e) ? e : e.path; }); if (filter) { filePaths = filePaths.filter(filter); } if (mapping) { return [2 /*return*/, filePaths.map(mapping)]; } return [2 /*return*/, filePaths]; } }); }); }; PlatformService.prototype.join = function () { var paths = []; for (var _i = 0; _i < arguments.length; _i++) { paths[_i] = arguments[_i]; } return path_1.join.apply(void 0, paths); }; PlatformService.prototype.normalize = function (url) { return url ? url.split('\\').join('/') : url; }; PlatformService.prototype.normalizeSrc = function (src) { var _this = this; if (ioc_1.isString(src)) { return this.normalize(src); } else { return src.map(function (s) { return _this.normalize(s); }); } }; PlatformService.prototype.copyFile = function (src, dist, options) { if (options && options.force) { shelljs_1.rm('-f', dist); shelljs_1.cp(src, dist); } else { shelljs_1.cp(src, dist); } }; PlatformService.prototype.existsFile = function (filename) { return fs_1.existsSync(this.toRootPath(filename)); }; PlatformService.prototype.copyDir = function (src, dist, options) { if (!fs_1.existsSync(dist)) { shelljs_1.mkdir('-p', dist); } if (options && options.force) { shelljs_1.rm('-rf', path_1.normalize(path_1.join(dist, '/'))); shelljs_1.mkdir('-p', path_1.normalize(path_1.join(dist, '/'))); shelljs_1.cp('-R', path_1.normalize(src + '/*'), path_1.normalize(path_1.join(dist, '/'))); } else { shelljs_1.cp('-R', path_1.normalize(src + '/*'), path_1.normalize(path_1.join(dist, '/'))); } }; PlatformService.prototype.copyTo = function (filePath, dist) { return tslib_1.__awaiter(this, void 0, void 0, function () { var outFile; return tslib_1.__generator(this, function (_a) { outFile = path_1.join(dist, filePath.replace(replNodeMdlExp, '')); return [2 /*return*/, new Promise(function (res) { if (!fs_1.existsSync(outFile)) { if (!fs_1.existsSync(path_1.dirname(outFile))) { shelljs_1.mkdir('-p', path_1.dirname(outFile)); } shelljs_1.cp('-R', path_1.join(filePath), outFile); res(true); } })]; }); }); }; PlatformService.prototype.del = function (src, opts) { return del(this.normalizeSrc(src), opts); }; /** * to root path. * * @param {string} pathstr * @returns {string} * @memberof NodeContext */ PlatformService.prototype.toRootPath = function (pathstr) { var root = this.getRootPath(); return root ? platform_server_1.toAbsolutePath(root, pathstr) : this.normalize(pathstr); }; /** * convert path to relative root path. * * @param {string} pathstr * @returns {string} * @memberof NodeActivityContext */ PlatformService.prototype.relativeRoot = function (pathstr) { if (relChkExp.test(pathstr)) { return pathstr; } var fullpath = this.toRootPath(pathstr); return path_1.relative(this.getRootPath(), fullpath) || '.'; }; PlatformService.prototype.getRootPath = function () { return this.ctx.baseURL; }; PlatformService.prototype.toRootSrc = function (src) { var _this = this; var root = this.getRootPath(); if (root) { if (ioc_1.isString(src)) { return this.prefixSrc(root, src); } else { return src.map(function (s) { return _this.prefixSrc(root, s); }); } } return src; }; PlatformService.prototype.relativePath = function (path1, path2) { return path_1.relative(path1, path2); }; PlatformService.prototype.prefixSrc = function (root, strSrc) { var prefix = ''; if (notExp.test(strSrc)) { prefix = '!'; strSrc = strSrc.substring(1, strSrc.length); } return prefix + platform_server_1.toAbsolutePath(root, strSrc); }; /** * get package. * * @returns {*} * @memberof NodeContext */ PlatformService.prototype.getPackage = function () { if (!this._package) { var filename = this.toRootPath(this.packageFile); this._package = platform_server_1.syncRequire(filename); } return this._package; }; /** * get package version. * * @returns {string} * @memberof NodeContext */ PlatformService.prototype.getPackageVersion = function () { var packageCfg = this.getPackage(); if (!packageCfg) { return ''; } return packageCfg.version || ''; }; /** * get module version. * * @param {string} name * @param {boolean} [dependencies=false] * @returns {string} * @memberof NodeContext */ PlatformService.prototype.getModuleVersion = function (name, dependencies) { if (dependencies === void 0) { dependencies = false; } var packageCfg = this.getPackage(); if (!packageCfg) { return ''; } var version = ''; if (packageCfg.dependencies) { version = packageCfg.dependencies[name]; } if (!dependencies && !version && packageCfg.devDependencies) { version = packageCfg.devDependencies[name]; } return version || ''; }; PlatformService.ρAnn = function () { return { "name": "PlatformService", "params": { "constructor": ["ctx"], "hasArg": ["arg"], "getRootFolders": ["express"], "getCompilerOptions": ["tsconfig"], "getFileName": ["pathName"], "getFolders": ["pathstr", "express"], "getFiles": ["express", "options", "filter", "mapping"], "join": ["paths"], "normalize": ["url"], "normalizeSrc": ["src"], "copyFile": ["src", "dist", "options"], "existsFile": ["filename"], "copyDir": ["src", "dist", "options"], "copyTo": ["filePath", "dist"], "del": ["src", "opts"], "toRootPath": ["pathstr"], "relativeRoot": ["pathstr"], "toRootSrc": ["src"], "relativePath": ["path1", "path2"], "prefixSrc": ["root", "strSrc"], "getModuleVersion": ["name", "dependencies"] } }; }; PlatformService = tslib_1.__decorate([ ioc_1.Injectable(IPlatformService_1.PlatformServiceToken), tslib_1.__metadata("design:paramtypes", [NodeActivityContext_1.NodeActivityContext]) ], PlatformService); return PlatformService; }()); exports.PlatformService = PlatformService; //# sourceMappingURL=sourcemaps/PlatformService.js.map