tscoverage/ts/npmts.options.ts
2016-09-22 23:23:16 +02:00

83 lines
1.8 KiB
TypeScript

import 'typings-global'
import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths')
import { npmtsOra } from './npmts.promisechain'
export type npmtsMode = 'default' | 'custom'
export interface INpmtsConfig {
argv: any,
coverageTreshold: number,
docs: boolean,
mode: npmtsMode,
test: boolean,
testTs: any,
ts: any,
tsOptions: any,
watch: boolean
};
export var run = function (argvArg) {
let done = plugins.q.defer()
let defaultConfig: INpmtsConfig = {
argv: undefined,
coverageTreshold: 70,
docs: true,
mode: 'default',
test: true,
testTs: {},
ts: {},
tsOptions: {},
watch: false
}
// mix with configfile
npmtsOra.text('looking for npmextra.json')
let config: INpmtsConfig = plugins.npmextra.dataFor<INpmtsConfig>({
toolName: 'npmts',
defaultSettings: defaultConfig,
cwd: paths.cwd
})
// add argv
config.argv = argvArg
// check mode
switch (config.mode) {
case 'default':
case 'custom':
plugins.beautylog.ok('mode is ' + config.mode)
done.resolve(config)
break
default:
plugins.beautylog.error(`mode not recognised!`)
process.exit(1)
};
// handle default mode
if (config.mode === 'default') {
config.ts = {
['./ts/**/*.ts']: './dist/'
}
config.testTs = {
['./test/test.ts']: './test/'
}
};
// mix with commandline
if (config.argv.notest) {
config.test = false
};
if (config.argv.nodocs) {
config.docs = false
};
if (config.argv.watch) {
config.watch = true
};
plugins.beautylog.ok('build options are ready!')
done.resolve(config)
return done.promise
}