@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
100 lines (86 loc) • 3.58 kB
text/typescript
import childProcess from 'child_process';
import log from 'fancy-log';
import { argv as values } from 'yargs';
export module Utilities {
function toBoolean(value: any, defaultValue: boolean = false) {
return defaultValue ? value !== false : !!value;
}
export function gulpArgv(): { [index: string]: boolean | string } {
return {
prod: toBoolean(values['prod']),
verbose: toBoolean(values['verbose']),
junit: toBoolean(values['junit']),
expandCss: toBoolean(values['expandcss']),
target: values['target'] as string,
debug: toBoolean(values['debug']),
styles: toBoolean(values['styles']),
resources: toBoolean(values['resources']),
core: toBoolean(values['core']),
angular: toBoolean(values['angular']),
app: toBoolean(values['app']),
devGuide: toBoolean(values['devguide']),
fix: toBoolean(values['fix']),
version: values['V'] as string,
icon: values['icon'] as string,
license: values['license'] as string,
company: values['company'] as string,
copyright: values['copyright'] as string,
iconUrl: values['iconUrl'] as string,
targetPath: values['targetPath'] as string
};
}
export function exportFunctions(context: any, gulpModule: any): void {
for (const func in gulpModule) {
if (gulpModule.hasOwnProperty(func)) {
context[func] = gulpModule[func];
}
}
}
export function ng(cb, args, options = {}, codeHandler = null, logIdentifier = '') {
log(`${logIdentifier} - ng`, args.join(' '));
const errors = [];
const cmd = childProcess.spawn('ng.cmd', args, { ...options, shell: true });
cmd.stdout.on('data', function (data) { log(`${logIdentifier} - ${data.toString().trim()}`); });
cmd.stderr.on('data', function (data) {
const message = data.toString().trim();
if (message.toUpperCase().startsWith('ERROR')) {
log.error(`${logIdentifier} - ${message}`);
errors.push(`${logIdentifier} - ${message}`);
} else {
log(`${logIdentifier} - ${message}`);
}
});
cmd.on('exit', function (code) {
if (codeHandler) {
const codeError = codeHandler(code);
if (codeError) {
errors.push(codeError);
}
}
log(`${logIdentifier} - Process exited with code ${code}`);
finalize();
});
cmd.on('error', function (err) {
log.error(`${logIdentifier} - ${err.message}`);
errors.push(`${logIdentifier} - ${err.message}`);
finalize();
});
cmd.on('close', function (code) {
log(`${logIdentifier} - Process closed with code ${code}`);
finalize();
});
const timeout = setTimeout(() => {
cmd.kill('SIGKILL');
log(`${logIdentifier} - Timeout on the process.`);
finalize();
}, options['timeout'] || 300000);
function finalize() {
clearTimeout(timeout);
if (errors.length > 0) {
cb(errors.join('\n'));
} else {
cb();
}
}
}
}