Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schmid2019-11-16 00:54:46 +0000
committerMatthias Villiger2019-11-19 15:09:26 +0000
commit1068c2f35469aae8c8aa605147eda4f48b19ee5c (patch)
tree4777ee4268e2fe3239b00e9fdf18bccd2b599bcc /eclipse-scout-cli
parented5cf3ab872be4665895c8065ec32c31b605342b (diff)
downloadorg.eclipse.scout.rt-1068c2f35469aae8c8aa605147eda4f48b19ee5c.tar.gz
org.eclipse.scout.rt-1068c2f35469aae8c8aa605147eda4f48b19ee5c.tar.xz
org.eclipse.scout.rt-1068c2f35469aae8c8aa605147eda4f48b19ee5c.zip
create releng module
Signed-off-by: Daniel Schmid <Daniel.Schmid@bsiag.com>
Diffstat (limited to 'eclipse-scout-cli')
-rw-r--r--eclipse-scout-cli/bin/scout-scripts.js26
-rw-r--r--eclipse-scout-cli/package.json19
-rw-r--r--eclipse-scout-cli/scripts/snapshot-cleanup.js190
-rw-r--r--eclipse-scout-cli/scripts/updateVersion.js129
4 files changed, 11 insertions, 353 deletions
diff --git a/eclipse-scout-cli/bin/scout-scripts.js b/eclipse-scout-cli/bin/scout-scripts.js
index 97cc7c46b9..b1d16993e1 100644
--- a/eclipse-scout-cli/bin/scout-scripts.js
+++ b/eclipse-scout-cli/bin/scout-scripts.js
@@ -56,32 +56,6 @@ switch (script) {
runWebpackWatch({mode: 'development'});
break;
}
- case 'snapshot-version': {
- const updateVersionScript = require('../scripts/updateVersion');
- updateVersionScript.generateSnapshotVersion()
- .then(() => console.log('snapshot version done'))
- .catch(e => {
- console.error('snapshot version failed');
- console.error(e);
- process.exit(1);
- });
- break;
- }
- case 'release-version': {
- const updateVersionScript = require('../scripts/updateVersion');
- updateVersionScript.updateVersionAndDependencies()
- .then(() => console.log('Update version done'))
- .catch(e => {
- console.error('Update version failed');
- console.error(e);
- process.exit(1);
- });
- break;
- }
- case 'snapshot-cleanup': {
- require('../scripts/snapshot-cleanup');
- break;
- }
default:
console.log(`Unknown script "${script}"`);
break;
diff --git a/eclipse-scout-cli/package.json b/eclipse-scout-cli/package.json
index fc0146047a..b6aa11fb16 100644
--- a/eclipse-scout-cli/package.json
+++ b/eclipse-scout-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@eclipse-scout/cli",
- "version": "10.0.0",
+ "version": "10.0.0-snapshot",
"description": "CLI for Eclipse Scout",
"author": "BSI Business Systems Integration AG",
"homepage": "https://www.eclipse.org/scout",
@@ -22,9 +22,11 @@
"scripts"
],
"scripts": {
- "snapshot-version": "node bin/scout-scripts snapshot-version",
- "release-version": "node bin/scout-scripts release-version",
- "snapshot-cleanup": "node bin/scout-scripts snapshot-cleanup"
+ "snapshot-cleanup": "releng-scripts snapshot-cleanup",
+ "snapshot-predependency": "releng-scripts snapshot-install-dependency",
+ "snapshot-postdependency": "releng-scripts snapshot-publish-dependency",
+ "release-predependency": "releng-scripts release-install-dependency",
+ "release-postdependency": "releng-scripts release-publish-dependency"
},
"dependencies": {
"@babel/cli": "7.6.4",
@@ -33,7 +35,6 @@
"@babel/plugin-proposal-object-rest-spread": "7.6.2",
"@babel/plugin-transform-object-assign": "7.2.0",
"@babel/preset-env": "7.6.3",
- "axios": "0.19.0",
"babel-loader": "8.0.6",
"clean-webpack-plugin": "3.0.0",
"copy-webpack-plugin": "5.0.4",
@@ -44,7 +45,7 @@
"karma-jasmine": "2.0.1",
"karma-jasmine-jquery": "0.1.1",
"karma-jasmine-ajax": "0.1.13",
- "@eclipse-scout/karma-jasmine-scout": "^10.0.0-snapshot",
+ "@eclipse-scout/karma-jasmine-scout": "10.0.0-snapshot",
"karma-jasmine-html-reporter": "1.4.2",
"karma-junit-reporter": "2.0.1",
"karma-webpack": "4.0.2",
@@ -57,8 +58,10 @@
"webpack": "4.41.2",
"webpack-cli": "3.3.9",
"webpack-dev-server": "3.8.2",
- "webpack-shell-plugin": "0.5.0",
- "yargs": "14.2.0"
+ "webpack-shell-plugin": "0.5.0"
+ },
+ "devDependencies": {
+ "@eclipse-scout/releng": "10.0.0"
},
"bin": {
"scout-scripts": "./bin/scout-scripts.js"
diff --git a/eclipse-scout-cli/scripts/snapshot-cleanup.js b/eclipse-scout-cli/scripts/snapshot-cleanup.js
deleted file mode 100644
index df200bc8e8..0000000000
--- a/eclipse-scout-cli/scripts/snapshot-cleanup.js
+++ /dev/null
@@ -1,190 +0,0 @@
-#!/usr/bin/env node
-/*
- * Copyright (c) 2014-2019 BSI Business Systems Integration AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * BSI Business Systems Integration AG - initial API and implementation
- */
-
-const axios = require('axios');
-
-// Makes the script crash on unhandled rejections instead of silently
-// ignoring them. In the future, promise rejections that are not handled will
-// terminate the Node.js process with a non-zero exit code.
-process.on('unhandledRejection', err => {
- throw err;
-});
-
-const constructPath = (artifactoryUrl, item) => {
- if (item.path === '.') {
- return `${artifactoryUrl}/${item.repo}/${item.filename}`;
- }
- return `${artifactoryUrl}/${item.repo}/${item.path}/${item.filename}`;
-};
-
-const getScopeName = path => {
- const SCOPE_REGEX = /^@[\w-]+/g;
- return path.match(SCOPE_REGEX);
-};
-
-const getPackageName = itemName => {
- const NAME_REGEX = /-snapshot.*/gi;
- return itemName.replace(NAME_REGEX, '');
-};
-
-const getSnapshots = async (artifactoryUrl, repoName, config, verbose) => {
- const AQL_API = 'api/search/aql'; // use aql for search
- const searchUrl = `${artifactoryUrl}${AQL_API}`;
- const query = `items.find({"repo":"${repoName}","name":{"$match":"*snapshot.*tgz"}})`;
-
- const snapshotMap = new Map();
- const response = await axios.post(searchUrl, query, config);
- const data = response.data;
-
- if (verbose) {
- console.log('found items:\n' + JSON.stringify(data, null, 2));
- }
-
- if (data && data.results) {
- for (const item of data.results) {
- // group the snapshots by package and version to ensure that old versions wont be deleted e.g. groupName = @scout/cli-10.0.0
- const groupName = `${getScopeName(item.path)}/${getPackageName(item.name)}`;
-
- let groupSet = snapshotMap.get(groupName);
- if (!groupSet) {
- groupSet = new Set();
- snapshotMap.set(groupName, groupSet);
- }
- groupSet.add({
- groupName,
- filename: item.name,
- path: item.path,
- created: new Date(item.created),
- repo: item.repo
- });
- }
- }
- return snapshotMap;
-};
-
-const calculateItemsToDelete = async (itemMap, noToKeep) => {
- const toDelete = [];
- for (const itemSet of itemMap.values()) {
- // order the snapshots of each package by date and select the oldest items to delete
- const deleteItems = Array.from(itemSet)
- .sort((a, b) => b.created - a.created)
- .slice(noToKeep);
- toDelete.push(...deleteItems);
- }
- return toDelete;
-};
-
-const deleteItems = async (artifactoryUrl, items, config, dryrun) => {
- let success = true;
- if (!items || items.length === 0) {
- console.log('Nothing to cleanup');
- }
- for (const item of items) {
- const itemUrl = constructPath(artifactoryUrl, item);
- console.log(`delete: ${itemUrl}; ${dryrun ? 'dryrun=true' : ''}`);
- if (dryrun) {
- continue;
- }
- try {
- const response = await axios.delete(itemUrl, config);
- console.log(response.status);
- } catch (error) {
- success = false;
- console.error(`couldn't delete item: ${itemUrl}`);
- console.error(error);
- }
- }
-
- if (!success) {
- throw Error('Not every item could be deleted');
- }
-};
-
-const doCleanup = async () => {
- const yargs = require('yargs');
- const argv = yargs
- .option('apikey', {
- description: 'API Key for authentication',
- type: 'string'
- })
- .option('url', {
- description: 'URL of the artifactory',
- type: 'string'
- })
- .option('user', {
- description: 'username',
- type: 'string'
- })
- .option('pwd', {
- description: 'password',
- type: 'string'
- })
- .option('reponame', {
- description: 'name of the repository',
- type: 'string'
- })
- .option('dryrun', {
- description: 'If true, the command only indicates which artifacts would have been deleted.',
- type: 'boolean',
- default: false
- })
- .option('keep', {
- description: 'Number of Artifacts to keep',
- type: 'number',
- default: 5
- })
- .option('verbose', {
- description: 'More Logging',
- type: 'boolean',
- default: false
- })
- .argv;
-
- console.log(`Input arguments: url=${argv.url}; repo-name=${argv.reponame}; number of artifacts to keep=${argv.keep}; dry-run=${argv.dryrun}; verbose=${argv.verbose}`);
-
- if (!argv.reponame || !argv.url) {
- throw new Error('Please provide arguments for --url and --repo-name');
- }
-
- const headers = {
- 'Content-Type': 'text/plain'
- };
-
- if (argv.apikey) {
- headers['X-JFrog-Art-Api'] = argv.apikey;
- }
-
- const config = {
- headers: headers
- };
-
- if (!argv.apikey && argv.user && argv.pwd) {
- config.auth = {
- username: argv.user,
- password: argv.pwd
- };
- }
-
- const foundItems = await getSnapshots(argv.url, argv.reponame, config, argv.verbose);
- const itemsToDelete = await calculateItemsToDelete(foundItems, argv.keep);
- await deleteItems(argv.url, itemsToDelete, config, argv.dryrun);
-};
-
-doCleanup()
- .then(() => console.log('Repository cleanup done'))
- .catch(e => {
- console.error('Repository cleanup failed');
- console.error(e);
- process.exit(1);
- });
-
-
diff --git a/eclipse-scout-cli/scripts/updateVersion.js b/eclipse-scout-cli/scripts/updateVersion.js
deleted file mode 100644
index f56fee4bb1..0000000000
--- a/eclipse-scout-cli/scripts/updateVersion.js
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/env node
-/*
- * Copyright (c) 2010-2019 BSI Business Systems Integration AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * BSI Business Systems Integration AG - initial API and implementation
- */
-
-// Makes the script crash on unhandled rejections instead of silently
-// ignoring them. In the future, promise rejections that are not handled will
-// terminate the Node.js process with a non-zero exit code.
-process.on('unhandledRejection', err => {
- throw err;
-});
-
-const writeFile = async(fileName, file, verbose) => {
- const fsp = require('fs').promises;
- const stringified = JSON.stringify(file, null, 2);
- if (verbose) {
- console.log(`file: ${fileName}; new content:\n${stringified}`);
- }
- await fsp.writeFile(fileName, stringified);
- if (verbose) {
- console.log(`file ${fileName} saved`);
- }
-};
-
-const updateDepencies = (dependencies, regex, version, verbose) => {
- if (dependencies) {
- for (const moduleName of Object.keys(dependencies)) {
- if (regex.test(moduleName)) {
- if (verbose) {
- console.log(`updating dependency: ${moduleName}: ${version}`);
- }
- dependencies[moduleName] = version;
- }
- }
- }
-};
-
-const updateVersionAndDependencies = async() => {
- const yargs = require('yargs');
- const path = require('path');
- const argv = yargs
- .option('newVersion', {
- description: 'new version of the npm module',
- type: 'string'
- })
- .option('verbose', {
- description: 'More Logging',
- type: 'boolean',
- default: false
- })
- .argv;
-
- console.log(`Input arguments: new version=${argv.newVersion};verbose=${argv.verbose}`);
-
- if (!argv.newVersion) {
- throw new Error('Please provide arguments for --newVersion');
- }
-
- const fileName = './package.json';
- const packageJson = require(path.resolve(fileName));
-
- // update version of npm module
- packageJson.version = argv.newVersion;
-
- // --mapping.0.regex @eclipse-scout --mapping.0.version 10.0.2 creates an object mapping = {0: {regex: @eclipse-scout; version: 10.0.2}}
- if (argv.mapping) {
- for (const entry of Object.values(argv.mapping)) {
- if (!entry.regex || !entry.version) {
- throw new Error('Please provide arguments in the form of --mapping.0.regex and --mapping.0.version');
- }
-
- const regex = new RegExp(`^${entry.regex}`); // the module name should start with the regex
-
- if (argv.verbose) {
- console.log(`searching for dependencies with regex: ${regex} and updating to version=${entry.version}`);
- }
- updateDepencies(packageJson.dependencies, regex, entry.version, argv.verbose);
- updateDepencies(packageJson.devDependencies, regex, entry.version, argv.verbose);
- updateDepencies(packageJson.peerDependencies, regex, entry.version, argv.verbose);
- }
- }
-
- await writeFile(fileName, packageJson, argv.verbose);
-};
-
-const generateSnapshotVersion = async() => {
- const yargs = require('yargs');
- const path = require('path');
- const argv = yargs
- .option('verbose', {
- description: 'More Logging',
- type: 'boolean',
- default: false
- })
- .argv;
-
- const filename = './package.json';
- const packageJson = require(path.resolve(filename));
-
- let timestamp = new Date().toISOString(); // UTC
-
- // Create a string with the pattern yyyyMMddHHmmss
- timestamp = timestamp.replace(/[-:.TZ]/g, '');
- timestamp = timestamp.substr(0, timestamp.length - 3);
-
- const oldVersion = packageJson.version;
- const cleanedVersion = oldVersion.replace(/-snapshot(.)*/i, '');
- const newVersion = `${cleanedVersion}-snapshot.${timestamp}`;
-
- if (argv.verbose) {
- console.log(`old version was: ${oldVersion}`);
- }
- console.log(`New Version: ${newVersion}`);
- packageJson.version = newVersion;
-
- await writeFile(filename, packageJson, argv.verbose);
-};
-
-module.exports = {
- generateSnapshotVersion,
- updateVersionAndDependencies
-};

Back to the top