| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  | import "typings-global"; | 
					
						
							|  |  |  | import * as plugins from "./npmci.plugins"; | 
					
						
							| 
									
										
										
										
											2016-06-02 13:39:03 +02:00
										 |  |  | import {bash} from "./npmci.bash"; | 
					
						
							| 
									
										
										
										
											2016-06-03 03:44:24 +02:00
										 |  |  | import * as env from "./npmci.env" | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  | let npm = function(){ | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     let npmrcPrefix:string = "//registry.npmjs.org/:_authToken="; | 
					
						
							|  |  |  |     let npmToken:string = process.env.NPMCI_TOKEN_NPM; | 
					
						
							|  |  |  |     let npmrcFileString = 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,{fileName:".npmrc",filePath:"/root"}); | 
					
						
							|  |  |  |     done.resolve(); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  | let docker = function(){ | 
					
						
							| 
									
										
										
										
											2016-06-02 13:08:15 +02:00
										 |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-03 03:44:24 +02:00
										 |  |  |     env.dockerRegistry = "docker.io" | 
					
						
							| 
									
										
										
										
											2016-06-02 13:08:15 +02:00
										 |  |  |     let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/ | 
					
						
							| 
									
										
										
										
											2016-06-02 17:57:01 +02:00
										 |  |  |     if(!process.env.NPMCI_LOGIN_DOCKER){ | 
					
						
							|  |  |  |         plugins.beautylog.error("You have to specify Login Data to the Docker Registry"); | 
					
						
							|  |  |  |         process.exit(1); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER); | 
					
						
							| 
									
										
										
										
											2016-06-02 13:08:15 +02:00
										 |  |  |     let username = dockerRegexResultArray[1]; | 
					
						
							|  |  |  |     let password = dockerRegexResultArray[2]; | 
					
						
							| 
									
										
										
										
											2016-06-02 19:47:57 +02:00
										 |  |  |     plugins.shelljs.exec("docker login -u " + username + " -p " + password); | 
					
						
							| 
									
										
										
										
											2016-06-02 13:08:15 +02:00
										 |  |  |     done.resolve(); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  | let dockerGitlab = function(){ | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-03 19:44:53 +02:00
										 |  |  |     env.dockerRegistry = "registry.gitlab.com"; | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  |     let ciBuildToken = process.env.CI_BUILD_TOKEN | 
					
						
							| 
									
										
										
										
											2016-06-03 17:24:55 +02:00
										 |  |  |     plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + ciBuildToken + " " + env.dockerRegistry); | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  |     done.resolve(); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export let prepare = function(serviceArg:string){ | 
					
						
							|  |  |  |     switch (serviceArg) { | 
					
						
							|  |  |  |         case "npm": | 
					
						
							|  |  |  |             return npm(); | 
					
						
							|  |  |  |         case "docker": | 
					
						
							|  |  |  |             return docker(); | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  |         case "docker-gitlab": | 
					
						
							|  |  |  |             return dockerGitlab(); | 
					
						
							|  |  |  |         default: | 
					
						
							|  |  |  |             break; | 
					
						
							| 
									
										
										
										
											2016-06-01 05:42:37 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | } |