Compare commits

..

No commits in common. "214b113865311a7234a7930c688cda1404ff7018" and "6ff99c827d65c5b8c7c522435e9473081a9e91f0" have entirely different histories.

11 changed files with 38 additions and 104 deletions

21
.vscode/launch.json vendored
View File

@ -1,21 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\index.js",
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"console": "externalTerminal"
}
]
}

View File

@ -1,18 +0,0 @@
# Changelog
## 1.3.0
Copyright function: carry previous creation date to prevent unnecessary modifications
## 1.2.0
- Fully interactive snippets
- db migration generator removed (new snipped in development)
## 1.1.0
Knex database migration generator
## 1.0.0
initial version

2
Jenkinsfile vendored
View File

@ -5,7 +5,7 @@ pipeline {
VERSION = VersionNumber([ VERSION = VersionNumber([
versionNumberString: versionNumberString:
'${BUILDS_ALL_TIME}', '${BUILDS_ALL_TIME}',
versionPrefix: '1.3.', versionPrefix: '1.2.',
worstResultForIncrement: 'SUCCESS' worstResultForIncrement: 'SUCCESS'
]) ])
} }

View File

@ -1,6 +1,6 @@
# @sapphirecode/snippeteer # @sapphirecode/snippeteer
version: 1.3.x version: 1.2.x
macros for setting up projects or project parts macros for setting up projects or project parts

View File

@ -1,10 +1,3 @@
/*
* 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'; 'use strict';
const https = require ('https'); const https = require ('https');

View File

@ -9,18 +9,13 @@ import { CopyrightOptions } from './copyright_options';
export class CopyrightGenerator { export class CopyrightGenerator {
public static get_copyright_notice ( public static get_copyright_notice (
opt: CopyrightOptions, opt: CopyrightOptions
date_str?: string
): string { ): string {
let notice = ''; let notice = '';
let date_string = date_str; const date = (new Date);
if (typeof date_str === 'undefined') { const dtf = new Intl.DateTimeFormat ('en', { month: 'long' });
const date = (new Date); const year = date.getFullYear ();
const dtf = new Intl.DateTimeFormat ('en', { month: 'long' }); const month = dtf.format (date);
const year = date.getFullYear ();
const month = dtf.format (date);
date_string = `${month} ${year}`;
}
if (opt.has_license) { if (opt.has_license) {
notice = `${'/*'} notice = `${'/*'}
@ -28,7 +23,7 @@ export class CopyrightGenerator {
* This file is part of ${opt.software} which is released under ${ * This file is part of ${opt.software} which is released under ${
opt.license}. opt.license}.
* See file 'LICENSE' for full license details. * See file 'LICENSE' for full license details.
* Created by ${opt.author} <${opt.email}>, ${date_string} * Created by ${opt.author} <${opt.email}>, ${month} ${year}
*/ */
`; `;
@ -36,7 +31,7 @@ export class CopyrightGenerator {
else { else {
notice = `${'/*'} notice = `${'/*'}
* Copyright (C) ${opt.company || opt.author} - All Rights Reserved * Copyright (C) ${opt.company || opt.author} - All Rights Reserved
* Created by ${opt.author} <${opt.email}>, ${date_string} * Created by ${opt.author} <${opt.email}>, ${month} ${year}
*/ */
`; `;

View File

@ -42,7 +42,9 @@ export default class Copyright implements Snippet {
await modify_json ((json) => { await modify_json ((json) => {
json.author = `${options.author} <${options.email}>`; json.author = `${options.author} <${options.email}>`;
json.license = options.has_license ? options.license : 'UNLICENSED'; json.license = options.has_license
? options.license
: 'UNLICENSED';
return json; return json;
}); });
@ -57,14 +59,11 @@ export default class Copyright implements Snippet {
); );
} }
if ( if (!this._loaded_from_config && await new Confirm (
!this._loaded_from_config { message: 'should those settings be saved for the next run?' }
&& (await new Confirm (
{ message: 'should those settings be saved for the next run?' }
)
.run ()
.catch (DialogHandler.catch))
) )
.run ()
.catch (DialogHandler.catch))
this.save_options_file (); this.save_options_file ();
} }
@ -82,9 +81,10 @@ export default class Copyright implements Snippet {
this._options.software = await new Input ({ message: 'software name' }) this._options.software = await new Input ({ message: 'software name' })
.run () .run ()
.catch (DialogHandler.catch); .catch (DialogHandler.catch);
this._options.has_license = await new Confirm ( this._options.has_license = await new Confirm ({
{ message: 'would you like to specify a license?' } message:
) 'would you like to specify a license?'
})
.run () .run ()
.catch (DialogHandler.catch); .catch (DialogHandler.catch);
if (this._options.has_license) { if (this._options.has_license) {
@ -104,7 +104,9 @@ export default class Copyright implements Snippet {
this._options = null; this._options = null;
if (await fs.pathExists (file_path)) { if (await fs.pathExists (file_path)) {
const options = JSON.parse (await fs.readFile (file_path, 'utf-8')); const options = JSON.parse (
await fs.readFile (file_path, 'utf-8')
);
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.log (`author: ${options.author} console.log (`author: ${options.author}
@ -133,23 +135,21 @@ license: ${options.license}`);
); );
} }
private fix_file_license (data: string, filename: string): string | null { private fix_file_license (
// eslint-disable-next-line max-len data: string,
const regex = /\/\*\s+\*\sCopyright[\s\S]*?(?:Created by.*?, (?<date>[a-z]+ [0-9]+)[\s\S]*?|\s)\*\/\n{0,2}/gui; filename: string
): string | null {
const regex = /\/\*\s+\*\sCopyright[\s\S]*?\*\/\n{0,2}/gu;
const shebang = /^#!.*?\n\n/gu; const shebang = /^#!.*?\n\n/gu;
const shebang_line = shebang.exec (data); const shebang_line = shebang.exec (data);
if (!(/\.(?:js|ts|mjs)$/u).test (filename) && !regex.test (data)) if (!(/\.(?:js|ts|mjs)$/u).test (filename) && !regex.test (data))
return null; return null;
const res = regex.exec (data); return (shebang_line ? shebang_line[0] : '')
return ( + CopyrightGenerator.get_copyright_notice (
(shebang_line ? shebang_line[0] : '') this._options as CopyrightOptions
+ CopyrightGenerator.get_copyright_notice ( )
this._options as CopyrightOptions, + data.replace (regex, '')
res?.groups?.date .replace (shebang, '');
)
+ data.replace (regex, '')
.replace (shebang, '')
);
} }
} }

View File

@ -1,10 +1,3 @@
/*
* 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
*/
/* eslint-disable max-len */ /* eslint-disable max-len */
export function get_readme ( export function get_readme (
software: string, software: string,

View File

@ -1,10 +1,3 @@
/*
* 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
*/
import { Confirm } from 'enquirer'; import { Confirm } from 'enquirer';
import { Snippet } from '../../Snippet'; import { Snippet } from '../../Snippet';
import { modify_json, apply_template } from '../../Helper'; import { modify_json, apply_template } from '../../Helper';

View File

@ -18,7 +18,6 @@
}, },
"files": [ "files": [
"/dist/", "/dist/",
"/lib/",
"LICENSE" "LICENSE"
], ],
"author": "Timo Hocker <timo@scode.ovh>", "author": "Timo Hocker <timo@scode.ovh>",
@ -39,4 +38,4 @@
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
} }
} }

View File

@ -8,9 +8,9 @@
// "allowJs": true, /* Allow javascript files to be compiled. */ // "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */ // "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
"declaration": true, /* Generates corresponding '.d.ts' file. */ // "declaration": true, /* Generates corresponding '.d.ts' file. */
"declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
"sourceMap": true, /* Generates corresponding '.map' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */ // "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "./dist", /* Redirect output structure to the directory. */ "outDir": "./dist", /* Redirect output structure to the directory. */
"rootDir": "./lib", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ "rootDir": "./lib", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */