fixes
This commit is contained in:
		| @@ -13,8 +13,10 @@ async function apply_template ( | ||||
|   destination: string | ||||
| ): Promise<void> { | ||||
|   const dst = path.join (process.cwd (), destination); | ||||
|   if (!await fs.pathExists (dst)) | ||||
|   if (!await fs.pathExists (dst)) { | ||||
|     await fs.mkdirp (path.dirname (dst)); | ||||
|     await fs.writeFile (dst, contents); | ||||
|   } | ||||
| } | ||||
|  | ||||
| type JSONMutator = { | ||||
| @@ -43,22 +45,13 @@ async function modify_json ( | ||||
|  * | ||||
|  * @param {string} command command to run | ||||
|  * @param {string} folder folder to run in | ||||
|  * @returns {Promise<void>} promise | ||||
|  */ | ||||
| function run_command (command: string, folder = ''): Promise<void> { | ||||
|   return new Promise ((res) => { | ||||
|     child_process.exec ( | ||||
|       command, | ||||
|       { cwd: path.join (process.cwd (), folder) }, | ||||
|       (err, stdout, stderr) => { | ||||
|         if (err) | ||||
|           throw err; | ||||
|         // eslint-disable-next-line no-console | ||||
|         console.log (stdout + stderr); | ||||
|         res (); | ||||
|       } | ||||
|     ); | ||||
|   }); | ||||
| function run_command (command: string, folder = ''): void { | ||||
|   // eslint-disable-next-line no-sync | ||||
|   child_process.execSync ( | ||||
|     command, | ||||
|     { cwd: path.join (process.cwd (), folder), stdio: 'inherit' } | ||||
|   ); | ||||
| } | ||||
|  | ||||
| export { modify_json, apply_template, run_command }; | ||||
|   | ||||
							
								
								
									
										11
									
								
								lib/asset.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								lib/asset.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -1,11 +0,0 @@ | ||||
| /* | ||||
|  * Copyright (C) SapphireCode - All Rights Reserved | ||||
|  * This file is part of Snippeteer which is released under BSD-3-Clause. | ||||
|  * See file 'LICENSE' for full license details. | ||||
|  * Created by Timo Hocker <timo@scode.ovh>, April 2020 | ||||
|  */ | ||||
|  | ||||
| declare module '*.asset' { | ||||
|   const content: any; | ||||
|   export default content; | ||||
| } | ||||
							
								
								
									
										102
									
								
								lib/snippets/jenkins/Assets.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								lib/snippets/jenkins/Assets.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| /* eslint-disable max-len */ | ||||
|  | ||||
| const general = { jenkinsfile: '' }; | ||||
| const node = { jenkinsfile: '', js: '' }; | ||||
|  | ||||
| general.jenkinsfile = `pipeline { | ||||
|   agent any | ||||
|  | ||||
|   environment { | ||||
|       VERSION = VersionNumber([ | ||||
|           versionNumberString:  | ||||
|               '\${BUILDS_ALL_TIME}', | ||||
|           versionPrefix: '1.0.', | ||||
|           worstResultForIncrement: 'SUCCESS' | ||||
|       ]) | ||||
|       publish = 0 | ||||
|   } | ||||
|  | ||||
|   stages { | ||||
|       stage('Setup') { | ||||
|           steps { | ||||
|               script { | ||||
|                   currentBuild.displayName = env.VERSION | ||||
|               } | ||||
|               echo 'Setting up test environment' | ||||
|               sh 'echo setup' | ||||
|           } | ||||
|       } | ||||
|   } | ||||
|   post { | ||||
|       success { | ||||
|           script { | ||||
|               publish = sh script: "git log -1 | grep '\\\\[no publish\\\\]'", returnStatus: true | ||||
|               if (publish != 0) { | ||||
|                 echo 'Deploying' | ||||
|                 sh 'echo deploy' | ||||
|               } else { | ||||
|                 echo 'Build successful, Commit not marked for deploying' | ||||
|                 currentBuild.result = "UNSTABLE" | ||||
|               } | ||||
|           } | ||||
|       } | ||||
|   } | ||||
| } | ||||
| `; | ||||
|  | ||||
| node.jenkinsfile = `pipeline { | ||||
|   agent any | ||||
|  | ||||
|   environment { | ||||
|       VERSION = VersionNumber([ | ||||
|           versionNumberString: | ||||
|               '\${BUILDS_ALL_TIME}', | ||||
|           versionPrefix: '1.0.', | ||||
|           worstResultForIncrement: 'SUCCESS' | ||||
|       ]) | ||||
|   } | ||||
|  | ||||
|   stages { | ||||
|       stage('Building') { | ||||
|           steps { | ||||
|               script { | ||||
|                   currentBuild.displayName = env.VERSION | ||||
|               } | ||||
|               sh 'yarn ci \${VERSION}' | ||||
|           } | ||||
|       } | ||||
|   } | ||||
| } | ||||
| `; | ||||
|  | ||||
| node.js = `/* eslint-disable no-process-exit */ | ||||
| /* eslint-disable no-console */ | ||||
| /* eslint-disable no-sync */ | ||||
| 'use strict'; | ||||
|  | ||||
| const fs = require ('fs'); | ||||
| const child_process = require ('child_process'); | ||||
|  | ||||
| const pkg = JSON.parse (fs.readFileSync ('package.json', 'utf-8')); | ||||
| [ | ||||
|   ,, pkg.version | ||||
| ] = process.argv; | ||||
| fs.writeFileSync ('package.json', JSON.stringify (pkg, null, 2)); | ||||
|  | ||||
| child_process.execSync ('yarn lint', { stdio: 'inherit' }); | ||||
| if (typeof pkg.scripts !== 'undefined' && typeof pkg.scripts.test === 'string') | ||||
|   child_process.execSync ('yarn test', { stdio: 'inherit' }); | ||||
| if (typeof pkg.scripts !== 'undefined' && typeof pkg.scripts.compile === 'string') | ||||
|   child_process.execSync ('yarn compile', { stdio: 'inherit' }); | ||||
|  | ||||
| child_process.exec ('git log -1 | grep \\'\\\\[no publish\\\\]\\'') | ||||
|   .addListener ('exit', (code) => { | ||||
|     if (code === 0) { | ||||
|       console.log ('build not marked for deployment'); | ||||
|       process.exit (1); | ||||
|     } | ||||
|     else { child_process.execSync ('yarn publish'); } | ||||
|   }); | ||||
| `; | ||||
|  | ||||
| export { general, node }; | ||||
| @@ -9,11 +9,9 @@ import { Confirm } from 'enquirer'; | ||||
| import { Snippet } from '../../Snippet'; | ||||
| import { apply_template, modify_json } from '../../Helper'; | ||||
|  | ||||
| import node_js from './template/node/jenkins.js.asset'; | ||||
| import node_jenkinsfile from './template/node/Jenkinsfile.asset'; | ||||
| import general_jenkinsfile from './template/general/Jenkinsfile.asset'; | ||||
| import { general, node } from './Assets'; | ||||
|  | ||||
| export class Jenkins implements Snippet { | ||||
| export default class Jenkins implements Snippet { | ||||
|   public async start (): Promise<void> { | ||||
|     const is_node = await new Confirm ({ | ||||
|       message: 'is the current project using nodejs?', | ||||
| @@ -22,8 +20,8 @@ export class Jenkins implements Snippet { | ||||
|       .run (); | ||||
|  | ||||
|     if (is_node) { | ||||
|       await apply_template (node_js, 'jenkins.js'); | ||||
|       await apply_template (node_jenkinsfile, 'Jenkinsfile'); | ||||
|       await apply_template (node.js, 'jenkins.js'); | ||||
|       await apply_template (node.jenkinsfile, 'Jenkinsfile'); | ||||
|       // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||
|       await modify_json ((obj: any): any => { | ||||
|         obj.scripts.ci = 'yarn && node jenkins.js'; | ||||
| @@ -31,7 +29,7 @@ export class Jenkins implements Snippet { | ||||
|       }); | ||||
|     } | ||||
|     else { | ||||
|       await apply_template (general_jenkinsfile, 'Jenkinsfile'); | ||||
|       await apply_template (general.jenkinsfile, 'Jenkinsfile'); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,39 +0,0 @@ | ||||
| pipeline { | ||||
|     agent any | ||||
|  | ||||
|     environment { | ||||
|         VERSION = VersionNumber([ | ||||
|             versionNumberString:  | ||||
|                 '${BUILDS_ALL_TIME}', | ||||
|             versionPrefix: '1.0.', | ||||
|             worstResultForIncrement: 'SUCCESS' | ||||
|         ]) | ||||
|         publish = 0 | ||||
|     } | ||||
|  | ||||
|     stages { | ||||
|         stage('Setup') { | ||||
|             steps { | ||||
|                 script { | ||||
|                     currentBuild.displayName = env.VERSION | ||||
|                 } | ||||
|                 echo 'Setting up test environment' | ||||
|                 sh 'echo setup' | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     post { | ||||
|         success { | ||||
|             script { | ||||
|                 publish = sh script: "git log -1 | grep '\\[no publish\\]'", returnStatus: true | ||||
|                 if (publish != 0) { | ||||
|                   echo 'Deploying' | ||||
|                   sh 'echo deploy' | ||||
|                 } else { | ||||
|                   echo 'Build successful, Commit not marked for deploying' | ||||
|                   currentBuild.result = "UNSTABLE" | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,23 +0,0 @@ | ||||
| pipeline { | ||||
|     agent any | ||||
|  | ||||
|     environment { | ||||
|         VERSION = VersionNumber([ | ||||
|             versionNumberString: | ||||
|                 '${BUILDS_ALL_TIME}', | ||||
|             versionPrefix: '1.0.', | ||||
|             worstResultForIncrement: 'SUCCESS' | ||||
|         ]) | ||||
|     } | ||||
|  | ||||
|     stages { | ||||
|         stage('Building') { | ||||
|             steps { | ||||
|                 script { | ||||
|                     currentBuild.displayName = env.VERSION | ||||
|                 } | ||||
|                 sh 'yarn ci ${VERSION}' | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,28 +0,0 @@ | ||||
| /* eslint-disable no-process-exit */ | ||||
| /* eslint-disable no-console */ | ||||
| /* eslint-disable no-sync */ | ||||
| 'use strict'; | ||||
|  | ||||
| const fs = require ('fs'); | ||||
| const child_process = require ('child_process'); | ||||
|  | ||||
| const pkg = JSON.parse (fs.readFileSync ('package.json', 'utf-8')); | ||||
| [ | ||||
|   ,, pkg.version | ||||
| ] = process.argv; | ||||
| fs.writeFileSync ('package.json', JSON.stringify (pkg, null, 2)); | ||||
|  | ||||
| child_process.execSync ('yarn lint', { stdio: 'inherit' }); | ||||
| if (typeof pkg.scripts !== 'undefined' && typeof pkg.scripts.test === 'string') | ||||
|   child_process.execSync ('yarn test', { stdio: 'inherit' }); | ||||
| if (typeof pkg.scripts !== 'undefined' && typeof pkg.scripts.compile === 'string') | ||||
|   child_process.execSync ('yarn compile', { stdio: 'inherit' }); | ||||
|  | ||||
| child_process.exec ('git log -1 | grep \'\\[no publish\\]\'') | ||||
|   .addListener ('exit', (code) => { | ||||
|     if (code === 0) { | ||||
|       console.log ('build not marked for deployment'); | ||||
|       process.exit (1); | ||||
|     } | ||||
|     else { child_process.execSync ('yarn publish'); } | ||||
|   }); | ||||
							
								
								
									
										31
									
								
								lib/snippets/node/Assets.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								lib/snippets/node/Assets.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| const eslintrc = `module.exports = { | ||||
|   env: { | ||||
|     commonjs: true, | ||||
|     es6: true, | ||||
|     node: true | ||||
|   }, | ||||
|   extends: [ | ||||
|     '@scode' | ||||
|   ], | ||||
|   globals: { | ||||
|     Atomics: 'readonly', | ||||
|     SharedArrayBuffer: 'readonly' | ||||
|   }, | ||||
|   parserOptions: { | ||||
|     ecmaVersion: 2018 | ||||
|   } | ||||
| } | ||||
| `; | ||||
|  | ||||
| const gitignore = `/node_modules/ | ||||
| /dist/ | ||||
| /.nyc_output/ | ||||
| /coverage/ | ||||
| `; | ||||
|  | ||||
| const index = ''; | ||||
|  | ||||
| const npmrc = `@scode:registry=https://npm.scode.ovh | ||||
| `; | ||||
|  | ||||
| export { eslintrc, gitignore, index, npmrc }; | ||||
| @@ -11,12 +11,9 @@ import { Snippet } from '../../Snippet'; | ||||
| import { apply_template, modify_json, run_command } from '../../Helper'; | ||||
|  | ||||
|  | ||||
| import eslintrc from './template/eslintrc.asset'; | ||||
| import npmrc from './template/npmrc.asset'; | ||||
| import index from './template/index.asset'; | ||||
| import gitignore from './template/gitignore.asset'; | ||||
| import { eslintrc, gitignore, index, npmrc } from './Assets'; | ||||
|  | ||||
| export class Node implements Snippet { | ||||
| export default class Node implements Snippet { | ||||
|   public async start (): Promise<void> { | ||||
|     const folder = await new Input ( | ||||
|       { message: 'project name (leave empty for current folder):' } | ||||
| @@ -28,9 +25,9 @@ export class Node implements Snippet { | ||||
|     await apply_template (index, path.join (folder, 'index.js')); | ||||
|     await apply_template (gitignore, path.join (folder, '.gitignore')); | ||||
|  | ||||
|     await run_command ('git init', folder); | ||||
|     await run_command ('yarn init -y', folder); | ||||
|     await run_command ( | ||||
|     run_command ('git init', folder); | ||||
|     run_command ('yarn init -y', folder); | ||||
|     run_command ( | ||||
|       'yarn add --dev @scode/eslint-config eslint nyc ava', | ||||
|       folder | ||||
|     ); | ||||
|   | ||||
| @@ -1,17 +0,0 @@ | ||||
| module.exports = { | ||||
|   env: { | ||||
|     commonjs: true, | ||||
|     es6: true, | ||||
|     node: true | ||||
|   }, | ||||
|   extends: [ | ||||
|     '@scode' | ||||
|   ], | ||||
|   globals: { | ||||
|     Atomics: 'readonly', | ||||
|     SharedArrayBuffer: 'readonly' | ||||
|   }, | ||||
|   parserOptions: { | ||||
|     ecmaVersion: 2018 | ||||
|   } | ||||
| } | ||||
| @@ -1,4 +0,0 @@ | ||||
| /node_modules/ | ||||
| /dist/ | ||||
| /.nyc_output/ | ||||
| /coverage/ | ||||
| @@ -1 +0,0 @@ | ||||
| @scode:registry=https://npm.scode.ovh | ||||
		Reference in New Issue
	
	Block a user