mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-21 17:12:43 +00:00
47
package-lock.json
generated
47
package-lock.json
generated
@@ -4,6 +4,14 @@
|
|||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@babel/runtime": {
|
||||||
|
"version": "7.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz",
|
||||||
|
"integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==",
|
||||||
|
"requires": {
|
||||||
|
"regenerator-runtime": "^0.13.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/events": {
|
"@types/events": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
|
||||||
@@ -78,6 +86,11 @@
|
|||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/yaml": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/yaml/-/yaml-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-rS1VJFjyGKNHk8H97COnPIK+oeLnc0J9G0ES63o/Ky+WlJCeaFGiGCTGhV/GEVKua7ZWIV1JIDopYUwrfvTo7A=="
|
||||||
|
},
|
||||||
"JSONStream": {
|
"JSONStream": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
||||||
@@ -244,9 +257,9 @@
|
|||||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||||
},
|
},
|
||||||
"commander": {
|
"commander": {
|
||||||
"version": "2.19.0",
|
"version": "2.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
|
||||||
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
|
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
|
||||||
},
|
},
|
||||||
"compare-func": {
|
"compare-func": {
|
||||||
"version": "1.3.2",
|
"version": "1.3.2",
|
||||||
@@ -1395,6 +1408,11 @@
|
|||||||
"strip-indent": "^2.0.0"
|
"strip-indent": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"regenerator-runtime": {
|
||||||
|
"version": "0.13.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
|
||||||
|
"integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA=="
|
||||||
|
},
|
||||||
"repeating": {
|
"repeating": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
|
||||||
@@ -1718,9 +1736,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "3.4.1",
|
"version": "3.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
|
||||||
"integrity": "sha512-3NSMb2VzDQm8oBTLH6Nj55VVtUEpe/rgkIzMir0qVoLyjDZlnMBva0U6vDiV3IH+sl/Yu6oP5QwsAQtHPmDd2Q==",
|
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"uglify-js": {
|
"uglify-js": {
|
||||||
@@ -1732,6 +1750,15 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"commander": "~2.19.0",
|
"commander": "~2.19.0",
|
||||||
"source-map": "~0.6.1"
|
"source-map": "~0.6.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"commander": {
|
||||||
|
"version": "2.19.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
|
||||||
|
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"universalify": {
|
"universalify": {
|
||||||
@@ -1779,6 +1806,14 @@
|
|||||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"yaml": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-nKxSWOa7vxAP2pikrGxbkZsG/garQseRiLn9mIDjzwoQsyVy7ZWIpLoARejnINGGLA4fttuzRFFNxxbsztdJgw==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.4.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"yn": {
|
"yn": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
|
||||||
|
|||||||
10
package.json
10
package.json
@@ -24,10 +24,12 @@
|
|||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "10.14.4",
|
"@types/node": "10.14.4",
|
||||||
|
"@types/yaml": "1.0.2",
|
||||||
"chalk": "2.4.2",
|
"chalk": "2.4.2",
|
||||||
"commander": "2.19.0",
|
"commander": "2.20.0",
|
||||||
"tslint": "5.15.0",
|
"tslint": "5.15.0",
|
||||||
"tslint-eslint-rules": "5.4.0"
|
"tslint-eslint-rules": "5.4.0",
|
||||||
|
"yaml": "1.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"conventional-changelog-cli": "2.0.12",
|
"conventional-changelog-cli": "2.0.12",
|
||||||
@@ -35,10 +37,10 @@
|
|||||||
"rimraf": "2.6.3",
|
"rimraf": "2.6.3",
|
||||||
"ts-node": "8.0.3",
|
"ts-node": "8.0.3",
|
||||||
"typedoc": "0.14.2",
|
"typedoc": "0.14.2",
|
||||||
"typescript": "3.4.1"
|
"typescript": "3.4.2"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"typescript": "^3.4.0"
|
"typescript": "^3.4.2"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"openstapps-configuration": "lib/cli.js"
|
"openstapps-configuration": "lib/cli.js"
|
||||||
|
|||||||
43
src/cli.ts
43
src/cli.ts
@@ -18,7 +18,8 @@ import {copyFileSync, existsSync, readFileSync, writeFileSync} from 'fs';
|
|||||||
import {resolve, sep} from 'path';
|
import {resolve, sep} from 'path';
|
||||||
import {cwd} from 'process';
|
import {cwd} from 'process';
|
||||||
import {isDeepStrictEqual} from 'util';
|
import {isDeepStrictEqual} from 'util';
|
||||||
import {EXPECTED_LICENSES, NEEDED_FILES, NYC_CONFIGURATION, SCRIPTS} from './configuration';
|
import {parse, stringify} from 'yaml';
|
||||||
|
import {EXPECTED_CI_CONFIG, EXPECTED_LICENSES, NEEDED_FILES, NYC_CONFIGURATION, SCRIPTS} from './configuration';
|
||||||
|
|
||||||
/* tslint:disable:no-console */
|
/* tslint:disable:no-console */
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@ import {EXPECTED_LICENSES, NEEDED_FILES, NYC_CONFIGURATION, SCRIPTS} from './con
|
|||||||
*/
|
*/
|
||||||
function consoleInfo(...args: string[]): void {
|
function consoleInfo(...args: string[]): void {
|
||||||
args.forEach((arg) => {
|
args.forEach((arg) => {
|
||||||
console.info(chalk.cyan(arg));
|
console.info('\n' + chalk.cyan(arg));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ function consoleInfo(...args: string[]): void {
|
|||||||
*/
|
*/
|
||||||
function consoleWarn(...args: string[]): void {
|
function consoleWarn(...args: string[]): void {
|
||||||
args.forEach((arg) => {
|
args.forEach((arg) => {
|
||||||
console.warn(chalk.red.bold(arg));
|
console.warn('\n' + chalk.red.bold(arg));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +49,7 @@ function consoleWarn(...args: string[]): void {
|
|||||||
*/
|
*/
|
||||||
function consoleLog(...args: string[]): void {
|
function consoleLog(...args: string[]): void {
|
||||||
args.forEach((arg) => {
|
args.forEach((arg) => {
|
||||||
console.log(chalk.green.bold(arg));
|
console.log('\n' + chalk.green.bold(arg));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,16 +158,46 @@ Object.keys(SCRIPTS).forEach((scriptName) => {
|
|||||||
|
|
||||||
// check if script exists
|
// check if script exists
|
||||||
if (typeof scriptToCheck === 'undefined' || commander.replace) {
|
if (typeof scriptToCheck === 'undefined' || commander.replace) {
|
||||||
packageJson.scripts[scriptName] = SCRIPTS[scriptName];
|
packageJson.scripts[scriptName] = SCRIPTS[scriptName].replace('\n', '\\n');
|
||||||
|
|
||||||
packageJsonChanged = true;
|
packageJsonChanged = true;
|
||||||
|
|
||||||
consoleInfo(`Added "${scriptName}" script to "${packageJsonPath}".`);
|
consoleInfo(`Added "${scriptName}" script to "${packageJsonPath}".`);
|
||||||
} else if (typeof scriptToCheck === 'string' && scriptToCheck !== SCRIPTS[scriptName]) {
|
} else if (typeof scriptToCheck === 'string' && scriptToCheck !== SCRIPTS[scriptName]) {
|
||||||
consoleWarn(`NPM script "${scriptName}" should be "${SCRIPTS[scriptName]}".`);
|
consoleWarn(`NPM script "${scriptName}" should be "${SCRIPTS[scriptName].replace('\n', '\\n')}".`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// check CI config if it exists
|
||||||
|
const pathToCiConfig = resolve(path, '.gitlab-ci.yml');
|
||||||
|
if (existsSync(pathToCiConfig)) {
|
||||||
|
// read CI config
|
||||||
|
const buffer = readFileSync(pathToCiConfig);
|
||||||
|
try {
|
||||||
|
const ciConfig = parse(buffer.toString());
|
||||||
|
|
||||||
|
// check entries
|
||||||
|
for (const entry in EXPECTED_CI_CONFIG) {
|
||||||
|
if (!EXPECTED_CI_CONFIG.hasOwnProperty(entry)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isDeepStrictEqual(EXPECTED_CI_CONFIG[entry], ciConfig[entry])) {
|
||||||
|
consoleWarn(`Entry '${entry}' in ${pathToCiConfig} is incorrect. Expected value is:`);
|
||||||
|
consoleInfo(stringify((() => {
|
||||||
|
const completeEntry: any = {};
|
||||||
|
completeEntry[entry] = EXPECTED_CI_CONFIG[entry];
|
||||||
|
return completeEntry;
|
||||||
|
})()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
consoleWarn(`Could not parse ${pathToCiConfig} because of '${error.message}'.
|
||||||
|
Please ensure consistency of CI config manually.`);
|
||||||
|
consoleInfo(stringify(EXPECTED_CI_CONFIG));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (packageJsonChanged) {
|
if (packageJsonChanged) {
|
||||||
writeFileSync(resolve(path, 'package.json'), JSON.stringify(packageJson, null, 2));
|
writeFileSync(resolve(path, 'package.json'), JSON.stringify(packageJson, null, 2));
|
||||||
consoleLog(`Changes were written to "${packageJsonPath}".`);
|
consoleLog(`Changes were written to "${packageJsonPath}".`);
|
||||||
|
|||||||
@@ -72,3 +72,52 @@ export const EXPECTED_LICENSES = [
|
|||||||
'AGPL-3.0-only',
|
'AGPL-3.0-only',
|
||||||
'GPL-3.0-only',
|
'GPL-3.0-only',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/* tslint:disable:object-literal-sort-keys */
|
||||||
|
/**
|
||||||
|
* Expected values in CI config
|
||||||
|
*/
|
||||||
|
export const EXPECTED_CI_CONFIG: any = {
|
||||||
|
image: 'registry.gitlab.com/openstapps/projectmanagement/node',
|
||||||
|
cache: {
|
||||||
|
key: '${CI_COMMIT_REF_SLUG}',
|
||||||
|
paths: [
|
||||||
|
'node_modules',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
audit: {
|
||||||
|
allow_failure: true,
|
||||||
|
except: [
|
||||||
|
'schedules',
|
||||||
|
],
|
||||||
|
script: [
|
||||||
|
'npm audit',
|
||||||
|
],
|
||||||
|
stage: 'test',
|
||||||
|
},
|
||||||
|
'scheduled-audit': {
|
||||||
|
only: [
|
||||||
|
'schedules',
|
||||||
|
],
|
||||||
|
script: [
|
||||||
|
'npm audit',
|
||||||
|
],
|
||||||
|
stage: 'test',
|
||||||
|
},
|
||||||
|
pages: {
|
||||||
|
artifacts: {
|
||||||
|
'paths': [
|
||||||
|
'public',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
only: [
|
||||||
|
'/^v[0-9]+\\.[0-9]+\\.[0-9]+$/',
|
||||||
|
],
|
||||||
|
script: [
|
||||||
|
'npm run documentation',
|
||||||
|
'mv docs public',
|
||||||
|
],
|
||||||
|
stage: 'deploy',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
/* tslint:enable */
|
||||||
|
|||||||
Reference in New Issue
Block a user