tscoverage/ts/npmts.cli.ts

92 lines
3.2 KiB
TypeScript
Raw Normal View History

2017-01-17 23:58:09 +00:00
import * as q from 'smartq'
2016-10-21 15:48:52 +00:00
2016-10-06 19:03:30 +00:00
import * as plugins from './npmts.plugins'
import * as paths from './npmts.paths'
2016-10-21 15:48:52 +00:00
import * as NpmtsConfig from './npmts.config'
import * as NpmtsMods from './npmts.mods'
import * as NpmtsWatch from './npmts.watch'
import * as NpmtsShip from './npmts.ship'
2017-04-17 12:55:35 +00:00
/**
* smartanalytics
* this data is fully anonymized (no Ips or any other personal information is tracked).
* It just keeps track which of our tools are really used...
* ... so we know where to spend our limited resources for improving them.
* Since yarn is out and there is heavy caching going on,
* pure download stats are just not reliable enough for us anymore
* Feel free to dig into the smartanalytics package, if you are interested in how it works.
2017-08-29 14:15:24 +00:00
* It is just an https call to our own Lossless Analytics API.
2017-04-17 12:55:35 +00:00
* Our privacy policy can be found here: https://lossless.gmbh/privacy.html
*/
2017-08-29 14:15:24 +00:00
let npmtsAnalytics = new plugins.smartanalytics.Analytics({
2017-09-08 16:04:40 +00:00
apiEndPoint: 'https://pubapi.lossless.one/analytics',
2017-08-29 14:15:24 +00:00
projectId: 'gitzone',
appName: 'npmts'
})
process.nextTick(async () => {
// make the analytics call
npmtsAnalytics.recordEvent('npmToolExecution', {
executionMode: (await NpmtsConfig.configPromise).mode,
tsOptions: (await NpmtsConfig.configPromise).tsOptions,
watch: (await NpmtsConfig.configPromise).watch,
coverageTreshold: (await NpmtsConfig.configPromise).coverageTreshold
}).catch(err => {
plugins.beautylog.warn('Lossless Analytics API not available...')
})
})
2017-03-04 22:44:16 +00:00
2017-08-16 21:46:20 +00:00
export let run = async () => {
2017-03-04 22:44:16 +00:00
let done = q.defer()
2017-08-29 14:15:24 +00:00
2017-08-16 21:53:52 +00:00
plugins.beautylog.figletSync('NPMTS')
2017-03-04 22:44:16 +00:00
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot)
2017-08-16 17:13:01 +00:00
// check for updates
2017-08-17 10:06:08 +00:00
await plugins.smartupdate.standardHandler.check('npmts', npmtsProjectInfo.version, 'http://gitzone.gitlab.io/npmts/changelog.html')
2017-08-16 21:53:52 +00:00
plugins.beautylog.log('---------------------------------------------')
2017-03-04 22:44:16 +00:00
let npmtsCli = new plugins.smartcli.Smartcli()
npmtsCli.standardTask()
.then((argvArg) => {
plugins.beautylog.info('npmts version: ' + npmtsProjectInfo.version)
return NpmtsConfig.run(argvArg)
})
.then((configArg: NpmtsConfig.INpmtsConfig) => {
let done = q.defer()
plugins.beautylog.ora.start('loading additional modules...')
NpmtsMods.mod00.load()
.then((mod00) => {
return mod00.run(configArg)
2016-10-21 15:48:52 +00:00
})
2017-03-04 22:44:16 +00:00
.then(configArg => {
let done = q.defer<NpmtsConfig.INpmtsConfig>()
NpmtsMods.mod01.load()
.then(mod01 => {
return mod01.run(configArg)
})
.then(configArg => {
done.resolve(configArg)
})
return done.promise
2016-10-06 19:03:30 +00:00
})
2017-03-04 22:44:16 +00:00
.then(configArg => {
let done = q.defer<NpmtsConfig.INpmtsConfig>()
NpmtsMods.mod02.load()
.then(mod02 => {
return mod02.run(configArg)
})
.then(configArg => {
done.resolve(configArg)
})
return done.promise
})
.then(NpmtsWatch.run)
.then(NpmtsShip.run)
return done.promise
})
.catch((err) => { if (err instanceof Error) { console.log(err) } })
npmtsCli.addVersion(npmtsProjectInfo.version)
npmtsCli.startParse()
2017-08-16 21:46:20 +00:00
return await done.promise
2016-10-06 19:03:30 +00:00
}