@codification/cutwater-build-typescript
Version:
Tasks for compiling and linting TypeScript.
75 lines • 2.92 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 });
exports.TscTask = void 0;
const cutwater_build_core_1 = require("@codification/cutwater-build-core");
class TscTask extends cutwater_build_core_1.GulpTask {
constructor() {
super('tsc', {
spawn: cutwater_build_core_1.Spawn.create(),
options: {},
spawnOpts: {
command: 'tsc',
quiet: false,
ignoreErrors: false,
cwd: process.cwd(),
env: {},
},
});
}
executeTask() {
return __awaiter(this, void 0, void 0, function* () {
const options = this.config.options || {};
options.outDir = options.outDir || this.buildConfig.libFolder;
const args = `${this.prepareOptions()}`;
this.logVerbose(`Running: tsc ${args}`);
yield this.config.spawn.execute(Object.assign(Object.assign({ logger: this.logger() }, this.config.spawnOpts), { args }));
});
}
toArgString(args) {
const argArray = Object.keys(args).map((property) => {
const value = args[property];
const arg = `--${property}`;
if (typeof value === 'string') {
return `${arg} "${value}"`;
}
else if (typeof value === 'boolean' && !!value) {
return arg;
}
else if (typeof value === 'number') {
return `${arg} ${value}`;
}
else if (Array.isArray(value)) {
return `${arg} ${this.toOptionList(value)}`;
}
return '';
});
return `${argArray.join(' ')} `;
}
toOptionList(arg) {
return arg
.map((value) => {
if (typeof value === 'string') {
return `"${value}"`;
}
else if (typeof value === 'number') {
return value;
}
return '';
})
.join(' ');
}
prepareOptions() {
return !!this.config.options ? this.toArgString(this.config.options) : '';
}
}
exports.TscTask = TscTask;
//# sourceMappingURL=TscTask.js.map