Compare commits

...

35 Commits
dev ... master

Author SHA1 Message Date
698674b46d
fix
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-17 14:06:43 +01:00
eb1a668738
update standard package
Some checks failed
continuous-integration/drone/push Build is failing
2022-03-17 14:06:02 +01:00
95c90f2877
remove jasmine-ts
Some checks failed
continuous-integration/drone/push Build is failing
2022-03-17 13:03:01 +01:00
5a3c7574aa
fix
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-21 16:05:48 +01:00
11f8781a0d
use standard jasmine-ts
Some checks failed
continuous-integration/drone/push Build is failing
2021-12-21 16:04:48 +01:00
191cd90c2d update
Some checks failed
continuous-integration/drone/push Build is failing
2021-03-18 10:35:49 +01:00
b9bdd6bc9f fix
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-26 21:22:34 +01:00
3e4e5bba1c fix node init
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-26 21:14:09 +01:00
09530c439f update standards
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-21 07:55:05 +02:00
702b2dae29 fix
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-25 20:54:13 +02:00
f38ff47fe2 fix, create tests folder
Some checks failed
continuous-integration/drone/push Build is failing
2020-09-24 12:21:56 +02:00
da8c39c91b switch node template to jasmine
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-24 12:08:31 +02:00
d3a568cfe4 switch to jasmine (wip)
Some checks failed
continuous-integration/drone/push Build is failing
2020-09-24 08:11:44 +02:00
3fac2ba503 update-scanner: automatic update
Some checks failed
continuous-integration/drone/push Build is failing
@types/node: 14.6.2 ==> 14.6.4 minor
eslint: 7.7.0 ==> 7.8.1 minor
2020-09-07 13:46:47 +02:00
b43bbe3459 update-scanner: automatic update
Some checks failed
continuous-integration/drone/push Build is failing
@types/node: 14.6.0 ==> 14.6.2 minor
2020-08-30 16:07:11 +02:00
58753bbd01 upgrade typescript
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-21 13:18:00 +02:00
87995d515f update-scanner: automatic update
Some checks failed
continuous-integration/drone/push Build is failing
@types/node: 14.0.27 ==> 14.6.0 minor
eslint: 7.6.0 ==> 7.7.0 minor
2020-08-19 08:37:46 +02:00
0366226d79 fix drone config
Some checks failed
continuous-integration/drone/push Build is failing
2020-08-07 10:28:29 +02:00
636e32c64f update-scanner: automatic update
Some checks failed
continuous-integration/drone/push Build is failing
@sapphirecode/standard: 1.2.4 ==> 1.3.1 minor
2020-08-06 12:26:06 +02:00
db8f88047b update-scanner: automatic update
Some checks failed
continuous-integration/drone/push Build is failing
@types/node: 14.0.26 ==> 14.0.27 minor
eslint: 7.5.0 ==> 7.6.0 minor
2020-08-04 13:09:31 +02:00
64ed038b30 readme template: allow author in object format
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-25 18:58:28 +02:00
d097ba4ad7 update-scanner: automatic update
All checks were successful
continuous-integration/drone/push Build is passing
@sapphirecode/eslint-config-ts: 1.1.21 ==> 1.1.22 minor
@types/node: 14.0.23 ==> 14.0.26 minor
2020-07-25 16:58:48 +02:00
530c215088 remove unnecessary dependencies
Some checks failed
continuous-integration/drone/push Build is failing
2020-07-25 16:15:37 +02:00
93f4592d16 adapt to new package ci standards, fix test modules getting installed on non test projects
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-19 20:11:54 +02:00
0027bd9152 update-scanner: automatic update
All checks were successful
continuous-integration/drone/push Build is passing
@sapphirecode/console-app: 2.1.1 ==> 2.1.2 minor
@sapphirecode/eslint-config-ts: 1.1.20 ==> 1.1.21 minor
@sapphirecode/modelling: 1.1.10 ==> 1.1.11 minor
@sapphirecode/standard: 1.2.3 ==> 1.2.4 minor
2020-07-19 15:17:47 +02:00
3a92db14de fix
Some checks failed
continuous-integration/drone/push Build is failing
2020-07-19 13:53:56 +02:00
d76d0ad1fb update-scanner: automatic update
Some checks failed
continuous-integration/drone/push Build is failing
@sapphirecode/console-app: 2.0.10 ==> 2.1.1 minor
@sapphirecode/standard: 1.2.1 ==> 1.2.3 minor
eslint: 7.4.0 ==> 7.5.0 minor
typescript: 3.9.6 ==> 3.9.7 minor
2020-07-19 12:21:55 +02:00
b07be17744 update-scanner: automatic update
All checks were successful
continuous-integration/drone/push Build is passing
@sapphirecode/console-app: 2.0.9 ==> 2.0.10 minor
@sapphirecode/eslint-config-ts: 1.1.19 ==> 1.1.20 minor
@sapphirecode/modelling: 1.1.9 ==> 1.1.10 minor
@types/node: 14.0.20 ==> 14.0.23 minor
2020-07-16 10:58:16 +02:00
a9b1052d9c update-scanner: automatic update
All checks were successful
continuous-integration/drone/push Build is passing
@sapphirecode/console-app: 2.0.7 ==> 2.0.9 minor
@sapphirecode/eslint-config-ts: 1.1.17 ==> 1.1.19 minor
@sapphirecode/modelling: 1.1.7 ==> 1.1.9 minor
@sapphirecode/standard: 1.2.0 ==> 1.2.1 minor
2020-07-10 12:43:26 +02:00
bff56aa9d5 fix
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-09 22:05:27 +02:00
3ac16d0b16 trigger build 2020-07-09 22:02:54 +02:00
64eafe7c20 adapt to drone 2020-07-09 22:00:59 +02:00
813cda4183 fix changelog 2020-07-04 16:56:58 +02:00
20c3780f8e Merge branch 'dev' 2020-07-04 16:49:54 +02:00
043759f707 update-scanner: automatic update
@sapphirecode/console-app: 2.0.6 ==> 2.0.7 minor
@sapphirecode/eslint-config-ts: 1.1.16 ==> 1.1.17 minor
@sapphirecode/modelling: 1.1.6 ==> 1.1.7 minor
@sapphirecode/standard: 1.1.8 ==> 1.1.9 minor
2020-07-01 09:42:11 +02:00
14 changed files with 943 additions and 877 deletions

14
.drone.yml Normal file
View File

@ -0,0 +1,14 @@
kind: pipeline
name: default
steps:
- name: setup
image: registry:5000/node-build
commands:
- yarn
- curl https://git.scode.ovh/Timo/standard/raw/branch/master/ci.js > ci.js
- name: build
image: registry:5000/node-build
commands:
- node ci.js

View File

@ -1,5 +1,15 @@
# Changelog # Changelog
## 1.5.0
Node template: use jasmine instead of ava
## 1.4.0
Drone template
Jenkins template: remove node specific template (replaced by drone)
## 1.3.0 ## 1.3.0
Copyright function: carry previous creation date to prevent unnecessary modifications Copyright function: carry previous creation date to prevent unnecessary modifications
@ -7,7 +17,7 @@ Copyright function: carry previous creation date to prevent unnecessary modifica
## 1.2.0 ## 1.2.0
- Fully interactive snippets - Fully interactive snippets
- db migration generator removed (new snipped in development) - db migration generator removed
## 1.1.0 ## 1.1.0

23
Jenkinsfile vendored
View File

@ -1,23 +0,0 @@
pipeline {
agent any
environment {
VERSION = VersionNumber([
versionNumberString:
'${BUILDS_ALL_TIME}',
versionPrefix: '1.3.',
worstResultForIncrement: 'SUCCESS'
])
}
stages {
stage('Building') {
steps {
script {
currentBuild.displayName = env.VERSION
}
sh 'yarn ci ${VERSION}'
}
}
}
}

View File

@ -1,6 +1,6 @@
# @sapphirecode/snippeteer # @sapphirecode/snippeteer
version: 1.3.x version: 1.5.x
macros for setting up projects or project parts macros for setting up projects or project parts
@ -31,8 +31,9 @@ license file and adding fields like author and license to the package.json
create a generic jenkinsfile create a generic jenkinsfile
for node projects: automatically generates a jenkinsfile and jenkins.js for easy #### drone
use in jenkins.
create a generic .drone.yml for deployment of node projects
necessary scripts in the package.json: necessary scripts in the package.json:

View File

@ -1,29 +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>, June 2020
*/
'use strict';
const https = require ('https');
const fs = require ('fs');
const { execSync: exec_sync } = require ('child_process');
const run_file = fs.createWriteStream ('.jenkins.run.js');
const [
,, ...args
] = process.argv;
run_file.on ('close', () => {
exec_sync (`node .jenkins.run.js ${args.join (' ')}`, { stdio: 'inherit' });
});
https.get (
'https://git.scode.ovh/Timo/standard/raw/branch/master/jenkins.run.js',
(msg) => {
msg.pipe (run_file);
}
);

View File

@ -13,7 +13,7 @@ export class FileMapper {
public static async map_all_files ( public static async map_all_files (
folder: string, folder: string,
mutator: (data: string, file: string, args: Array<unknown>) => string|null, mutator: (data: string, file: string, args: Array<unknown>) => string|null,
args: Array<unknown> = [] opts: Array<unknown> = []
): Promise<void> { ): Promise<void> {
const files = await fs.readdir (folder); const files = await fs.readdir (folder);
for (const file of files) { for (const file of files) {
@ -21,11 +21,11 @@ export class FileMapper {
continue; continue;
const abs_path = path.join (folder, file); const abs_path = path.join (folder, file);
if ((await fs.stat (abs_path)).isDirectory ()) { if ((await fs.stat (abs_path)).isDirectory ()) {
await FileMapper.map_all_files (abs_path, mutator, args); await FileMapper.map_all_files (abs_path, mutator, opts);
continue; continue;
} }
const data = await fs.readFile (abs_path, 'utf-8'); const data = await fs.readFile (abs_path, 'utf-8');
const res = mutator (data, file, args); const res = mutator (data, file, opts);
if (res === null) if (res === null)
continue; continue;
await fs.writeFile (abs_path, res, 'utf-8'); await fs.writeFile (abs_path, res, 'utf-8');

View File

@ -41,7 +41,7 @@ export default class Copyright implements Snippet {
); );
await modify_json ((json) => { await modify_json ((json) => {
json.author = `${options.author} <${options.email}>`; json.author = { name: options.author, email: options.email };
json.license = options.has_license ? options.license : 'UNLICENSED'; json.license = options.has_license ? options.license : 'UNLICENSED';
return json; return json;
}); });

View File

@ -0,0 +1,20 @@
/*
* 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>, July 2020
*/
import { files } from '@sapphirecode/standard';
import { Snippet } from '../../Snippet';
import { apply_template } from '../../Helper';
export default class Drone implements Snippet {
public is_active (): boolean {
return true;
}
public async start (): Promise<void> {
await apply_template (files.drone, '.drone.yml');
}
}

View File

@ -7,10 +7,7 @@
/* eslint-disable max-len */ /* eslint-disable max-len */
import { files } from '@sapphirecode/standard';
const general = { jenkinsfile: '' }; const general = { jenkinsfile: '' };
const node = { jenkinsfile: files.jenkinsfile, js: files.jenkins };
general.jenkinsfile = `pipeline { general.jenkinsfile = `pipeline {
agent any agent any
@ -53,4 +50,4 @@ general.jenkinsfile = `pipeline {
} }
`; `;
export { general, node }; export { general };

View File

@ -5,11 +5,10 @@
* Created by Timo Hocker <timo@scode.ovh>, May 2020 * Created by Timo Hocker <timo@scode.ovh>, May 2020
*/ */
import { Confirm } from 'enquirer';
import { Snippet } from '../../Snippet'; import { Snippet } from '../../Snippet';
import { apply_template, modify_json } from '../../Helper'; import { apply_template } from '../../Helper';
import { general, node } from './Assets'; import { general } from './Assets';
export default class Jenkins implements Snippet { export default class Jenkins implements Snippet {
public is_active (): boolean { public is_active (): boolean {
@ -17,23 +16,6 @@ export default class Jenkins implements Snippet {
} }
public async start (): Promise<void> { public async start (): Promise<void> {
const is_node = await new Confirm ({ await apply_template (general.jenkinsfile, 'Jenkinsfile');
message: 'is the current project using nodejs?',
initial: true
})
.run ();
if (is_node) {
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';
return obj;
});
}
else {
await apply_template (general.jenkinsfile, 'Jenkinsfile');
}
} }
} }

View File

@ -7,7 +7,11 @@
import path from 'path'; import path from 'path';
import { Input, Confirm } from 'enquirer'; import { Input, Confirm } from 'enquirer';
import { scripts as standard_scripts } from '@sapphirecode/standard'; import {
scripts as standard_scripts,
files as standard_files
} from '@sapphirecode/standard';
import fs from 'fs-extra';
import { Snippet } from '../../Snippet'; import { Snippet } from '../../Snippet';
import { apply_template, modify_json, run_command } from '../../Helper'; import { apply_template, modify_json, run_command } from '../../Helper';
@ -16,6 +20,22 @@ import {
tsconfig, eslintrc_ts, eslintignore tsconfig, eslintrc_ts, eslintignore
} from './Assets'; } from './Assets';
const packages = {
common: [ 'eslint' ],
js: [ '@sapphirecode/eslint-config' ],
ts: [
'typescript',
'@sapphirecode/eslint-config-ts'
],
test: [
'nyc',
'jasmine',
'@types/jasmine'
],
test_ts: [ 'ts-node' ]
};
/** /**
* initialize the package.json * initialize the package.json
* *
@ -28,8 +48,22 @@ async function init_package (
use_ts: boolean, use_ts: boolean,
use_tests: boolean use_tests: boolean
): Promise<void> { ): Promise<void> {
run_command ('yarn init -y', folder);
const bundle = [
...packages.common,
...(use_ts ? packages.ts : packages.js),
...(use_tests ? packages.test : []),
...(use_ts && use_tests ? packages.test_ts : [])
];
run_command (
`yarn add --dev ${bundle.join (' ')}`,
folder
);
await modify_json ((obj: Record<string, unknown>) => { await modify_json ((obj: Record<string, unknown>) => {
const scripts const scripts: Record<string, string>
= { = {
lint: standard_scripts.lint, lint: standard_scripts.lint,
test: standard_scripts.test.common, test: standard_scripts.test.common,
@ -39,7 +73,9 @@ async function init_package (
if (use_ts) { if (use_ts) {
scripts.compile = standard_scripts.compile.ts; scripts.compile = standard_scripts.compile.ts;
scripts.pretest = standard_scripts.test.ts_pre;
scripts.test = standard_scripts.test.ts; scripts.test = standard_scripts.test.ts;
scripts.posttest = standard_scripts.test.ts_post;
files.push ('/dist/'); files.push ('/dist/');
} }
else { else {
@ -92,13 +128,14 @@ export default class Node implements Snippet {
); );
} }
run_command ('git init', folder); run_command ('git init', folder);
run_command ('yarn init -y', folder);
run_command ( if (use_tests) {
`yarn add --dev @sapphirecode/eslint-config${use_ts await apply_template (
? '-ts typescript @ava/typescript' standard_files.jasmine,
: ''} eslint nyc ava`, path.join (folder, 'jasmine.json')
folder );
); await fs.mkdirp (path.join (folder, 'test/spec'));
}
await init_package (folder, use_ts, use_tests); await init_package (folder, use_ts, use_tests);
} }

View File

@ -31,7 +31,10 @@ export default class Readme implements Snippet {
package_data.software = json.name; package_data.software = json.name;
package_data.description = json.description; package_data.description = json.description;
package_data.license = json.license; package_data.license = json.license;
package_data.author = json.author; if (typeof json.author === 'object')
package_data.author = `${json.author.name} <${json.author.email}>`;
else
package_data.author = json.author;
}); });
const readme = get_readme ( const readme = get_readme (
package_data.software, package_data.software,

View File

@ -1,44 +1,49 @@
{ {
"name": "@sapphirecode/snippeteer", "name": "@sapphirecode/snippeteer",
"version": "1.0.0", "version": "1.5.6",
"description": "macros for setting up projects or project parts", "description": "macros for setting up projects or project parts",
"main": "index.js", "main": "index.js",
"bin": { "bin": {
"snippeteer": "./index.js" "snippeteer": "./index.js"
}, },
"bugs": "https://redmine.scode.ovh/projects/snippeteer",
"scripts": { "scripts": {
"lint": "eslint . --ext .js,.jsx,.ts,.tsx,.vue,.mjs", "lint": "eslint . --ext .js,.jsx,.ts,.tsx,.vue,.mjs",
"ci": "yarn --frozen-lockfile && node jenkins.js",
"test": "echo \"no test\"", "test": "echo \"no test\"",
"compile": "tsc" "compile": "tsc"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git@git.scode.ovh:timo/snippeteer" "url": "https://git.scode.ovh:timo/snippeteer.git"
}, },
"files": [ "files": [
"/dist/", "/dist/",
"/lib/", "/lib/",
"LICENSE" "LICENSE"
], ],
"author": "Timo Hocker <timo@scode.ovh>", "author": {
"name": "Timo Hocker",
"email": "timo@scode.ovh"
},
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"devDependencies": { "devDependencies": {
"@sapphirecode/eslint-config-ts": "^1.0.22", "@sapphirecode/eslint-config-ts": "^1.0.22",
"@types/fs-extra": "^9.0.0", "@types/fs-extra": "^9.0.0",
"@types/node": "^14.0.1", "@types/node": "^17.0.2",
"eslint": "^7.0.0", "eslint": "^8.5.0",
"typescript": "^3.8.3" "typescript": "^4.0.2"
}, },
"dependencies": { "dependencies": {
"@sapphirecode/console-app": "^2.0.6", "@sapphirecode/standard": "^1.5.5",
"@sapphirecode/modelling": "^1.1.6",
"@sapphirecode/standard": "^1.0.1",
"enquirer": "^2.3.5", "enquirer": "^2.3.5",
"fs-extra": "^9.0.0", "fs-extra": "^10.0.0",
"license": "^1.0.3" "license": "^1.0.3"
}, },
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
} },
} "keywords": [
"snippet",
"template"
]
}

1587
yarn.lock

File diff suppressed because it is too large Load Diff