Compare commits
	
		
			26 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8e9a61bbb2 | |||
| dc809a6023 | |||
| 7eeca992b0 | |||
| d018102014 | |||
| 838f2d6959 | |||
| 0d42e5f6eb | |||
| f96de8cdc3 | |||
| 965833916f | |||
| 81ec1391e3 | |||
| bbbca44640 | |||
| 7ba7dc54a1 | |||
| 4f98eeec2a | |||
| 419a6b9e5f | |||
| 9c040c34f5 | |||
| 50d3f2d795 | |||
| 305856b9e1 | |||
| 3683743f3c | |||
| 41237e0e5f | |||
| bce84a0e74 | |||
| 79bed919d8 | |||
| 4b202ce00e | |||
| 16ca787314 | |||
| 3a9b6f658a | |||
| 5c5dbf303f | |||
| 4c07131e51 | |||
| ba039469ff | 
| @@ -12,10 +12,10 @@ | ||||
|     "projectType": "npm", | ||||
|     "module": { | ||||
|       "githost": "gitlab.com", | ||||
|       "gitscope": "shipzone", | ||||
|       "gitscope": "ship.zone", | ||||
|       "gitrepo": "npmci", | ||||
|       "description": "node and docker in gitlab ci on steroids", | ||||
|       "npmPackagename": "@shipzone/npmci", | ||||
|       "npmPackagename": "@ship.zone/npmci", | ||||
|       "license": "MIT" | ||||
|     } | ||||
|   } | ||||
|   | ||||
							
								
								
									
										54
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@shipzone/npmci", | ||||
|   "version": "4.1.16", | ||||
|   "name": "@ship.zone/npmci", | ||||
|   "version": "4.1.29", | ||||
|   "private": false, | ||||
|   "description": "node and docker in gitlab ci on steroids", | ||||
|   "main": "dist_ts/index.js", | ||||
| @@ -27,33 +27,33 @@ | ||||
|   "homepage": "https://gitlab.com/gitzone/npmci#README", | ||||
|   "devDependencies": { | ||||
|     "@gitzone/tsbuild": "^2.1.66", | ||||
|     "@gitzone/tsrun": "^1.2.42", | ||||
|     "@gitzone/tstest": "^1.0.74", | ||||
|     "@pushrocks/tapbundle": "^5.0.8", | ||||
|     "@types/node": "^20.3.1" | ||||
|     "@gitzone/tsrun": "^1.2.44", | ||||
|     "@gitzone/tstest": "^1.0.77", | ||||
|     "@push.rocks/tapbundle": "^5.0.15", | ||||
|     "@types/node": "^20.5.4" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@apiglobal/typedrequest": "^2.0.12", | ||||
|     "@pushrocks/lik": "^6.0.2", | ||||
|     "@pushrocks/npmextra": "^3.0.9", | ||||
|     "@pushrocks/projectinfo": "^5.0.1", | ||||
|     "@pushrocks/qenv": "^5.0.2", | ||||
|     "@pushrocks/smartanalytics": "^2.0.15", | ||||
|     "@pushrocks/smartcli": "^4.0.6", | ||||
|     "@pushrocks/smartdelay": "^3.0.1", | ||||
|     "@pushrocks/smartenv": "^5.0.5", | ||||
|     "@pushrocks/smartfile": "^10.0.25", | ||||
|     "@pushrocks/smartgit": "^3.0.0", | ||||
|     "@pushrocks/smartlog": "^3.0.2", | ||||
|     "@pushrocks/smartlog-destination-local": "^9.0.0", | ||||
|     "@pushrocks/smartparam": "^1.1.6", | ||||
|     "@pushrocks/smartpath": "^5.0.5", | ||||
|     "@pushrocks/smartpromise": "^4.0.2", | ||||
|     "@pushrocks/smartrequest": "^2.0.15", | ||||
|     "@pushrocks/smartshell": "^3.0.3", | ||||
|     "@pushrocks/smartsocket": "^2.0.19", | ||||
|     "@pushrocks/smartssh": "^2.0.0", | ||||
|     "@pushrocks/smartstring": "^4.0.7", | ||||
|     "@api.global/typedrequest": "^3.0.1", | ||||
|     "@push.rocks/lik": "^6.0.5", | ||||
|     "@push.rocks/npmextra": "^4.0.0", | ||||
|     "@push.rocks/projectinfo": "^5.0.2", | ||||
|     "@push.rocks/qenv": "^6.0.2", | ||||
|     "@push.rocks/smartanalytics": "^2.0.15", | ||||
|     "@push.rocks/smartcli": "^4.0.8", | ||||
|     "@push.rocks/smartdelay": "^3.0.5", | ||||
|     "@push.rocks/smartenv": "^5.0.5", | ||||
|     "@push.rocks/smartfile": "^10.0.30", | ||||
|     "@push.rocks/smartgit": "^3.0.1", | ||||
|     "@push.rocks/smartlog": "^3.0.3", | ||||
|     "@push.rocks/smartlog-destination-local": "^9.0.0", | ||||
|     "@push.rocks/smartobject": "^1.0.12", | ||||
|     "@push.rocks/smartpath": "^5.0.11", | ||||
|     "@push.rocks/smartpromise": "^4.0.2", | ||||
|     "@push.rocks/smartrequest": "^2.0.18", | ||||
|     "@push.rocks/smartshell": "^3.0.3", | ||||
|     "@push.rocks/smartsocket": "^2.0.22", | ||||
|     "@push.rocks/smartssh": "^2.0.1", | ||||
|     "@push.rocks/smartstring": "^4.0.8", | ||||
|     "@servezone/interfaces": "^1.0.3", | ||||
|     "@tsclass/tsclass": "^4.0.42", | ||||
|     "@types/through2": "^2.0.38", | ||||
|   | ||||
							
								
								
									
										2292
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2292
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2
									
								
								test/assets/Dockerfile_hello_##version##
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/assets/Dockerfile_hello_##version##
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| FROM mygroup/myrepo:sometag2 | ||||
| RUN apt-get update | ||||
| @@ -1,5 +1,5 @@ | ||||
| process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; | ||||
| import { tap, expect } from '@pushrocks/tapbundle'; | ||||
| import { tap, expect } from '@push.rocks/tapbundle'; | ||||
|  | ||||
| import * as cloudlyConnectorMod from '../ts/connector.cloudly/cloudlyconnector.js'; | ||||
|  | ||||
|   | ||||
							
								
								
									
										30
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								test/test.ts
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| import { tap, expect } from '@pushrocks/tapbundle'; | ||||
| import { tap, expect } from '@push.rocks/tapbundle'; | ||||
| import * as path from 'path'; | ||||
| import * as smartpath from '@pushrocks/smartpath'; | ||||
| import * as smartpath from '@push.rocks/smartpath'; | ||||
|  | ||||
| process.env.NPMTS_TEST = 'true'; | ||||
| process.env.NPMCI_URL_CLOUDLY = 'localhost'; | ||||
| @@ -19,24 +19,20 @@ process.cwd = () => { | ||||
|   return path.join(smartpath.get.dirnameFromImportMetaUrl(import.meta.url), 'assets/'); | ||||
| }; | ||||
|  | ||||
| let npmci: typeof import('../ts/index.js'); | ||||
|  | ||||
| type TNpmciTypes = typeof import('../ts/index.js'); | ||||
|  | ||||
| tap.preTask('should import npmci', async () => { | ||||
|   npmci = await import('../ts/index.js'); | ||||
| }); | ||||
| import type * as npmciTypes from '../ts/index.js'; | ||||
| const npmci = await import('../ts/index.js'); | ||||
|  | ||||
| // ====== | ||||
| // Docker | ||||
| // ====== | ||||
|  | ||||
| let dockerfile1: npmci.Dockerfile; | ||||
| let dockerfile2: npmci.Dockerfile; | ||||
| let sortableArray: npmci.Dockerfile[]; | ||||
| let dockerfile1: npmciTypes.Dockerfile; | ||||
| let dockerfile2: npmciTypes.Dockerfile; | ||||
| let sortableArray: npmciTypes.Dockerfile[]; | ||||
|  | ||||
| tap.test('should return valid Dockerfiles', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   dockerfile1 = new npmci.Dockerfile(npmciInstance.dockerManager, { | ||||
|     filePath: './Dockerfile', | ||||
|     read: true, | ||||
| @@ -51,8 +47,9 @@ tap.test('should return valid Dockerfiles', async () => { | ||||
|  | ||||
| tap.test('should read a directory of Dockerfiles', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   return npmci.Dockerfile.readDockerfiles(npmciInstance.dockerManager).then( | ||||
|     async (readDockerfilesArrayArg: npmci.Dockerfile[]) => { | ||||
|     async (readDockerfilesArrayArg: npmciTypes.Dockerfile[]) => { | ||||
|       sortableArray = readDockerfilesArrayArg; | ||||
|       return expect(readDockerfilesArrayArg[1].version).toEqual('sometag1'); | ||||
|     } | ||||
| @@ -61,7 +58,7 @@ tap.test('should read a directory of Dockerfiles', async () => { | ||||
|  | ||||
| tap.test('should sort an array of Dockerfiles', async () => { | ||||
|   return npmci.Dockerfile.sortDockerfiles(sortableArray).then( | ||||
|     async (sortedArrayArg: npmci.Dockerfile[]) => { | ||||
|     async (sortedArrayArg: npmciTypes.Dockerfile[]) => { | ||||
|       console.log(sortedArrayArg); | ||||
|     } | ||||
|   ); | ||||
| @@ -69,6 +66,7 @@ tap.test('should sort an array of Dockerfiles', async () => { | ||||
|  | ||||
| tap.test('should build all Dockerfiles', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   return npmciInstance.dockerManager.handleCli({ | ||||
|     _: ['docker', 'build'], | ||||
|   }); | ||||
| @@ -76,6 +74,7 @@ tap.test('should build all Dockerfiles', async () => { | ||||
|  | ||||
| tap.test('should test all Dockerfiles', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   return npmciInstance.dockerManager.handleCli({ | ||||
|     _: ['docker', 'test'], | ||||
|   }); | ||||
| @@ -83,6 +82,7 @@ tap.test('should test all Dockerfiles', async () => { | ||||
|  | ||||
| tap.test('should test dockerfiles', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   return npmciInstance.dockerManager.handleCli({ | ||||
|     _: ['docker', 'test'], | ||||
|   }); | ||||
| @@ -90,6 +90,7 @@ tap.test('should test dockerfiles', async () => { | ||||
|  | ||||
| tap.test('should login docker daemon', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   return npmciInstance.dockerManager.handleCli({ | ||||
|     _: ['docker', 'login'], | ||||
|   }); | ||||
| @@ -110,6 +111,7 @@ tap.test('should prepare SSH keys', async () => { | ||||
| // ==== | ||||
| tap.test('should install a certain version of node', async () => { | ||||
|   const npmciInstance = new npmci.Npmci(); | ||||
|   await npmciInstance.start(); | ||||
|   await npmciInstance.nodejsManager.handleCli({ | ||||
|     _: ['node', 'install', 'stable'], | ||||
|   }); | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * autocreated commitinfo by @pushrocks/commitinfo | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@shipzone/npmci', | ||||
|   version: '4.1.16', | ||||
|   name: '@ship.zone/npmci', | ||||
|   version: '4.1.29', | ||||
|   description: 'node and docker in gitlab ci on steroids' | ||||
| } | ||||
|   | ||||
| @@ -6,5 +6,5 @@ export const npmciInstance = new Npmci(); | ||||
| export { Dockerfile, Npmci }; | ||||
|  | ||||
| export const runCli = async () => { | ||||
|   npmciInstance.start(); | ||||
|   await npmciInstance.start(); | ||||
| }; | ||||
|   | ||||
							
								
								
									
										67
									
								
								ts/manager.cloudron/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								ts/manager.cloudron/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| import { logger } from '../npmci.logging.js'; | ||||
| import * as plugins from './mod.plugins.js'; | ||||
| import * as paths from '../npmci.paths.js'; | ||||
| import { bash } from '../npmci.bash.js'; | ||||
| import { Npmci } from '../npmci.classes.npmci.js'; | ||||
|  | ||||
| export class NpmciCloudronManager { | ||||
|   public npmciRef: Npmci; | ||||
|  | ||||
|   constructor(npmciArg: Npmci) { | ||||
|     this.npmciRef = npmciArg; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * handle cli input | ||||
|    * @param argvArg | ||||
|    */ | ||||
|   public handleCli = async (argvArg: any) => { | ||||
|     if (argvArg._.length >= 2) { | ||||
|       const action: string = argvArg._[1]; | ||||
|       switch (action) { | ||||
|         case 'deploy': | ||||
|           await this.deploy(); | ||||
|           break; | ||||
|         default: | ||||
|           logger.log('error', `>>npmci cloudron ...<< action >>${action}<< not supported`); | ||||
|       } | ||||
|     } else { | ||||
|       logger.log( | ||||
|         'info', | ||||
|         `>>npmci cloudron ...<< cli arguments invalid... Please read the documentation.` | ||||
|       ); | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   /** | ||||
|    * Replaces the version string in CloudronManifest file | ||||
|    * @param versionArg | ||||
|    */ | ||||
|   public deploy = async () => { | ||||
|     logger.log('info', 'now deploying to cloudron...'); | ||||
|     logger.log('info', 'installing cloudron cli...'); | ||||
|     await bash(`pnpm install -g cloudron`); | ||||
|     logger.log('ok', 'cloudron cli installed'); | ||||
|  | ||||
|     // lets set the version in the CloudronManifest file | ||||
|     await this.prepareCloudronManifest(this.npmciRef.npmciConfig.getConfig().projectInfo.npm.version); | ||||
|     logger.log('ok', 'CloudronManifest prepared'); | ||||
|  | ||||
|     // lets figure out the docker image tag | ||||
|     const dockerImageTag = await this.npmciRef.npmciConfig.kvStorage.readKey('latestPushedDockerTag'); | ||||
|     const appName = this.npmciRef.npmciConfig.getConfig().cloudronAppName; | ||||
|      | ||||
|     const cloudronEnvVar = process.env.NPMCI_LOGIN_CLOUDRON; | ||||
|     const cloudronServer = cloudronEnvVar.split('|')[0]; | ||||
|     const cloudronToken = cloudronEnvVar.split('|')[1]; | ||||
|     await bash(`cloudron update --server ${cloudronServer} --token ${cloudronToken} --image ${dockerImageTag} --app ${appName}`); | ||||
|   }; | ||||
|  | ||||
|   private prepareCloudronManifest = async (versionArg: string) => { | ||||
|     const manifestPath = plugins.path.join(paths.cwd, 'CloudronManifest.json'); | ||||
|     let manifestFile = plugins.smartfile.fs.toStringSync(manifestPath); | ||||
|     manifestFile = manifestFile.replace(/##version##/g, versionArg); | ||||
|     plugins.smartfile.memory.toFsSync(manifestFile, manifestPath); | ||||
|     logger.log('info', 'Version replaced in CloudronManifest file'); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										1
									
								
								ts/manager.cloudron/mod.plugins.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ts/manager.cloudron/mod.plugins.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| export * from '../npmci.plugins.js'; | ||||
| @@ -93,7 +93,7 @@ export class NpmciDockerManager { | ||||
|     } | ||||
|  | ||||
|     // handle registries | ||||
|     await plugins.smartparam.forEachMinimatch( | ||||
|     await plugins.smartobject.forEachMinimatch( | ||||
|       process.env, | ||||
|       'NPMCI_LOGIN_DOCKER*', | ||||
|       async (envString: string) => { | ||||
| @@ -179,4 +179,12 @@ export class NpmciDockerManager { | ||||
|     await this.prepare(); | ||||
|     return await Dockerfile.readDockerfiles(this).then(Dockerfile.testDockerfiles); | ||||
|   }; | ||||
|  | ||||
|   /** | ||||
|    * can be used to get the Dockerfiles in the directory | ||||
|    */ | ||||
|   getDockerfiles = async () => { | ||||
|     const dockerfiles = await Dockerfile.readDockerfiles(this); | ||||
|     return dockerfiles; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -120,21 +120,21 @@ export class Dockerfile { | ||||
|  * returns a version for a docker file | ||||
|  * @execution SYNC | ||||
|  */ | ||||
|   public static dockerFileVersion(dockerfileInstanceArg: Dockerfile, dockerfileNameArg: string): string { | ||||
| public static dockerFileVersion(dockerfileInstanceArg: Dockerfile, dockerfileNameArg: string): string { | ||||
|   let versionString: string; | ||||
|     const versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/; | ||||
|   const versionRegex = /Dockerfile_(.+)$/; | ||||
|   const regexResultArray = versionRegex.exec(dockerfileNameArg); | ||||
|   if (regexResultArray && regexResultArray.length === 2) { | ||||
|     versionString = regexResultArray[1]; | ||||
|   } else { | ||||
|     versionString = 'latest'; | ||||
|   } | ||||
|     versionString.replace( | ||||
|   versionString = versionString.replace( | ||||
|     '##version##', | ||||
|     dockerfileInstanceArg.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version | ||||
|   ); | ||||
|   return versionString; | ||||
|   } | ||||
| } | ||||
|  | ||||
|   /** | ||||
|    * returns the docker base image for a Dockerfile | ||||
| @@ -285,6 +285,7 @@ export class Dockerfile { | ||||
|       labels: [], | ||||
|       version: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version, | ||||
|     }); | ||||
|     await this.npmciDockerManagerRef.npmciRef.npmciConfig.kvStorage.writeKey('latestPushedDockerTag', this.pushTag) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|   | ||||
| @@ -1,11 +1,10 @@ | ||||
| import { logger } from '../npmci.logging.js'; | ||||
| import * as plugins from './mod.plugins.js'; | ||||
| import { ObjectMap } from '@pushrocks/lik'; | ||||
|  | ||||
| import { DockerRegistry } from './mod.classes.dockerregistry.js'; | ||||
|  | ||||
| export class RegistryStorage { | ||||
|   objectMap = new ObjectMap<DockerRegistry>(); | ||||
|   objectMap = new plugins.lik.ObjectMap<DockerRegistry>(); | ||||
|   constructor() { | ||||
|     // Nothing here | ||||
|   } | ||||
|   | ||||
| @@ -54,7 +54,7 @@ export class NpmciNpmManager { | ||||
|   public async prepare() { | ||||
|     const config = this.npmciRef.npmciConfig.getConfig(); | ||||
|     let npmrcFileString: string = ''; | ||||
|     await plugins.smartparam.forEachMinimatch( | ||||
|     await plugins.smartobject.forEachMinimatch( | ||||
|       process.env, | ||||
|       'NPMCI_TOKEN_NPM*', | ||||
|       (npmEnvArg: string) => { | ||||
| @@ -100,7 +100,7 @@ export class NpmciNpmManager { | ||||
|       let publishVerdaccioAsWell = false; | ||||
|       const config = this.npmciRef.npmciConfig.getConfig(); | ||||
|       const availableRegistries: string[] = []; | ||||
|       await plugins.smartparam.forEachMinimatch( | ||||
|       await plugins.smartobject.forEachMinimatch( | ||||
|         process.env, | ||||
|         'NPMCI_TOKEN_NPM*', | ||||
|         (npmEnvArg: string) => { | ||||
|   | ||||
| @@ -31,7 +31,7 @@ const notUndefined = (stringArg: string) => { | ||||
|  */ | ||||
| export let prepare = async () => { | ||||
|   sshInstance = new plugins.smartssh.SshInstance(); // init ssh instance | ||||
|   plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_SSHKEY_*', evaluateSshEnv); | ||||
|   plugins.smartobject.forEachMinimatch(process.env, 'NPMCI_SSHKEY_*', evaluateSshEnv); | ||||
|   if (!process.env.NPMTS_TEST) { | ||||
|     sshInstance.writeToDisk(); | ||||
|   } else { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ const triggerValueRegex = | ||||
|  | ||||
| export let trigger = async () => { | ||||
|   logger.log('info', 'now running triggers'); | ||||
|   await plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger); | ||||
|   await plugins.smartobject.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger); | ||||
| }; | ||||
|  | ||||
| const evaluateTrigger = async (triggerEnvVarArg) => { | ||||
|   | ||||
| @@ -2,12 +2,10 @@ import { logger } from './npmci.logging.js'; | ||||
| import * as plugins from './npmci.plugins.js'; | ||||
| import * as paths from './npmci.paths.js'; | ||||
|  | ||||
| import * as smartpromise from '@pushrocks/smartpromise'; | ||||
|  | ||||
| /** | ||||
|  * wether nvm is available or not | ||||
|  */ | ||||
| export let nvmAvailable = smartpromise.defer<boolean>(); | ||||
| export let nvmAvailable = plugins.smartpromise.defer<boolean>(); | ||||
| /** | ||||
|  * the smartshell instance for npmci | ||||
|  */ | ||||
|   | ||||
| @@ -1,17 +1,21 @@ | ||||
| import * as plugins from './npmci.plugins.js'; | ||||
|  | ||||
| import { CloudlyConnector } from './connector.cloudly/cloudlyconnector.js'; | ||||
|  | ||||
| // env | ||||
| import { NpmciEnv } from './npmci.classes.npmcienv.js'; | ||||
| import { NpmciInfo } from './npmci.classes.npmciinfo.js'; | ||||
| import { NpmciCli } from './npmci.classes.npmcicli.js'; | ||||
| import { NpmciConfig } from './npmci.classes.npmciconfig.js'; | ||||
|  | ||||
| // mods | ||||
| // connectors | ||||
| import { CloudlyConnector } from './connector.cloudly/cloudlyconnector.js'; | ||||
|  | ||||
| // managers | ||||
| import { NpmciCloudronManager } from './manager.cloudron/index.js'; | ||||
| import { NpmciDockerManager } from './manager.docker/index.js'; | ||||
| import { NpmciGitManager } from './manager.git/index.js'; | ||||
| import { NpmciNodeJsManager } from './manager.nodejs/index.js'; | ||||
| import { NpmciNpmManager } from './manager.npm/index.js'; | ||||
| import { NpmciEnv } from './npmci.classes.npmcienv.js'; | ||||
|  | ||||
| export class Npmci { | ||||
|   public analytics: plugins.smartanalytics.Analytics; | ||||
| @@ -23,6 +27,7 @@ export class Npmci { | ||||
|   public npmciCli: NpmciCli; | ||||
|  | ||||
|   // managers | ||||
|   public cloudronManager: NpmciCloudronManager; | ||||
|   public dockerManager: NpmciDockerManager; | ||||
|   public gitManager: NpmciGitManager; | ||||
|   public nodejsManager: NpmciNodeJsManager; | ||||
| @@ -34,22 +39,23 @@ export class Npmci { | ||||
|       projectId: 'gitzone', | ||||
|       appName: 'npmci', | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   public async start() { | ||||
|     this.cloudlyConnector = new CloudlyConnector(this); | ||||
|     this.npmciEnv = new NpmciEnv(this); | ||||
|     this.npmciInfo = new NpmciInfo(this); | ||||
|     await this.npmciInfo.printToConsole(); | ||||
|     this.npmciCli = new NpmciCli(this); | ||||
|     this.npmciConfig = new NpmciConfig(this); | ||||
|     await this.npmciConfig.init(); | ||||
|  | ||||
|     // managers | ||||
|     this.cloudronManager = new NpmciCloudronManager(this); | ||||
|     this.dockerManager = new NpmciDockerManager(this); | ||||
|     this.gitManager = new NpmciGitManager(this); | ||||
|     this.nodejsManager = new NpmciNodeJsManager(this); | ||||
|     this.npmManager = new NpmciNpmManager(this); | ||||
|   } | ||||
|  | ||||
|   public async start() { | ||||
|     await this.npmciInfo.printToConsole(); | ||||
|     await this.npmciConfig.init(); | ||||
|     this.npmciCli.startParse(); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -24,6 +24,17 @@ export class NpmciCli { | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|     // cloudron | ||||
|     this.smartcli.addCommand('cloudron').subscribe( | ||||
|       async (argv) => { | ||||
|         await this.npmciRef.cloudronManager.handleCli(argv); | ||||
|       }, | ||||
|       (err) => { | ||||
|         console.log(err); | ||||
|         process.exit(1); | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|     // command | ||||
|     this.smartcli.addCommand('command').subscribe( | ||||
|       async (argv) => { | ||||
| @@ -36,7 +47,7 @@ export class NpmciCli { | ||||
|       } | ||||
|     ); | ||||
|  | ||||
|     // command | ||||
|     // git | ||||
|     this.smartcli.addCommand('git').subscribe( | ||||
|       async (argvArg) => { | ||||
|         await this.npmciRef.gitManager.handleCli(argvArg); | ||||
|   | ||||
| @@ -25,6 +25,9 @@ export interface INpmciOptions { | ||||
|  | ||||
|   // urls | ||||
|   urlCloudly: string; | ||||
|  | ||||
|   // cloudron | ||||
|   cloudronAppName?: string; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -41,10 +44,12 @@ export class NpmciConfig { | ||||
|  | ||||
|   constructor(npmciRefArg: Npmci) { | ||||
|     this.npmciRef = npmciRefArg; | ||||
|   } | ||||
|  | ||||
|   public async init() { | ||||
|     this.npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd); | ||||
|     this.kvStorage = new plugins.npmextra.KeyValueStore( | ||||
|       'custom', | ||||
|       'userHomeDir', | ||||
|       `${this.npmciRef.npmciEnv.repo.user}_${this.npmciRef.npmciEnv.repo.repo}` | ||||
|     ); | ||||
|     this.npmciQenv = new plugins.qenv.Qenv( | ||||
| @@ -62,11 +67,8 @@ export class NpmciConfig { | ||||
|       npmRegistryUrl: 'registry.npmjs.org', | ||||
|       gitlabRunnerTags: [], | ||||
|       dockerBuildargEnvMap: {}, | ||||
|       urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), | ||||
|       urlCloudly: await this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   public async init() { | ||||
|     this.configObject = this.npmciNpmextra.dataFor<INpmciOptions>('npmci', this.configObject); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -11,7 +11,7 @@ export class NpmciInfo { | ||||
|     this.npmciRef = npmciArg; | ||||
|   } | ||||
|  | ||||
|   public printToConsole() { | ||||
|     logger.log('info', `npmci version: ${this.projectInfo.version}`); | ||||
|   public async printToConsole() { | ||||
|     await logger.log('info', `npmci version: ${this.projectInfo.version}`); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -4,7 +4,7 @@ import * as path from 'path'; | ||||
| export { path }; | ||||
|  | ||||
| // @apiglobal | ||||
| import * as typedrequest from '@apiglobal/typedrequest'; | ||||
| import * as typedrequest from '@api.global/typedrequest'; | ||||
|  | ||||
| export { typedrequest }; | ||||
|  | ||||
| @@ -13,27 +13,29 @@ import * as servezoneInterfaces from '@servezone/interfaces'; | ||||
|  | ||||
| export { servezoneInterfaces }; | ||||
|  | ||||
| // @pushrocks | ||||
| import * as npmextra from '@pushrocks/npmextra'; | ||||
| import * as projectinfo from '@pushrocks/projectinfo'; | ||||
| import * as qenv from '@pushrocks/qenv'; | ||||
| import * as smartanalytics from '@pushrocks/smartanalytics'; | ||||
| import * as smartdelay from '@pushrocks/smartdelay'; | ||||
| import * as smartfile from '@pushrocks/smartfile'; | ||||
| import * as smartcli from '@pushrocks/smartcli'; | ||||
| import * as smartgit from '@pushrocks/smartgit'; | ||||
| import * as smartlog from '@pushrocks/smartlog'; | ||||
| import * as smartlogDestinationLocal from '@pushrocks/smartlog-destination-local'; | ||||
| import * as smartparam from '@pushrocks/smartparam'; | ||||
| import * as smartpath from '@pushrocks/smartpath'; | ||||
| import * as smartpromise from '@pushrocks/smartpromise'; | ||||
| import * as smartrequest from '@pushrocks/smartrequest'; | ||||
| import * as smartshell from '@pushrocks/smartshell'; | ||||
| import * as smartsocket from '@pushrocks/smartsocket'; | ||||
| import * as smartssh from '@pushrocks/smartssh'; | ||||
| import * as smartstring from '@pushrocks/smartstring'; | ||||
| // @push.rocks | ||||
| import * as lik from '@push.rocks/lik'; | ||||
| import * as npmextra from '@push.rocks/npmextra'; | ||||
| import * as projectinfo from '@push.rocks/projectinfo'; | ||||
| import * as qenv from '@push.rocks/qenv'; | ||||
| import * as smartanalytics from '@push.rocks/smartanalytics'; | ||||
| import * as smartdelay from '@push.rocks/smartdelay'; | ||||
| import * as smartfile from '@push.rocks/smartfile'; | ||||
| import * as smartcli from '@push.rocks/smartcli'; | ||||
| import * as smartgit from '@push.rocks/smartgit'; | ||||
| import * as smartlog from '@push.rocks/smartlog'; | ||||
| import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local'; | ||||
| import * as smartobject from '@push.rocks/smartobject'; | ||||
| import * as smartpath from '@push.rocks/smartpath'; | ||||
| import * as smartpromise from '@push.rocks/smartpromise'; | ||||
| import * as smartrequest from '@push.rocks/smartrequest'; | ||||
| import * as smartshell from '@push.rocks/smartshell'; | ||||
| import * as smartsocket from '@push.rocks/smartsocket'; | ||||
| import * as smartssh from '@push.rocks/smartssh'; | ||||
| import * as smartstring from '@push.rocks/smartstring'; | ||||
|  | ||||
| export { | ||||
|   lik, | ||||
|   npmextra, | ||||
|   projectinfo, | ||||
|   qenv, | ||||
| @@ -44,7 +46,7 @@ export { | ||||
|   smartcli, | ||||
|   smartlog, | ||||
|   smartlogDestinationLocal, | ||||
|   smartparam, | ||||
|   smartobject, | ||||
|   smartpath, | ||||
|   smartpromise, | ||||
|   smartrequest, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user