| 
									
										
										
										
											2017-08-27 15:24:17 +02:00
										 |  |  | import * as plugins from './mod.plugins' | 
					
						
							|  |  |  | import * as configModule from '../npmci.config' | 
					
						
							|  |  |  | import { | 
					
						
							|  |  |  |   bash, | 
					
						
							|  |  |  |   bashNoError, | 
					
						
							|  |  |  |   nvmAvailable, | 
					
						
							|  |  |  |   yarnAvailable | 
					
						
							|  |  |  | } from '../npmci.bash' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * handle cli input | 
					
						
							|  |  |  |  * @param argvArg | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export let handleCli = async (argvArg) => { | 
					
						
							|  |  |  |   if (argvArg._.length >= 2) { | 
					
						
							|  |  |  |     let action: string = argvArg._[1] | 
					
						
							|  |  |  |     switch (action) { | 
					
						
							|  |  |  |       case 'install': | 
					
						
							|  |  |  |         await install() | 
					
						
							|  |  |  |         break | 
					
						
							|  |  |  |       case 'prepare': | 
					
						
							|  |  |  |         await prepare() | 
					
						
							|  |  |  |         break | 
					
						
							|  |  |  |       case 'test': | 
					
						
							|  |  |  |         await test() | 
					
						
							|  |  |  |         break | 
					
						
							| 
									
										
										
										
											2017-08-28 13:08:21 +02:00
										 |  |  |       case 'publish': | 
					
						
							|  |  |  |         await publish() | 
					
						
							|  |  |  |         break | 
					
						
							| 
									
										
										
										
											2017-08-27 15:24:17 +02:00
										 |  |  |       default: | 
					
						
							| 
									
										
										
										
											2017-08-28 02:24:06 +02:00
										 |  |  |         plugins.beautylog.error(`>>npmci npm ...<< action >>${action}<< not supported`) | 
					
						
							| 
									
										
										
										
											2017-08-28 13:25:22 +02:00
										 |  |  |         process.exit(1) | 
					
						
							| 
									
										
										
										
											2017-08-27 15:24:17 +02:00
										 |  |  |     } | 
					
						
							|  |  |  |   } else { | 
					
						
							| 
									
										
										
										
											2017-08-28 02:24:06 +02:00
										 |  |  |     plugins.beautylog.log(`>>npmci npm ...<< cli arguments invalid... Please read the documentation.`) | 
					
						
							| 
									
										
										
										
											2017-08-28 13:25:22 +02:00
										 |  |  |     process.exit(1) | 
					
						
							| 
									
										
										
										
											2017-08-27 15:24:17 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * authenticates npm with token from env var | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | let prepare = async () => { | 
					
						
							|  |  |  |   let npmrcPrefix: string = '//registry.npmjs.org/:_authToken=' | 
					
						
							|  |  |  |   let npmToken: string = process.env.NPMCI_TOKEN_NPM | 
					
						
							|  |  |  |   let npmrcFileString: string = npmrcPrefix + npmToken | 
					
						
							|  |  |  |   if (npmToken) { | 
					
						
							|  |  |  |     plugins.beautylog.info('found access token') | 
					
						
							|  |  |  |   } else { | 
					
						
							|  |  |  |     plugins.beautylog.error('no access token found! Exiting!') | 
					
						
							|  |  |  |     process.exit(1) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   plugins.smartfile.memory.toFsSync(npmrcFileString, '/root/.npmrc') | 
					
						
							|  |  |  |   return | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-28 13:08:21 +02:00
										 |  |  | let publish = async () => { | 
					
						
							|  |  |  |   await bash('npm publish') | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 15:24:17 +02:00
										 |  |  | let install = async (): Promise<void> => { | 
					
						
							|  |  |  |   plugins.beautylog.info('now installing dependencies:') | 
					
						
							|  |  |  |   if (await yarnAvailable.promise) { | 
					
						
							|  |  |  |     await bash('yarn install') | 
					
						
							|  |  |  |   } else { | 
					
						
							|  |  |  |     await bash('npm install') | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export let test = async (): Promise<void> => { | 
					
						
							|  |  |  |   plugins.beautylog.info('now starting tests:') | 
					
						
							|  |  |  |   await bash('yarn test') | 
					
						
							|  |  |  | } |