@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
JavaScript
"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