fixes
This commit is contained in:
parent
168fc577d9
commit
dde41c085e
@ -13,9 +13,11 @@ async function apply_template (
|
|||||||
destination: string
|
destination: string
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const dst = path.join (process.cwd (), destination);
|
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);
|
await fs.writeFile (dst, contents);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type JSONMutator = {
|
type JSONMutator = {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
@ -43,22 +45,13 @@ async function modify_json (
|
|||||||
*
|
*
|
||||||
* @param {string} command command to run
|
* @param {string} command command to run
|
||||||
* @param {string} folder folder to run in
|
* @param {string} folder folder to run in
|
||||||
* @returns {Promise<void>} promise
|
|
||||||
*/
|
*/
|
||||||
function run_command (command: string, folder = ''): Promise<void> {
|
function run_command (command: string, folder = ''): void {
|
||||||
return new Promise ((res) => {
|
// eslint-disable-next-line no-sync
|
||||||
child_process.exec (
|
child_process.execSync (
|
||||||
command,
|
command,
|
||||||
{ cwd: path.join (process.cwd (), folder) },
|
{ cwd: path.join (process.cwd (), folder), stdio: 'inherit' }
|
||||||
(err, stdout, stderr) => {
|
|
||||||
if (err)
|
|
||||||
throw err;
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log (stdout + stderr);
|
|
||||||
res ();
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export { modify_json, apply_template, run_command };
|
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 { Snippet } from '../../Snippet';
|
||||||
import { apply_template, modify_json } from '../../Helper';
|
import { apply_template, modify_json } from '../../Helper';
|
||||||
|
|
||||||
import node_js from './template/node/jenkins.js.asset';
|
import { general, node } from './Assets';
|
||||||
import node_jenkinsfile from './template/node/Jenkinsfile.asset';
|
|
||||||
import general_jenkinsfile from './template/general/Jenkinsfile.asset';
|
|
||||||
|
|
||||||
export class Jenkins implements Snippet {
|
export default class Jenkins implements Snippet {
|
||||||
public async start (): Promise<void> {
|
public async start (): Promise<void> {
|
||||||
const is_node = await new Confirm ({
|
const is_node = await new Confirm ({
|
||||||
message: 'is the current project using nodejs?',
|
message: 'is the current project using nodejs?',
|
||||||
@ -22,8 +20,8 @@ export class Jenkins implements Snippet {
|
|||||||
.run ();
|
.run ();
|
||||||
|
|
||||||
if (is_node) {
|
if (is_node) {
|
||||||
await apply_template (node_js, 'jenkins.js');
|
await apply_template (node.js, 'jenkins.js');
|
||||||
await apply_template (node_jenkinsfile, 'Jenkinsfile');
|
await apply_template (node.jenkinsfile, 'Jenkinsfile');
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
await modify_json ((obj: any): any => {
|
await modify_json ((obj: any): any => {
|
||||||
obj.scripts.ci = 'yarn && node jenkins.js';
|
obj.scripts.ci = 'yarn && node jenkins.js';
|
||||||
@ -31,7 +29,7 @@ export class Jenkins implements Snippet {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await apply_template (general_jenkinsfile, 'Jenkinsfile');
|
await apply_template (general.jenkinsfile, 'Jenkinsfile');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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 { apply_template, modify_json, run_command } from '../../Helper';
|
||||||
|
|
||||||
|
|
||||||
import eslintrc from './template/eslintrc.asset';
|
import { eslintrc, gitignore, index, npmrc } from './Assets';
|
||||||
import npmrc from './template/npmrc.asset';
|
|
||||||
import index from './template/index.asset';
|
|
||||||
import gitignore from './template/gitignore.asset';
|
|
||||||
|
|
||||||
export class Node implements Snippet {
|
export default class Node implements Snippet {
|
||||||
public async start (): Promise<void> {
|
public async start (): Promise<void> {
|
||||||
const folder = await new Input (
|
const folder = await new Input (
|
||||||
{ message: 'project name (leave empty for current folder):' }
|
{ 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 (index, path.join (folder, 'index.js'));
|
||||||
await apply_template (gitignore, path.join (folder, '.gitignore'));
|
await apply_template (gitignore, path.join (folder, '.gitignore'));
|
||||||
|
|
||||||
await run_command ('git init', folder);
|
run_command ('git init', folder);
|
||||||
await run_command ('yarn init -y', folder);
|
run_command ('yarn init -y', folder);
|
||||||
await run_command (
|
run_command (
|
||||||
'yarn add --dev @scode/eslint-config eslint nyc ava',
|
'yarn add --dev @scode/eslint-config eslint nyc ava',
|
||||||
folder
|
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
|
|
@ -16,15 +16,16 @@
|
|||||||
"url": "git@git.scode.ovh:timo/snippeteer"
|
"url": "git@git.scode.ovh:timo/snippeteer"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"/snippets/",
|
"/dist/",
|
||||||
|
"/assets/",
|
||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"author": "Timo Hocker",
|
"author": "Timo Hocker",
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scode/eslint-config-ts": "^1.0.19",
|
"@scode/eslint-config-ts": "^1.0.21",
|
||||||
"@types/fs-extra": "^8.1.0",
|
"@types/fs-extra": "^8.1.0",
|
||||||
"@types/node": "^13.11.1",
|
"@types/node": "^13.13.0",
|
||||||
"eslint": "^6.8.0",
|
"eslint": "^6.8.0",
|
||||||
"typescript": "^3.8.3"
|
"typescript": "^3.8.3"
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user