Compare commits

...

70 Commits

Author SHA1 Message Date
305fc6e68e 2.3.29 2016-11-25 22:44:51 +01:00
35a7a83ee6 fix global install of needed tools 2016-11-25 22:44:49 +01:00
165000144c 2.3.28 2016-11-25 22:34:32 +01:00
77a4cd7a12 now checking if tool already installed 2016-11-25 22:34:28 +01:00
9822a9c867 2.3.27 2016-11-25 14:29:11 +01:00
a1209c74dd 2.3.26 2016-11-25 14:15:48 +01:00
d9f517cf46 fix cli usage 2016-11-25 14:15:44 +01:00
1e976372fa 2.3.25 2016-11-25 13:43:38 +01:00
733a35b789 improve install handling of needed global tools 2016-11-25 13:43:35 +01:00
07deb7497a 2.3.24 2016-11-25 13:26:02 +01:00
2096e27fc5 fixed 16 file Buffer overflow 2016-11-25 13:25:45 +01:00
301a317fa0 update 2016-11-25 00:07:20 +01:00
299d2567f8 test 2016-11-24 23:21:40 +01:00
09c7dae079 2.3.23 2016-11-17 23:02:45 +01:00
19c118e166 fix gitlab-ci 2016-11-17 23:02:37 +01:00
c0a5057a0d 2.3.22 2016-11-15 22:47:23 +01:00
cfdce55c9b fixed node versions 2016-11-15 22:47:21 +01:00
a364fcb961 2.3.21 2016-11-15 21:57:42 +01:00
dfb8b43559 update node versions 2016-11-15 21:57:18 +01:00
3da8e60149 change to loglevel warn 2016-11-15 13:02:56 +01:00
509b97548c 2.3.20 2016-11-15 13:00:07 +01:00
6dda67bf37 add silent install 2016-11-15 12:59:36 +01:00
1e4dd1554c update script 2016-11-15 12:55:45 +01:00
4db221ea2d update tests 2016-11-15 00:18:32 +01:00
0e63c17fc2 2.3.19 2016-11-15 00:07:58 +01:00
0427368cfa update deps and node version 2016-11-15 00:07:55 +01:00
da180b090c 2.3.18 2016-09-20 12:43:42 +02:00
22d7e83b8d update node versions 2016-09-20 12:43:37 +02:00
bb910f9fab 2.3.17 2016-09-04 19:49:48 +02:00
420c39dd5f fix ci 2016-09-04 19:49:38 +02:00
7d4c80ed04 2.3.16 2016-09-04 17:57:00 +02:00
5858682946 improve typings 2016-09-04 17:56:56 +02:00
c4aa3a8926 update commnts 2016-09-04 16:05:47 +02:00
f0e62c06e8 2.3.15 2016-09-04 13:42:34 +02:00
61ee70ea8d update docs and comments, add servezone compatibility 2016-09-04 13:42:22 +02:00
66bef3cd60 2.3.14 2016-08-02 23:11:57 +02:00
28054b17fc update nvm detection 2016-08-02 23:11:42 +02:00
8736530920 2.3.13 2016-08-02 16:20:35 +02:00
2d9c225d28 start shift to making bare bash obsolete 2016-08-02 16:20:32 +02:00
236df3388f test 2016-07-18 19:18:19 +02:00
0406998e92 test 2016-07-18 18:55:34 +02:00
4e865e7bef test 2016-07-18 18:53:17 +02:00
62e4dd23d2 2.3.12 2016-07-18 18:51:34 +02:00
2962c5f8f9 now using global npmts 2016-07-18 18:50:58 +02:00
7e506b8e69 2.3.11 2016-07-18 18:43:07 +02:00
26400b8153 update base image for CI 2016-07-18 18:43:01 +02:00
a94e1771a4 2.3.10 2016-07-18 18:39:07 +02:00
0213afa46e updated setter for environment module to comply with JS standards 2016-07-18 18:39:04 +02:00
6f4138e536 2.3.9 2016-07-18 17:20:27 +02:00
5c5ca3ebf0 recompile 2016-07-18 17:20:24 +02:00
29ccf9d866 2.3.8 2016-07-18 17:18:58 +02:00
a68fc4050f now going node 6 all the way 2016-07-18 17:17:57 +02:00
2e965bcb46 2.3.7 2016-07-18 16:58:12 +02:00
73aceb4054 2.3.6 2016-07-18 16:57:52 +02:00
9f63fba3e2 switch to ES6 2016-07-18 16:56:53 +02:00
253d69254b prepare ES6 2016-07-18 16:47:42 +02:00
44e5d3758c 2.3.5 2016-06-29 23:59:21 +02:00
9fc142d931 2.3.4 2016-06-29 23:55:50 +02:00
f4c7c0b239 fix stable version 2016-06-29 23:55:38 +02:00
5c28561c1f 2.3.3 2016-06-29 23:18:55 +02:00
d0547a78dd updated versions 2016-06-29 23:18:51 +02:00
5438b7792f 2.3.2 2016-06-26 16:18:35 +02:00
35c9bd1aff updated dependencies 2016-06-26 16:18:17 +02:00
26a5766807 2.3.1 2016-06-26 05:21:29 +02:00
ab6b447d55 fix undefined error for docker registry 2016-06-26 05:21:24 +02:00
a2a7544797 2.3.0 2016-06-26 04:54:20 +02:00
83cd4e9a13 now has <clean> command 2016-06-26 04:54:10 +02:00
21b46dd939 cleanup 2016-06-26 04:45:00 +02:00
5b86db6f98 2.2.3 2016-06-26 04:41:04 +02:00
f091fb2452 fix some config issues and update to latest smartssh 2016-06-26 04:40:58 +02:00
70 changed files with 1588 additions and 1075 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
node_modules/ node_modules/
coverage/ coverage/
docs/ pages/
public/
config.json config.json

View File

@@ -1,17 +1,20 @@
image: hosttoday/ht-docker-node:lts image: node:latest
stages: stages:
- test - test
- release - release
- trigger - trigger
- page
before_script: before_script:
- npm install -g npmci - npm install npmci -q -g
testLTS: testLTS:
stage: test stage: test
script: script:
- npmci install lts
- npmci command npm install -g npmts
- npmci test lts - npmci test lts
tags: tags:
- docker - docker
@@ -19,6 +22,8 @@ testLTS:
testSTABLE: testSTABLE:
stage: test stage: test
script: script:
- npmci install stable
- npmci command npm install -g npmts
- npmci test stable - npmci test stable
tags: tags:
- docker - docker
@@ -26,6 +31,8 @@ testSTABLE:
testLEGACY: testLEGACY:
stage: test stage: test
script: script:
- npmci install legacy
- npmci command npm install -g npmts
- npmci test legacy - npmci test legacy
tags: tags:
- docker - docker
@@ -48,3 +55,16 @@ trigger:
- tags - tags
tags: tags:
- docker - docker
pages:
stage: page
script:
- npmci test stable
- npmci command npm install -g -q npmpage
- npmci command npmpage --host gitlab
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public

View File

@@ -1,4 +1,4 @@
docs/ pages/
coverage/ coverage/
test/ test/
node_modules/ node_modules/

View File

@@ -1,8 +1,20 @@
# NPMCI # NPMCI
npmci is your friend when it comes to handling npm packages during CI builds. It is optimized for GitLab CI npmci is your friend when it comes to handling npm packages during CI builds. It is optimized for GitLab CI
## Status ## Availabililty
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmci)
[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/npmci)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/npmci)
[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmci/docs)
## Status for master
[![build status](https://gitlab.com/pushrocks/npmci/badges/master/build.svg)](https://gitlab.com/pushrocks/npmci/commits/master) [![build status](https://gitlab.com/pushrocks/npmci/badges/master/build.svg)](https://gitlab.com/pushrocks/npmci/commits/master)
[![coverage report](https://gitlab.com/pushrocks/npmci/badges/master/coverage.svg)](https://gitlab.com/pushrocks/npmci/commits/master)
[![Dependency Status](https://david-dm.org/pushrocks/npmci.svg)](https://david-dm.org/pushrocks/npmci)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/npmci/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/npmci/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/npmci/badges/code.svg)](https://www.bithound.io/github/pushrocks/npmci)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
## Usage ## Usage
npmci is designed to work in docker CI environments. The following docker images come with npmci presinstalled: npmci is designed to work in docker CI environments. The following docker images come with npmci presinstalled:

View File

@@ -1,10 +0,0 @@
environment:
nodejs_version: "4"
install:
- ps: Install-Product node $env:nodejs_version
- npm install
test_script:
- node --version
- npm --version
- npm test
build: off

2
dist/cli.js vendored Normal file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env node
var index = require("../dist/index.js");

7
dist/index.d.ts vendored
View File

@@ -1,4 +1,3 @@
import "typings-global"; export { build } from './npmci.build';
export { build } from "./npmci.build"; export { install } from './npmci.install';
export { install } from "./npmci.install"; export { publish } from './npmci.publish';
export { publish } from "./npmci.publish";

67
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
import "typings-global"; export declare let nvmAvailable: boolean;
export declare let bash: (commandArg: string, retryArg?: number, bareArg?: boolean) => string; export declare let bash: (commandArg: string, retryArg?: number, bareArg?: boolean) => string;
export declare let bashBare: (commandArg: any, retryArg?: number) => string; export declare let bashBare: (commandArg: any, retryArg?: number) => string;

49
dist/npmci.bash.js vendored
View File

@@ -1,44 +1,51 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); let nvmSourceString = '';
exports.bash = function (commandArg, retryArg, bareArg) { exports.nvmAvailable = false;
if (retryArg === void 0) { retryArg = 2; } let checkNvm = () => {
if (bareArg === void 0) { bareArg = false; } if (plugins.shelljs.exec(`bash -c "source /usr/local/nvm/nvm.sh"`, { silent: true }).code === 0) {
var exitCode; nvmSourceString = `source /usr/local/nvm/nvm.sh && `;
var stdOut; exports.nvmAvailable = true;
var execResult; }
else if (plugins.shelljs.exec(`bash -c "source ~/.nvm/nvm.sh"`, { silent: true }).code === 0) {
nvmSourceString = `source ~/.nvm/nvm.sh && `;
exports.nvmAvailable = true;
}
;
};
checkNvm();
exports.bash = (commandArg, retryArg = 2, bareArg = false) => {
let exitCode;
let stdOut;
let execResult;
if (!process.env.NPMTS_TEST) { if (!process.env.NPMTS_TEST) {
for (var i = 0; i <= retryArg; i++) { for (let i = 0; i <= retryArg; i++) {
if (!bareArg) { if (!bareArg) {
execResult = plugins.shelljs.exec("bash -c \"source /usr/local/nvm/nvm.sh &&" + execResult = plugins.shelljs.exec(`bash -c "${nvmSourceString} ${commandArg}"`);
commandArg +
"\"");
} }
else { else {
execResult = plugins.shelljs.exec(commandArg); execResult = plugins.shelljs.exec(commandArg);
} }
exitCode = execResult.code; exitCode = execResult.code;
stdOut = execResult.stdout; stdOut = execResult.stdout;
if (exitCode !== 0 && i == retryArg) { if (exitCode !== 0 && i === retryArg) {
process.exit(1); process.exit(1);
} }
else if (exitCode == 0) { else if (exitCode === 0) {
i = retryArg + 1; // if everything works out ok retrials are not wanted i = retryArg + 1; // if everything works out ok retrials are not wanted
} }
else { else {
plugins.beautylog.warn("Something went wrong! Exit Code: " + exitCode.toString()); plugins.beautylog.warn('Something went wrong! Exit Code: ' + exitCode.toString());
plugins.beautylog.info("Retry " + (i + 1).toString() + " of " + retryArg.toString()); plugins.beautylog.info('Retry ' + (i + 1).toString() + ' of ' + retryArg.toString());
} }
} }
} }
else { else {
plugins.beautylog.log("ShellExec would be: " + commandArg.blue); plugins.beautylog.log('ShellExec would be: ' + commandArg);
} }
return stdOut; return stdOut;
}; };
exports.bashBare = function (commandArg, retryArg) { exports.bashBare = (commandArg, retryArg = 2) => {
if (retryArg === void 0) { retryArg = 2; }
return exports.bash(commandArg, retryArg, true); return exports.bash(commandArg, retryArg, true);
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmJhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUUxQyxJQUFJLGVBQWUsR0FBVyxFQUFFLENBQUE7QUFDckIsUUFBQSxZQUFZLEdBQVksS0FBSyxDQUFBO0FBQ3hDLElBQUksUUFBUSxHQUFHO0lBQ1gsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixlQUFlLEdBQUcsa0NBQWtDLENBQUE7UUFDcEQsb0JBQVksR0FBRyxJQUFJLENBQUE7SUFDdkIsQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLGVBQWUsR0FBRywwQkFBMEIsQ0FBQTtRQUM1QyxvQkFBWSxHQUFHLElBQUksQ0FBQTtJQUN2QixDQUFDO0lBQUEsQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUNELFFBQVEsRUFBRSxDQUFBO0FBRUMsUUFBQSxJQUFJLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLEtBQUs7SUFDaEUsSUFBSSxRQUFnQixDQUFBO0lBQ3BCLElBQUksTUFBYyxDQUFBO0lBQ2xCLElBQUksVUFBVSxDQUFBO0lBQ2QsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM3QixZQUFZLGVBQWUsSUFBSSxVQUFVLEdBQUcsQ0FDL0MsQ0FBQTtZQUNMLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDakQsQ0FBQztZQUNELFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFBO1lBQzFCLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO1lBQzFCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDbkIsQ0FBQztZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUEsQ0FBQyxxREFBcUQ7WUFDMUUsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO2dCQUNqRixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQ3hGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUE7QUFDakIsQ0FBQyxDQUFBO0FBRVUsUUFBQSxRQUFRLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxHQUFHLENBQUM7SUFDM0MsTUFBTSxDQUFDLFlBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzNDLENBQUMsQ0FBQSJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmJhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRWhDLFlBQUksR0FBRyxVQUFDLFVBQWlCLEVBQUMsUUFBWSxFQUFDLE9BQWU7SUFBNUIsd0JBQVksR0FBWixZQUFZO0lBQUMsdUJBQWUsR0FBZixlQUFlO0lBQzdELElBQUksUUFBZSxDQUFDO0lBQ3BCLElBQUksTUFBYSxDQUFDO0lBQ2xCLElBQUksVUFBVSxDQUFDO0lBQ2YsRUFBRSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDeEIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUMsQ0FBQztZQUNoQyxFQUFFLENBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUM7Z0JBQ1QsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM3QiwyQ0FBMkM7b0JBQzNDLFVBQVU7b0JBQ1YsSUFBSSxDQUNQLENBQUM7WUFDTixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMzQixNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMzQixFQUFFLENBQUEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQ3JCLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMscURBQXFEO1lBQzNFLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sR0FBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMxRixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUE7QUFFVSxnQkFBUSxHQUFHLFVBQUMsVUFBVSxFQUFDLFFBQVk7SUFBWix3QkFBWSxHQUFaLFlBQVk7SUFDMUMsTUFBTSxDQUFDLFlBQUksQ0FBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQSIsImZpbGUiOiJucG1jaS5iYXNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuXG5leHBvcnQgbGV0IGJhc2ggPSAoY29tbWFuZEFyZzpzdHJpbmcscmV0cnlBcmcgPSAyLGJhcmVBcmcgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBleGl0Q29kZTpudW1iZXI7XG4gICAgbGV0IHN0ZE91dDpzdHJpbmc7XG4gICAgbGV0IGV4ZWNSZXN1bHQ7XG4gICAgaWYoIXByb2Nlc3MuZW52Lk5QTVRTX1RFU1Qpe1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSByZXRyeUFyZzsgaSsrKXtcbiAgICAgICAgICAgIGlmKCFiYXJlQXJnKXtcbiAgICAgICAgICAgICAgICBleGVjUmVzdWx0ID0gcGx1Z2lucy5zaGVsbGpzLmV4ZWMoXG4gICAgICAgICAgICAgICAgICAgIFwiYmFzaCAtYyBcXFwic291cmNlIC91c3IvbG9jYWwvbnZtL252bS5zaCAmJlwiICtcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEFyZyArXG4gICAgICAgICAgICAgICAgICAgIFwiXFxcIlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhlY1Jlc3VsdCA9IHBsdWdpbnMuc2hlbGxqcy5leGVjKGNvbW1hbmRBcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhpdENvZGUgPSBleGVjUmVzdWx0LmNvZGU7XG4gICAgICAgICAgICBzdGRPdXQgPSBleGVjUmVzdWx0LnN0ZG91dDtcbiAgICAgICAgICAgIGlmKGV4aXRDb2RlICE9PSAwICYmIGkgPT0gcmV0cnlBcmcpe1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZihleGl0Q29kZSA9PSAwKXtcbiAgICAgICAgICAgICAgICBpID0gcmV0cnlBcmcgKyAxOyAvLyBpZiBldmVyeXRoaW5nIHdvcmtzIG91dCBvayByZXRyaWFscyBhcmUgbm90IHdhbnRlZFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy53YXJuKFwiU29tZXRoaW5nIHdlbnQgd3JvbmchIEV4aXQgQ29kZTogXCIgKyBleGl0Q29kZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5pbmZvKFwiUmV0cnkgXCIgKyAoaSArIDEpLnRvU3RyaW5nKCkgKyBcIiBvZiBcIiArICByZXRyeUFyZy50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmxvZyhcIlNoZWxsRXhlYyB3b3VsZCBiZTogXCIgKyBjb21tYW5kQXJnLmJsdWUpXG4gICAgfVxuICAgIHJldHVybiBzdGRPdXQ7XG59XG5cbmV4cG9ydCBsZXQgYmFzaEJhcmUgPSAoY29tbWFuZEFyZyxyZXRyeUFyZyA9IDIpID0+IHtcbiAgICByZXR1cm4gYmFzaChjb21tYW5kQXJnLHJldHJ5QXJnLHRydWUpO1xufSJdfQ==

12
dist/npmci.build.d.ts vendored
View File

@@ -1,2 +1,10 @@
import "typings-global"; /// <reference types="q" />
export declare let build: (commandArg: any) => any; import * as plugins from './npmci.plugins';
/**
* defines possible build services
*/
export declare type TBuildService = 'docker';
/**
* builds for a specific service
*/
export declare let build: (commandArg: any) => plugins.q.Promise<any>;

View File

@@ -1,11 +1,46 @@
export declare let build: () => any; /// <reference types="q" />
export declare let readDockerfiles: () => any; /// <reference types="node" />
export declare let sortDockerfiles: (sortableArrayArg: Dockerfile[]) => any; import * as plugins from './npmci.plugins';
export declare let mapDockerfiles: (sortedArray: Dockerfile[]) => any; /**
export declare let buildDockerfiles: (sortedArrayArg: Dockerfile[]) => any; * builds a cwd of Dockerfiles by triggering a promisechain
export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[]) => any; */
export declare let pullDockerfileImages: (sortableArrayArg: Dockerfile[], registryArg?: string) => any; export declare let build: () => plugins.q.Promise<{}>;
export declare let testDockerfiles: (sortedArrayArg: Dockerfile[]) => any; /**
* creates instance of class Dockerfile for all Dockerfiles in cwd
* @returns Promise<Dockerfile[]>
*/
export declare let readDockerfiles: () => plugins.q.Promise<Dockerfile[]>;
/**
* sorts Dockerfiles into a dependency chain
* @param sortableArrayArg an array of instances of class Dockerfile
* @returns Promise<Dockerfile[]>
*/
export declare let sortDockerfiles: (sortableArrayArg: Dockerfile[]) => plugins.q.Promise<Dockerfile[]>;
/**
* maps local Dockerfiles dependencies to the correspoding Dockerfile class instances
*/
export declare let mapDockerfiles: (sortedArray: Dockerfile[]) => plugins.q.Promise<Dockerfile[]>;
/**
* builds the correspoding real docker image for each Dockerfile class instance
*/
export declare let buildDockerfiles: (sortedArrayArg: Dockerfile[]) => plugins.q.Promise<{}>;
/**
* pushes the real Dockerfile images to a Docker registry
*/
export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[]) => plugins.q.Promise<{}>;
/**
* pulls corresponding real Docker images for instances of Dockerfile from a registry.
* This is needed if building, testing, and publishing of Docker images is carried out in seperate CI stages.
*/
export declare let pullDockerfileImages: (sortableArrayArg: Dockerfile[], registryArg?: string) => plugins.q.Promise<{}>;
/**
* tests all Dockerfiles in by calling class Dockerfile.test();
* @param sortedArrayArg Dockerfile[] that contains all Dockerfiles in cwd
*/
export declare let testDockerfiles: (sortedArrayArg: Dockerfile[]) => plugins.q.Promise<{}>;
/**
* class Dockerfile represents a Dockerfile on disk in npmci
*/
export declare class Dockerfile { export declare class Dockerfile {
filePath: string; filePath: string;
repo: string; repo: string;
@@ -24,13 +59,40 @@ export declare class Dockerfile {
fileContents?: string | Buffer; fileContents?: string | Buffer;
read?: boolean; read?: boolean;
}); });
build(): any; /**
push(stageArg: any): any; * builds the Dockerfile
*/
build(): plugins.q.Promise<{}>;
/**
* pushes the Dockerfile to a registry
*/
push(stageArg: any): plugins.q.Promise<{}>;
/**
* pulls the Dockerfile from a registry
*/
pull(registryArg: string): void; pull(registryArg: string): void;
/**
* tests the Dockerfile;
*/
test(): void; test(): void;
/**
* gets the id of a Dockerfile
*/
getId(): string; getId(): string;
} }
/**
*
*/
export declare let dockerFileVersion: (dockerfileNameArg: string) => string; export declare let dockerFileVersion: (dockerfileNameArg: string) => string;
/**
*
*/
export declare let dockerBaseImage: (dockerfileContentArg: string) => string; export declare let dockerBaseImage: (dockerfileContentArg: string) => string;
/**
*
*/
export declare let dockerTag: (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string) => string; export declare let dockerTag: (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string) => string;
/**
*
*/
export declare let cleanTagsArrayFunction: (dockerfileArrayArg: Dockerfile[], trackingArrayArg: Dockerfile[]) => string[]; export declare let cleanTagsArrayFunction: (dockerfileArrayArg: Dockerfile[], trackingArrayArg: Dockerfile[]) => string[];

File diff suppressed because one or more lines are too long

17
dist/npmci.build.js vendored
View File

@@ -1,14 +1,17 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); const buildDocker = require("./npmci.build.docker");
var buildDocker = require("./npmci.build.docker"); /**
* builds for a specific service
*/
exports.build = function (commandArg) { exports.build = function (commandArg) {
switch (commandArg) { switch (commandArg) {
case "docker": case 'docker':
return buildDocker.build(); return buildDocker.build();
default: default:
plugins.beautylog.log("build target " + commandArg + " not recognised!"); plugins.beautylog.log('build target ' + commandArg + ' not recognised!');
} }
;
return;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBRzFDLG9EQUFtRDtBQU9uRDs7R0FFRztBQUNRLFFBQUEsS0FBSyxHQUFHLFVBQVMsVUFBVTtJQUNsQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDOUI7WUFDSSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUE7SUFDaEYsQ0FBQztJQUFBLENBQUM7SUFDRixNQUFNLENBQUE7QUFDVixDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmJ1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsSUFBWSxPQUFPLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUczQyxJQUFZLFdBQVcsV0FBTSxzQkFFN0IsQ0FBQyxDQUZrRDtBQUV4QyxhQUFLLEdBQUcsVUFBUyxVQUFVO0lBQ2xDLE1BQU0sQ0FBQSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDZixLQUFLLFFBQVE7WUFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CO1lBQ0ksT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7QUFDTCxDQUFDLENBQUEiLCJmaWxlIjoibnBtY2kuYnVpbGQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLWdsb2JhbFwiO1xuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi9ucG1jaS5wbHVnaW5zXCI7XG5pbXBvcnQge2Jhc2h9IGZyb20gXCIuL25wbWNpLmJhc2hcIjtcbmltcG9ydCAqIGFzIGVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcbmltcG9ydCAqIGFzIGJ1aWxkRG9ja2VyIGZyb20gXCIuL25wbWNpLmJ1aWxkLmRvY2tlclwiXG5cbmV4cG9ydCBsZXQgYnVpbGQgPSBmdW5jdGlvbihjb21tYW5kQXJnKXtcbiAgICBzd2l0Y2goY29tbWFuZEFyZyl7XG4gICAgICAgIGNhc2UgXCJkb2NrZXJcIjpcbiAgICAgICAgICAgIHJldHVybiBidWlsZERvY2tlci5idWlsZCgpOyAgIFxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cubG9nKFwiYnVpbGQgdGFyZ2V0IFwiICsgY29tbWFuZEFyZyArIFwiIG5vdCByZWNvZ25pc2VkIVwiKTtcbiAgICB9XG59XG5cblxuXG4iXX0=

6
dist/npmci.clean.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
/// <reference types="q" />
import * as plugins from './npmci.plugins';
/**
* cleans npmci config files
*/
export declare let clean: () => plugins.q.Promise<{}>;

13
dist/npmci.clean.js vendored Normal file
View File

@@ -0,0 +1,13 @@
"use strict";
const plugins = require("./npmci.plugins");
const paths = require("./npmci.paths");
/**
* cleans npmci config files
*/
exports.clean = () => {
let done = plugins.q.defer();
plugins.smartfile.fs.removeSync(paths.NpmciPackageConfig);
done.resolve();
return done.promise;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY2xlYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5jbGVhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBQzFDLHVDQUFzQztBQUV0Qzs7R0FFRztBQUNRLFFBQUEsS0FBSyxHQUFHO0lBQ2YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDekQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0=

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let command: () => any; import * as plugins from './npmci.plugins';
export declare let command: () => plugins.q.Promise<{}>;

23
dist/npmci.command.js vendored
View File

@@ -1,19 +1,18 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); const npmci_bash_1 = require("./npmci.bash");
var npmci_bash_1 = require("./npmci.bash"); exports.command = () => {
exports.command = function () { let done = plugins.q.defer();
var done = plugins.q.defer(); let wrappedCommand = '';
var wrappedCommand = ""; let argvArray = process.argv;
var argvArray = process.argv; for (let i = 3; i < argvArray.length; i++) {
for (var i = 3; i < argvArray.length; i++) {
wrappedCommand = wrappedCommand + argvArray[i]; wrappedCommand = wrappedCommand + argvArray[i];
if (i + 1 != argvArray.length) if (i + 1 !== argvArray.length) {
wrappedCommand = wrappedCommand + " "; wrappedCommand = wrappedCommand + ' ';
}
} }
npmci_bash_1.bash(wrappedCommand); npmci_bash_1.bash(wrappedCommand);
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQyw2Q0FBaUM7QUFFdEIsUUFBQSxPQUFPLEdBQUc7SUFDakIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLGNBQWMsR0FBVyxFQUFFLENBQUE7SUFDL0IsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtJQUM1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxjQUFjLEdBQUcsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQUMsY0FBYyxHQUFHLGNBQWMsR0FBRyxHQUFHLENBQUE7UUFBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxpQkFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUV2QixlQUFPLEdBQUc7SUFDakIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLGNBQWMsR0FBVSxFQUFFLENBQUM7SUFDL0IsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUM3QixHQUFHLENBQUEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUMsQ0FBQztRQUN0QyxjQUFjLEdBQUcsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxFQUFFLENBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFBQyxjQUFjLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsaUJBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEiLCJmaWxlIjoibnBtY2kuY29tbWFuZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcbmltcG9ydCB7YmFzaH0gZnJvbSBcIi4vbnBtY2kuYmFzaFwiO1xuXG5leHBvcnQgbGV0IGNvbW1hbmQgPSAoKSA9PiB7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKVxuICAgIGxldCB3cmFwcGVkQ29tbWFuZDpzdHJpbmcgPSBcIlwiO1xuICAgIGxldCBhcmd2QXJyYXkgPSBwcm9jZXNzLmFyZ3Y7XG4gICAgZm9yKGxldCBpID0gMzsgaSA8IGFyZ3ZBcnJheS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHdyYXBwZWRDb21tYW5kID0gd3JhcHBlZENvbW1hbmQgKyBhcmd2QXJyYXlbaV07XG4gICAgICAgIGlmKGkgKyAxICE9IGFyZ3ZBcnJheS5sZW5ndGgpIHdyYXBwZWRDb21tYW5kID0gd3JhcHBlZENvbW1hbmQgKyBcIiBcIjsgXG4gICAgfVxuICAgIGJhc2god3JhcHBlZENvbW1hbmQpO1xuICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIHJldHVybiBkb25lLnByb21pc2Vcbn0iXX0=

6
dist/npmci.config.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
/// <reference types="q" />
import * as q from 'q';
export interface INpmciOptions {
globalNpmTools: string[];
}
export declare let getConfig: () => q.Promise<INpmciOptions>;

15
dist/npmci.config.js vendored Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
const q = require("q");
const plugins = require("./npmci.plugins");
const paths = require("./npmci.paths");
exports.getConfig = () => {
let done = q.defer();
let npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd);
let defaultConfig = {
globalNpmTools: []
};
let npmciConfig = npmciNpmextra.dataFor('npmci', defaultConfig);
done.resolve(npmciConfig);
return done.promise;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1QkFBc0I7QUFFdEIsMkNBQTBDO0FBQzFDLHVDQUFzQztBQU0zQixRQUFBLFNBQVMsR0FBRztJQUNuQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFpQixDQUFBO0lBQ25DLElBQUksYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVELElBQUksYUFBYSxHQUFrQjtRQUMvQixjQUFjLEVBQUUsRUFBRTtLQUNyQixDQUFBO0lBQ0QsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBZ0IsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQzlFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0=

15
dist/npmci.env.d.ts vendored
View File

@@ -1,10 +1,15 @@
import "typings-global"; import { GitRepo } from 'smartstring';
import { GitRepo } from "smartstring"; import { Dockerfile } from './npmci.build.docker';
import { Dockerfile } from "./npmci.build.docker";
export declare let repo: GitRepo; export declare let repo: GitRepo;
export declare let buildStage: string; export declare let buildStage: string;
export declare let dockerRegistry: any; export declare let dockerRegistry: string;
export declare let setDockerRegistry: (dockerRegistryArg: string) => void;
export declare let dockerFilesBuilt: Dockerfile[]; export declare let dockerFilesBuilt: Dockerfile[];
export declare let dockerFiles: Dockerfile[]; export declare let dockerFiles: Dockerfile[];
export declare let config: any; export declare let config: {
dockerRegistry: any;
dockerFilesBuilt: Dockerfile[];
dockerFiles: Dockerfile[];
project: any;
};
export declare let configStore: () => void; export declare let configStore: () => void;

42
dist/npmci.env.js vendored
View File

@@ -1,46 +1,48 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); const paths = require("./npmci.paths");
var paths = require("./npmci.paths"); const smartstring_1 = require("smartstring");
var smartstring_1 = require("smartstring");
if (process.env.CI_BUILD_REPO) if (process.env.CI_BUILD_REPO)
exports.repo = new smartstring_1.GitRepo(process.env.CI_BUILD_REPO); exports.repo = new smartstring_1.GitRepo(process.env.CI_BUILD_REPO);
exports.buildStage = process.env.CI_BUILD_STAGE; exports.buildStage = process.env.CI_BUILD_STAGE;
exports.setDockerRegistry = (dockerRegistryArg) => {
exports.dockerRegistry = dockerRegistryArg;
};
exports.dockerFilesBuilt = []; exports.dockerFilesBuilt = [];
exports.dockerFiles = []; exports.dockerFiles = [];
exports.configStore = function () { exports.config = {
var config = { dockerRegistry: undefined,
dockerRegistry: exports.dockerRegistry, dockerFilesBuilt: exports.dockerFilesBuilt,
dockerFilesBuilt: exports.dockerFilesBuilt, dockerFiles: exports.dockerFiles,
dockerFiles: exports.dockerFiles project: undefined
};
plugins.smartfile.memory.toFsSync(JSON.stringify(config), paths.NpmciPackageConfig);
}; };
var configLoad = function () { exports.configStore = () => {
exports.config.dockerRegistry = exports.dockerRegistry;
plugins.smartfile.memory.toFsSync(JSON.stringify(exports.config), paths.NpmciPackageConfig);
};
let configLoad = () => {
// internal config to transfer information in between npmci shell calls // internal config to transfer information in between npmci shell calls
try { try {
exports.config = plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig, "json"); plugins.lodash.assign(exports.config, plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig, 'json'));
} }
catch (err) { catch (err) {
exports.config = {};
exports.configStore(); exports.configStore();
plugins.beautylog.log("config initialized!"); plugins.beautylog.log('config initialized!');
} }
// project config // project config
try { try {
if (!exports.config.project) { if (!exports.config.project) {
exports.config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir, "npmci.json"); exports.config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir, 'npmci.json');
plugins.beautylog.ok("project config found!"); plugins.beautylog.ok('project config found!');
} }
; ;
} }
catch (err) { catch (err) {
exports.config.project = {}; exports.config.project = {};
plugins.beautylog.log("no project config found, so proceeding with default behaviour!"); plugins.beautylog.log('no project config found, so proceeding with default behaviour!');
} }
exports.config.dockerRegistry ? exports.dockerRegistry = exports.config.dockerRegistry : void (0); exports.config.dockerRegistry ? exports.dockerRegistry = exports.config.dockerRegistry : void (0);
exports.config.dockerFilesBuilt ? exports.dockerFilesBuilt = exports.config.dockerFilesBuilt : void (0); exports.config.dockerFilesBuilt ? exports.dockerFilesBuilt = exports.config.dockerFilesBuilt : void (0);
}; };
configLoad(); configLoad();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMEM7QUFDMUMsdUNBQXNDO0FBQ3RDLDZDQUFtQztBQUluQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUFDLFlBQUksR0FBRyxJQUFJLHFCQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUVqRSxRQUFBLFVBQVUsR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQTtBQUkvQyxRQUFBLGlCQUFpQixHQUFHLENBQUMsaUJBQXlCO0lBQ3JELHNCQUFjLEdBQUcsaUJBQWlCLENBQUE7QUFDdEMsQ0FBQyxDQUFBO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBaUIsRUFBRSxDQUFBO0FBQ25DLFFBQUEsV0FBVyxHQUFpQixFQUFFLENBQUE7QUFDOUIsUUFBQSxNQUFNLEdBQUc7SUFDaEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsZ0JBQWdCLEVBQUUsd0JBQWdCO0lBQ2xDLFdBQVcsRUFBRSxtQkFBVztJQUN4QixPQUFPLEVBQUUsU0FBUztDQUNyQixDQUFBO0FBRVUsUUFBQSxXQUFXLEdBQUc7SUFDckIsY0FBTSxDQUFDLGNBQWMsR0FBRyxzQkFBYyxDQUFBO0lBQ3RDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFNLENBQUMsRUFDdEIsS0FBSyxDQUFDLGtCQUFrQixDQUMzQixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQUc7SUFDYix1RUFBdUU7SUFDdkUsSUFBSSxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBTSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNwRyxDQUNBO0lBQUEsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNULG1CQUFXLEVBQUUsQ0FBQTtRQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixJQUFJLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLGNBQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUMsWUFBWSxDQUFDLENBQUE7WUFDdEYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUNqRCxDQUFDO1FBQUEsQ0FBQztJQUNOLENBQ0E7SUFBQSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ1QsY0FBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBRUQsY0FBTSxDQUFDLGNBQWMsR0FBRyxzQkFBYyxHQUFHLGNBQU0sQ0FBQyxjQUFjLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLGNBQU0sQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBZ0IsR0FBRyxjQUFNLENBQUMsZ0JBQWdCLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2xGLENBQUMsQ0FBQTtBQUNELFVBQVUsRUFBRSxDQUFBIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmVudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLElBQVksT0FBTyxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFDM0MsSUFBWSxLQUFLLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFDdkMsNEJBQXNCLGFBQWEsQ0FBQyxDQUFBO0FBSXBDLEVBQUUsQ0FBQSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQUMsWUFBSSxHQUFHLElBQUkscUJBQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRWpFLGtCQUFVLEdBQVUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7QUFJL0Msd0JBQWdCLEdBQWdCLEVBQUUsQ0FBQztBQUNuQyxtQkFBVyxHQUFnQixFQUFFLENBQUM7QUFHOUIsbUJBQVcsR0FBRztJQUNyQixJQUFJLE1BQU0sR0FBRztRQUNULGNBQWMsRUFBRSxzQkFBYztRQUM5QixnQkFBZ0IsRUFBRSx3QkFBZ0I7UUFDbEMsV0FBVyxFQUFFLG1CQUFXO0tBQzNCLENBQUE7SUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQ3RCLEtBQUssQ0FBQyxrQkFBa0IsQ0FDM0IsQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVELElBQUksVUFBVSxHQUFHO0lBQ2IsdUVBQXVFO0lBQ3ZFLElBQUksQ0FBQztRQUNELGNBQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hGLENBQ0E7SUFBQSxLQUFLLENBQUEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDO1FBQ1AsY0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLG1CQUFXLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixJQUFJLENBQUM7UUFDRCxFQUFFLENBQUEsQ0FBQyxDQUFDLGNBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDO1lBQ2hCLGNBQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQUEsQ0FBQztJQUNOLENBQ0E7SUFBQSxLQUFLLENBQUEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDO1FBQ1AsY0FBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsY0FBTSxDQUFDLGNBQWMsR0FBRyxzQkFBYyxHQUFHLGNBQU0sQ0FBQyxjQUFjLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLGNBQU0sQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBZ0IsR0FBRyxjQUFNLENBQUMsZ0JBQWdCLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQTtBQUNELFVBQVUsRUFBRSxDQUFDIiwiZmlsZSI6Im5wbWNpLmVudi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcbmltcG9ydCAqIGFzIHBhdGhzIGZyb20gXCIuL25wbWNpLnBhdGhzXCI7XG5pbXBvcnQge0dpdFJlcG99IGZyb20gXCJzbWFydHN0cmluZ1wiO1xuaW1wb3J0IHtEb2NrZXJmaWxlfSBmcm9tIFwiLi9ucG1jaS5idWlsZC5kb2NrZXJcIlxuXG5leHBvcnQgbGV0IHJlcG86R2l0UmVwbztcbmlmKHByb2Nlc3MuZW52LkNJX0JVSUxEX1JFUE8pIHJlcG8gPSBuZXcgR2l0UmVwbyhwcm9jZXNzLmVudi5DSV9CVUlMRF9SRVBPKTtcblxuZXhwb3J0IGxldCBidWlsZFN0YWdlOnN0cmluZyA9IHByb2Nlc3MuZW52LkNJX0JVSUxEX1NUQUdFO1xuXG4vLyBoYW5kbGluZyBjb25maWcgYmV0d2VlbiBjb21tYW5kc1xuZXhwb3J0IGxldCBkb2NrZXJSZWdpc3RyeTsgLy8gd2lsbCBiZSBzZXQgYnkgbnBtY2kucHJlcGFyZVxuZXhwb3J0IGxldCBkb2NrZXJGaWxlc0J1aWx0OkRvY2tlcmZpbGVbXSA9IFtdO1xuZXhwb3J0IGxldCBkb2NrZXJGaWxlczpEb2NrZXJmaWxlW10gPSBbXTtcbmV4cG9ydCBsZXQgY29uZmlnO1xuXG5leHBvcnQgbGV0IGNvbmZpZ1N0b3JlID0gKCkgPT4ge1xuICAgIGxldCBjb25maWcgPSB7XG4gICAgICAgIGRvY2tlclJlZ2lzdHJ5OiBkb2NrZXJSZWdpc3RyeSxcbiAgICAgICAgZG9ja2VyRmlsZXNCdWlsdDogZG9ja2VyRmlsZXNCdWlsdCxcbiAgICAgICAgZG9ja2VyRmlsZXM6IGRvY2tlckZpbGVzXG4gICAgfVxuICAgIHBsdWdpbnMuc21hcnRmaWxlLm1lbW9yeS50b0ZzU3luYyhcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSxcbiAgICAgICAgcGF0aHMuTnBtY2lQYWNrYWdlQ29uZmlnXG4gICAgKTtcbn1cblxubGV0IGNvbmZpZ0xvYWQgPSAoKSA9PiB7XG4gICAgLy8gaW50ZXJuYWwgY29uZmlnIHRvIHRyYW5zZmVyIGluZm9ybWF0aW9uIGluIGJldHdlZW4gbnBtY2kgc2hlbGwgY2FsbHNcbiAgICB0cnkge1xuICAgICAgICBjb25maWcgPSBwbHVnaW5zLnNtYXJ0ZmlsZS5mcy50b09iamVjdFN5bmMocGF0aHMuTnBtY2lQYWNrYWdlQ29uZmlnLFwianNvblwiKTtcbiAgICB9XG4gICAgY2F0Y2goZXJyKXtcbiAgICAgICAgY29uZmlnID0ge307XG4gICAgICAgIGNvbmZpZ1N0b3JlKCk7XG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmxvZyhcImNvbmZpZyBpbml0aWFsaXplZCFcIik7XG4gICAgfVxuXG4gICAgLy8gcHJvamVjdCBjb25maWdcbiAgICB0cnkge1xuICAgICAgICBpZighY29uZmlnLnByb2plY3Qpe1xuICAgICAgICAgICAgY29uZmlnLnByb2plY3QgPSBwbHVnaW5zLnNtYXJ0ZmlsZS5mcy50b09iamVjdFN5bmMocGF0aHMuTnBtY2lQcm9qZWN0RGlyLFwibnBtY2kuanNvblwiKTtcbiAgICAgICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLm9rKFwicHJvamVjdCBjb25maWcgZm91bmQhXCIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaChlcnIpe1xuICAgICAgICBjb25maWcucHJvamVjdCA9IHt9O1xuICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5sb2coXCJubyBwcm9qZWN0IGNvbmZpZyBmb3VuZCwgc28gcHJvY2VlZGluZyB3aXRoIGRlZmF1bHQgYmVoYXZpb3VyIVwiKTtcbiAgICB9XG4gICAgXG4gICAgY29uZmlnLmRvY2tlclJlZ2lzdHJ5ID8gZG9ja2VyUmVnaXN0cnkgPSBjb25maWcuZG9ja2VyUmVnaXN0cnkgOiB2b2lkKDApO1xuICAgIGNvbmZpZy5kb2NrZXJGaWxlc0J1aWx0ID8gZG9ja2VyRmlsZXNCdWlsdCA9IGNvbmZpZy5kb2NrZXJGaWxlc0J1aWx0IDogdm9pZCgwKTtcbn1cbmNvbmZpZ0xvYWQoKTsiXX0=

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let install: (versionArg: any) => any; import * as plugins from './npmci.plugins';
export declare let install: (versionArg: any) => plugins.q.Promise<{}>;

61
dist/npmci.install.js vendored
View File

@@ -1,28 +1,51 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); const configModule = require("./npmci.config");
var npmci_bash_1 = require("./npmci.bash"); const npmci_bash_1 = require("./npmci.bash");
exports.install = function (versionArg) { const npmci_bash_2 = require("./npmci.bash");
var done = plugins.q.defer(); exports.install = (versionArg) => {
plugins.beautylog.log("now installing " + "node ".green + ("version " + versionArg).yellow); let done = plugins.q.defer();
var version; plugins.beautylog.log(`now installing node version ${versionArg}`);
if (versionArg == "lts") { let version;
version = "4"; if (versionArg === 'stable') {
version = 'stable';
} }
else if (versionArg == "legacy") { else if (versionArg === 'lts') {
version = "0"; version = '6';
}
else if (versionArg === 'legacy') {
version = '6';
} }
else { else {
version = versionArg; version = versionArg;
} }
; ;
npmci_bash_1.bash("nvm install " + version + if (npmci_bash_2.nvmAvailable) {
" && nvm alias default " + version); npmci_bash_1.bash(`nvm install ${version} && nvm alias default ${version}`);
plugins.beautylog.success("Node version " + version + " successfully installed!"); plugins.beautylog.success(`Node version ${version} successfully installed!`);
npmci_bash_1.bash("node -v"); }
npmci_bash_1.bash("npm -v"); else {
done.resolve(); plugins.beautylog.warn('Nvm not in path so staying at installed node version!');
}
;
npmci_bash_1.bash('node -v');
npmci_bash_1.bash('npm -v');
// lets look for further config
configModule.getConfig()
.then(config => {
for (let npmTool of config.globalNpmTools) {
let whichOutput = npmci_bash_1.bash(`which ${npmTool}`);
let toolAvailable = !(/not found/.test(whichOutput));
if (toolAvailable) {
plugins.beautylog.log(`Tool ${npmTool} is available`);
}
else {
plugins.beautylog.info(`globally installing ${npmTool} from npm`);
npmci_bash_1.bash(`npm install ${npmTool} -q -g`);
}
}
done.resolve();
});
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmluc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQywrQ0FBOEM7QUFDOUMsNkNBQW1DO0FBQ25DLDZDQUEyQztBQUNoQyxRQUFBLE9BQU8sR0FBRyxDQUFDLFVBQVU7SUFDNUIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUNsRSxJQUFJLE9BQWUsQ0FBQTtJQUNuQixFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxQixPQUFPLEdBQUcsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQTtJQUNqQixDQUFDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxHQUFHLENBQUE7SUFDakIsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxHQUFHLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBQUEsQ0FBQztJQUNGLEVBQUUsQ0FBQyxDQUFDLHlCQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2YsaUJBQUksQ0FBQyxlQUFlLE9BQU8seUJBQXlCLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDOUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLE9BQU8sMEJBQTBCLENBQUMsQ0FBQTtJQUNoRixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFBO0lBQ25GLENBQUM7SUFBQSxDQUFDO0lBQ0YsaUJBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNmLGlCQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFZCwrQkFBK0I7SUFDL0IsWUFBWSxDQUFDLFNBQVMsRUFBRTtTQUNuQixJQUFJLENBQUMsTUFBTTtRQUNSLEdBQUcsQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksV0FBVyxHQUFHLGlCQUFJLENBQUMsU0FBUyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQzFDLElBQUksYUFBYSxHQUFZLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7WUFDN0QsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxPQUFPLGVBQWUsQ0FBQyxDQUFBO1lBQ3pELENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsT0FBTyxXQUFXLENBQUMsQ0FBQTtnQkFDakUsaUJBQUksQ0FBQyxlQUFlLE9BQU8sUUFBUSxDQUFDLENBQUE7WUFDeEMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmluc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUV2QixlQUFPLEdBQUcsVUFBQyxVQUFVO0lBQzVCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RixJQUFJLE9BQWMsQ0FBQztJQUNuQixFQUFFLENBQUEsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLENBQUEsQ0FBQztRQUNwQixPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUM7UUFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQTtJQUNqQixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFBQSxDQUFDO0lBQ0YsaUJBQUksQ0FDQSxjQUFjLEdBQUcsT0FBTztRQUN4Qix3QkFBd0IsR0FBRyxPQUFPLENBQ3JDLENBQUM7SUFDRixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsT0FBTyxHQUFHLDBCQUEwQixDQUFDLENBQUM7SUFDbEYsaUJBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQixpQkFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBIiwiZmlsZSI6Im5wbWNpLmluc3RhbGwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLWdsb2JhbFwiO1xuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi9ucG1jaS5wbHVnaW5zXCI7XG5pbXBvcnQge2Jhc2h9IGZyb20gXCIuL25wbWNpLmJhc2hcIjtcblxuZXhwb3J0IGxldCBpbnN0YWxsID0gKHZlcnNpb25BcmcpID0+IHtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHBsdWdpbnMuYmVhdXR5bG9nLmxvZyhcIm5vdyBpbnN0YWxsaW5nIFwiICsgXCJub2RlIFwiLmdyZWVuICsgKFwidmVyc2lvbiBcIiArIHZlcnNpb25BcmcpLnllbGxvdyk7XG4gICAgbGV0IHZlcnNpb246c3RyaW5nO1xuICAgIGlmKHZlcnNpb25BcmcgPT0gXCJsdHNcIil7XG4gICAgICAgIHZlcnNpb24gPSBcIjRcIjtcbiAgICB9IGVsc2UgaWYodmVyc2lvbkFyZyA9PSBcImxlZ2FjeVwiKXtcbiAgICAgICAgdmVyc2lvbiA9IFwiMFwiXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25Bcmc7XG4gICAgfTtcbiAgICBiYXNoKFxuICAgICAgICBcIm52bSBpbnN0YWxsIFwiICsgdmVyc2lvbiArXG4gICAgICAgIFwiICYmIG52bSBhbGlhcyBkZWZhdWx0IFwiICsgdmVyc2lvblxuICAgICk7XG4gICAgcGx1Z2lucy5iZWF1dHlsb2cuc3VjY2VzcyhcIk5vZGUgdmVyc2lvbiBcIiArIHZlcnNpb24gKyBcIiBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIVwiKTtcbiAgICBiYXNoKFwibm9kZSAtdlwiKTtcbiAgICBiYXNoKFwibnBtIC12XCIpO1xuICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59Il19

View File

@@ -1,4 +1,3 @@
import "typings-global";
export declare let cwd: string; export declare let cwd: string;
export declare let NpmciPackageRoot: string; export declare let NpmciPackageRoot: string;
export declare let NpmciPackageConfig: string; export declare let NpmciPackageConfig: string;

12
dist/npmci.paths.js vendored
View File

@@ -1,10 +1,8 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins");
exports.cwd = process.cwd(); exports.cwd = process.cwd();
exports.NpmciPackageRoot = plugins.path.join(__dirname, "../"); exports.NpmciPackageRoot = plugins.path.join(__dirname, '../');
exports.NpmciPackageConfig = plugins.path.join(exports.NpmciPackageRoot, "./config.json"); exports.NpmciPackageConfig = plugins.path.join(exports.NpmciPackageRoot, './config.json');
exports.NpmciProjectDir = exports.cwd; exports.NpmciProjectDir = exports.cwd;
exports.NpmciTestDir = plugins.path.join(exports.cwd, "./test"); exports.NpmciTestDir = plugins.path.join(exports.cwd, './test');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBRS9CLFFBQUEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtBQUVuQixRQUFBLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQTtBQUNyRCxRQUFBLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUFnQixFQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQ3hFLFFBQUEsZUFBZSxHQUFHLFdBQUcsQ0FBQTtBQUNyQixRQUFBLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFHLEVBQUMsUUFBUSxDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnBhdGhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsSUFBWSxPQUFPLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUVoQyxXQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRXBCLHdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCwwQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBZ0IsRUFBQyxlQUFlLENBQUMsQ0FBQztBQUN6RSx1QkFBZSxHQUFHLFdBQUcsQ0FBQztBQUN0QixvQkFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQUcsRUFBQyxRQUFRLENBQUMsQ0FBQyIsImZpbGUiOiJucG1jaS5wYXRocy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcblxuZXhwb3J0IGxldCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG5leHBvcnQgbGV0IE5wbWNpUGFja2FnZVJvb3QgPSBwbHVnaW5zLnBhdGguam9pbihfX2Rpcm5hbWUsXCIuLi9cIik7XG5leHBvcnQgbGV0IE5wbWNpUGFja2FnZUNvbmZpZyA9IHBsdWdpbnMucGF0aC5qb2luKE5wbWNpUGFja2FnZVJvb3QsXCIuL2NvbmZpZy5qc29uXCIpO1xuZXhwb3J0IGxldCBOcG1jaVByb2plY3REaXIgPSBjd2Q7XG5leHBvcnQgbGV0IE5wbWNpVGVzdERpciA9IHBsdWdpbnMucGF0aC5qb2luKGN3ZCxcIi4vdGVzdFwiKTsiXX0=

View File

@@ -1,15 +1,17 @@
import "typings-global"; export import beautylog = require('beautylog');
export import beautylog = require("beautylog");
export declare let gulp: any; export declare let gulp: any;
export declare let gulpFunction: any; export import gulpFunction = require('gulp-function');
export import path = require("path"); export import lodash = require('lodash');
export import projectinfo = require("projectinfo"); export import npmextra = require('npmextra');
export declare let q: any; export import path = require('path');
export import projectinfo = require('projectinfo');
export import q = require('q');
export declare let request: any; export declare let request: any;
export declare let shelljs: any; export import shelljs = require('shelljs');
export import smartcli = require("smartcli"); export import smartcli = require('smartcli');
export import smartfile = require("smartfile"); export import smartfile = require('smartfile');
export import smartparam = require("smartparam"); export import smartparam = require('smartparam');
export import smartssh = require("smartssh"); export import smartsocket = require('smartsocket');
export import smartstring = require("smartstring"); export import smartssh = require('smartssh');
export declare let through2: any; export import smartstring = require('smartstring');
export import through2 = require('through2');

11
dist/npmci.plugins.js vendored
View File

@@ -1,18 +1,19 @@
"use strict"; "use strict";
require("typings-global");
exports.beautylog = require("beautylog"); exports.beautylog = require("beautylog");
exports.gulp = require("gulp"); exports.gulp = require('gulp');
exports.gulpFunction = require("gulp-function"); exports.gulpFunction = require("gulp-function");
exports.lodash = require("lodash");
exports.npmextra = require("npmextra");
exports.path = require("path"); exports.path = require("path");
exports.projectinfo = require("projectinfo"); exports.projectinfo = require("projectinfo");
exports.q = require("q"); exports.q = require("q");
exports.request = require("request"); exports.request = require('request');
exports.shelljs = require("shelljs"); exports.shelljs = require("shelljs");
exports.smartcli = require("smartcli"); exports.smartcli = require("smartcli");
exports.smartfile = require("smartfile"); exports.smartfile = require("smartfile");
exports.smartparam = require("smartparam"); exports.smartparam = require("smartparam");
exports.smartsocket = require("smartsocket");
exports.smartssh = require("smartssh"); exports.smartssh = require("smartssh");
exports.smartstring = require("smartstring"); exports.smartstring = require("smartstring");
exports.through2 = require("through2"); exports.through2 = require("through2");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlDQUE4QztBQUNuQyxRQUFBLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDakMsZ0RBQXFEO0FBQ3JELG1DQUF3QztBQUN4Qyx1Q0FBNEM7QUFDNUMsK0JBQW9DO0FBQ3BDLDZDQUFrRDtBQUNsRCx5QkFBOEI7QUFDbkIsUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQ3ZDLHFDQUEwQztBQUMxQyx1Q0FBNEM7QUFDNUMseUNBQThDO0FBQzlDLDJDQUFnRDtBQUNoRCw2Q0FBa0Q7QUFDbEQsdUNBQTRDO0FBQzVDLDZDQUFrRDtBQUNsRCx1Q0FBNEMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUNWLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixvQkFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNyQyxZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDdkIsbUJBQVcsV0FBVyxhQUFhLENBQUMsQ0FBQztBQUN4QyxTQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGVBQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsZUFBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxQixnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsa0JBQVUsV0FBVyxZQUFZLENBQUMsQ0FBQztBQUNuQyxnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLG1CQUFXLFdBQVcsYUFBYSxDQUFDLENBQUM7QUFDeEMsZ0JBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMiLCJmaWxlIjoibnBtY2kucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5leHBvcnQgaW1wb3J0IGJlYXV0eWxvZyA9IHJlcXVpcmUoXCJiZWF1dHlsb2dcIik7XG5leHBvcnQgbGV0IGd1bHAgPSByZXF1aXJlKFwiZ3VscFwiKTtcbmV4cG9ydCBsZXQgZ3VscEZ1bmN0aW9uID0gcmVxdWlyZShcImd1bHAtZnVuY3Rpb25cIik7XG5leHBvcnQgaW1wb3J0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmV4cG9ydCBpbXBvcnQgcHJvamVjdGluZm8gPSByZXF1aXJlKFwicHJvamVjdGluZm9cIik7XG5leHBvcnQgbGV0IHEgPSByZXF1aXJlKFwicVwiKTtcbmV4cG9ydCBsZXQgcmVxdWVzdCA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xuZXhwb3J0IGxldCBzaGVsbGpzID0gcmVxdWlyZShcInNoZWxsanNcIik7XG5leHBvcnQgaW1wb3J0IHNtYXJ0Y2xpID0gcmVxdWlyZShcInNtYXJ0Y2xpXCIpO1xuZXhwb3J0IGltcG9ydCBzbWFydGZpbGUgPSByZXF1aXJlKFwic21hcnRmaWxlXCIpO1xuZXhwb3J0IGltcG9ydCBzbWFydHBhcmFtID0gcmVxdWlyZShcInNtYXJ0cGFyYW1cIik7XG5leHBvcnQgaW1wb3J0IHNtYXJ0c3NoID0gcmVxdWlyZShcInNtYXJ0c3NoXCIpO1xuZXhwb3J0IGltcG9ydCBzbWFydHN0cmluZyA9IHJlcXVpcmUoXCJzbWFydHN0cmluZ1wiKTtcbmV4cG9ydCBsZXQgdGhyb3VnaDIgPSByZXF1aXJlKFwidGhyb3VnaDJcIik7Il19

View File

@@ -1,2 +1,11 @@
import "typings-global"; /// <reference types="q" />
export declare let prepare: (serviceArg: string) => any; import * as plugins from './npmci.plugins';
/**
* defines possible prepare services
*/
export declare type TPrepService = 'npm' | 'docker' | 'docker-gitlab' | 'ssh';
/**
* the main exported prepare function
* @param servieArg describes the service to prepare
*/
export declare let prepare: (serviceArg: TPrepService) => plugins.q.Promise<{}>;

82
dist/npmci.prepare.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +1,11 @@
import "typings-global"; /// <reference types="q" />
export declare let publish: (serviceArg?: string) => any; import * as plugins from './npmci.plugins';
/**
* type of supported services
*/
export declare type TPubService = 'npm' | 'docker';
/**
* the main exported publish function.
* @param pubServiceArg references targeted service to publish to
*/
export declare let publish: (pubServiceArg?: TPubService) => plugins.q.Promise<{}>;

45
dist/npmci.publish.js vendored
View File

@@ -1,35 +1,42 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); const npmci_prepare_1 = require("./npmci.prepare");
var npmci_prepare_1 = require("./npmci.prepare"); const npmci_bash_1 = require("./npmci.bash");
var npmci_bash_1 = require("./npmci.bash"); const NpmciBuildDocker = require("./npmci.build.docker");
var NpmciBuildDocker = require("./npmci.build.docker"); /**
exports.publish = function (serviceArg) { * the main exported publish function.
if (serviceArg === void 0) { serviceArg = "npm"; } * @param pubServiceArg references targeted service to publish to
switch (serviceArg) { */
case "npm": exports.publish = (pubServiceArg = 'npm') => {
switch (pubServiceArg) {
case 'npm':
return publishNpm(); return publishNpm();
case "docker": case 'docker':
return publishDocker(); return publishDocker();
} }
}; };
var publishNpm = function () { /**
var done = plugins.q.defer(); * tries to publish current cwd to NPM registry
npmci_prepare_1.prepare("npm") */
let publishNpm = function () {
let done = plugins.q.defer();
npmci_prepare_1.prepare('npm')
.then(function () { .then(function () {
npmci_bash_1.bash("npm publish"); npmci_bash_1.bash('npm publish');
plugins.beautylog.ok("Done!"); plugins.beautylog.ok('Done!');
done.resolve(); done.resolve();
}); });
return done.promise; return done.promise;
}; };
var publishDocker = function () { /**
var done = plugins.q.defer(); * tries to pubish current cwd to Docker registry
*/
let publishDocker = function () {
let done = plugins.q.defer();
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.pushDockerfiles) .then(NpmciBuildDocker.pushDockerfiles)
.then(done.resolve); .then(done.resolve);
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQyxtREFBdUM7QUFDdkMsNkNBQWlDO0FBRWpDLHlEQUF3RDtBQU94RDs7O0dBR0c7QUFDUSxRQUFBLE9BQU8sR0FBRyxDQUFDLGdCQUE2QixLQUFLO0lBQ3BELE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDcEIsS0FBSyxLQUFLO1lBQ04sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLFVBQVUsR0FBSTtJQUNkLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsdUJBQU8sQ0FBQyxLQUFLLENBQUM7U0FDVCxJQUFJLENBQUM7UUFDRixpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQixDQUFDLENBQUMsQ0FBQTtJQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3RCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxhQUFhLEdBQUc7SUFDaEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUU7U0FDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1NBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7U0FDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDhCQUFzQixpQkFBaUIsQ0FBQyxDQUFBO0FBQ3hDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUVsQyxJQUFZLGdCQUFnQixXQUFNLHNCQUVsQyxDQUFDLENBRnVEO0FBRTdDLGVBQU8sR0FBRyxVQUFDLFVBQXlCO0lBQXpCLDBCQUF5QixHQUF6QixrQkFBeUI7SUFDM0MsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQztRQUNoQixLQUFLLEtBQUs7WUFDTixNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEIsS0FBSyxRQUFRO1lBQ1QsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixJQUFJLFVBQVUsR0FBSTtJQUNkLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsdUJBQU8sQ0FBQyxLQUFLLENBQUM7U0FDVCxJQUFJLENBQUM7UUFDRixpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFFO1FBQy9CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztJQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQTtBQUVELElBQUksYUFBYSxHQUFHO0lBQ2hCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsZ0JBQWdCLENBQUMsZUFBZSxFQUFFO1NBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztTQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1NBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDIiwiZmlsZSI6Im5wbWNpLnB1Ymxpc2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLWdsb2JhbFwiO1xuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi9ucG1jaS5wbHVnaW5zXCI7XG5pbXBvcnQge3ByZXBhcmV9IGZyb20gXCIuL25wbWNpLnByZXBhcmVcIjtcbmltcG9ydCB7YmFzaH0gZnJvbSBcIi4vbnBtY2kuYmFzaFwiO1xuaW1wb3J0ICogYXMgTnBtY2lFbnYgZnJvbSBcIi4vbnBtY2kuZW52XCI7XG5pbXBvcnQgKiBhcyBOcG1jaUJ1aWxkRG9ja2VyIGZyb20gXCIuL25wbWNpLmJ1aWxkLmRvY2tlclwiXG5cbmV4cG9ydCBsZXQgcHVibGlzaCA9IChzZXJ2aWNlQXJnOnN0cmluZyA9IFwibnBtXCIpID0+IHtcbiAgICBzd2l0Y2ggKHNlcnZpY2VBcmcpe1xuICAgICAgICBjYXNlIFwibnBtXCI6IFxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hOcG0oKTtcbiAgICAgICAgY2FzZSBcImRvY2tlclwiOlxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hEb2NrZXIoKTtcbiAgICB9XG59O1xuXG5sZXQgcHVibGlzaE5wbSAgPSBmdW5jdGlvbigpe1xuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XG4gICAgcHJlcGFyZShcIm5wbVwiKVxuICAgICAgICAudGhlbihmdW5jdGlvbigpe1xuICAgICAgICAgICAgYmFzaChcIm5wbSBwdWJsaXNoXCIpO1xuICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cub2soXCJEb25lIVwiKSA7XG4gICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgcHVibGlzaERvY2tlciA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICAgICAgTnBtY2lCdWlsZERvY2tlci5yZWFkRG9ja2VyZmlsZXMoKVxuICAgICAgICAudGhlbihOcG1jaUJ1aWxkRG9ja2VyLnB1bGxEb2NrZXJmaWxlSW1hZ2VzKVxuICAgICAgICAudGhlbihOcG1jaUJ1aWxkRG9ja2VyLnB1c2hEb2NrZXJmaWxlcylcbiAgICAgICAgLnRoZW4oZG9uZS5yZXNvbHZlKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufTsiXX0=

4
dist/npmci.servezone.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
/**
* the main run function to submit a service to a servezone
*/
export declare let run: (configArg: any) => void;

28
dist/npmci.servezone.js vendored Normal file
View File

@@ -0,0 +1,28 @@
"use strict";
const plugins = require("./npmci.plugins");
/**
* servezoneRegex is the regex that parses the servezone connection data
* parses strings in the form of "servezone.example.com|3000|somepassword"
*/
let servezoneRegex = /^(.*)\|(.*)\|(.*)/;
/**
* holds the results of the parsed servezone env string
*/
let servezoneRegexResultArray = servezoneRegex.exec(process.env.NPMCI_SERVEZONE);
/**
* the data object that is used for the smartsocket client object
*/
let smartsocketClientConstructorOptions = {
alias: 'npmci',
password: servezoneRegexResultArray[3],
port: parseInt(servezoneRegexResultArray[2]),
role: 'ci',
url: servezoneRegexResultArray[1]
};
/**
* the main run function to submit a service to a servezone
*/
exports.run = (configArg) => {
new plugins.smartsocket.SmartsocketClient(smartsocketClientConstructorOptions);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuc2VydmV6b25lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuc2VydmV6b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMEM7QUFFMUM7OztHQUdHO0FBQ0gsSUFBSSxjQUFjLEdBQUcsbUJBQW1CLENBQUE7QUFFeEM7O0dBRUc7QUFDSCxJQUFJLHlCQUF5QixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUVoRjs7R0FFRztBQUNILElBQUksbUNBQW1DLEdBQUc7SUFDdEMsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLElBQUksRUFBRSxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDO0NBQ3BDLENBQUE7QUFFRDs7R0FFRztBQUNRLFFBQUEsR0FBRyxHQUFHLENBQUMsU0FBUztJQUN2QixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQ3JDLG1DQUFtQyxDQUN0QyxDQUFBO0FBQ0wsQ0FBQyxDQUFBIn0=

8
dist/npmci.ssh.d.ts vendored
View File

@@ -1,2 +1,6 @@
import "typings-global"; /// <reference types="q" />
export declare let ssh: () => any; import * as plugins from './npmci.plugins';
/**
* checks for ENV vars in form of NPMCI_SSHKEY_* and deploys any found ones
*/
export declare let ssh: () => plugins.q.Promise<{}>;

47
dist/npmci.ssh.js vendored
View File

@@ -1,44 +1,51 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); let sshRegex = /^(.*)\|(.*)\|(.*)/;
var sshRegex = /^(.*)\|(.*)\|(.*)/; let sshInstance;
var sshInstance; /**
exports.ssh = function () { * checks for ENV vars in form of NPMCI_SSHKEY_* and deploys any found ones
var done = plugins.q.defer(); */
sshInstance = new plugins.smartssh.SshInstance(); exports.ssh = () => {
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_SSHKEY_*", evaluateSshEnv); let done = plugins.q.defer();
sshInstance = new plugins.smartssh.SshInstance(); // init ssh instance
plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_SSHKEY_*', evaluateSshEnv);
if (!process.env.NPMTS_TEST) { if (!process.env.NPMTS_TEST) {
sshInstance.writeToDisk(); sshInstance.writeToDisk();
} }
else { else {
plugins.beautylog.log("In test mode, so not storing SSH keys to disk!"); plugins.beautylog.log('In test mode, so not storing SSH keys to disk!');
} }
; ;
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
var evaluateSshEnv = function (sshkeyEnvVarArg) { /**
var resultArray = sshRegex.exec(sshkeyEnvVarArg); * gets called for each found SSH ENV Var and deploys it
var sshKey = new plugins.smartssh.SshKey(); */
plugins.beautylog.info("Found SSH identity for " + resultArray[1]); let evaluateSshEnv = (sshkeyEnvVarArg) => {
let resultArray = sshRegex.exec(sshkeyEnvVarArg);
let sshKey = new plugins.smartssh.SshKey();
plugins.beautylog.info('Found SSH identity for ' + resultArray[1]);
if (notUndefined(resultArray[1])) { if (notUndefined(resultArray[1])) {
plugins.beautylog.log("---> host defined!"); plugins.beautylog.log('---> host defined!');
sshKey.host = resultArray[1]; sshKey.host = resultArray[1];
} }
if (notUndefined(resultArray[2])) { if (notUndefined(resultArray[2])) {
plugins.beautylog.log("---> privKey defined!"); plugins.beautylog.log('---> privKey defined!');
sshKey.privKeyBase64 = resultArray[2]; sshKey.privKeyBase64 = resultArray[2];
} }
; ;
if (notUndefined(resultArray[3])) { if (notUndefined(resultArray[3])) {
"---> pubKey defined!"; '---> pubKey defined!';
sshKey.pubKeyBase64 = resultArray[3]; sshKey.pubKeyBase64 = resultArray[3];
} }
; ;
sshInstance.addKey(sshKey); sshInstance.addKey(sshKey);
}; };
var notUndefined = function (stringArg) { /**
return (stringArg && stringArg != "undefined" && stringArg != "##"); * checks if not undefined
*/
let notUndefined = (stringArg) => {
return (stringArg && stringArg !== 'undefined' && stringArg !== '##');
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuc3NoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuc3NoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMEM7QUFFMUMsSUFBSSxRQUFRLEdBQUcsbUJBQW1CLENBQUE7QUFDbEMsSUFBSSxXQUF5QyxDQUFBO0FBRTdDOztHQUVHO0FBQ1EsUUFBQSxHQUFHLEdBQUc7SUFDYixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUEsQ0FBQyxvQkFBb0I7SUFDckUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLGdCQUFnQixFQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hGLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLGNBQWMsR0FBRyxDQUFDLGVBQWU7SUFDakMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUFBLENBQUM7SUFDRixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLHNCQUFzQixDQUFBO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFBQSxDQUFDO0lBRUYsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUM5QixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksWUFBWSxHQUFHLENBQUMsU0FBaUI7SUFDakMsTUFBTSxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFBO0FBQ3pFLENBQUMsQ0FBQSJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnNzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLElBQVksT0FBTyxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFM0MsSUFBSSxRQUFRLEdBQUcsbUJBQW1CLENBQUE7QUFDbEMsSUFBSSxXQUF3QyxDQUFDO0FBRWxDLFdBQUcsR0FBRztJQUNiLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqRCxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUMsZ0JBQWdCLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDakYsRUFBRSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDeEIsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUFBLENBQUM7SUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixJQUFJLGNBQWMsR0FBRyxVQUFDLGVBQWU7SUFDakMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0MsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsRUFBRSxDQUFBLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQztRQUM3QixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxFQUFFLENBQUEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUFBLENBQUM7SUFDRixFQUFFLENBQUEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO1FBQzdCLHNCQUFzQixDQUFBO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFBQSxDQUFDO0lBRUYsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixJQUFJLFlBQVksR0FBRyxVQUFDLFNBQWdCO0lBQ2hDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsSUFBSSxTQUFTLElBQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUEiLCJmaWxlIjoibnBtY2kuc3NoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuXG5sZXQgc3NoUmVnZXggPSAvXiguKilcXHwoLiopXFx8KC4qKS9cbmxldCBzc2hJbnN0YW5jZTpwbHVnaW5zLnNtYXJ0c3NoLlNzaEluc3RhbmNlO1xuXG5leHBvcnQgbGV0IHNzaCA9ICgpID0+IHtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHNzaEluc3RhbmNlID0gbmV3IHBsdWdpbnMuc21hcnRzc2guU3NoSW5zdGFuY2UoKTtcbiAgICBwbHVnaW5zLnNtYXJ0cGFyYW0uZm9yRWFjaE1pbmltYXRjaChwcm9jZXNzLmVudixcIk5QTUNJX1NTSEtFWV8qXCIsZXZhbHVhdGVTc2hFbnYpO1xuICAgIGlmKCFwcm9jZXNzLmVudi5OUE1UU19URVNUKXtcbiAgICAgICAgc3NoSW5zdGFuY2Uud3JpdGVUb0Rpc2soKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmxvZyhcIkluIHRlc3QgbW9kZSwgc28gbm90IHN0b3JpbmcgU1NIIGtleXMgdG8gZGlzayFcIik7XG4gICAgfTtcbiAgICBkb25lLnJlc29sdmUoKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufTtcblxubGV0IGV2YWx1YXRlU3NoRW52ID0gKHNzaGtleUVudlZhckFyZykgPT4ge1xuICAgIGxldCByZXN1bHRBcnJheSA9IHNzaFJlZ2V4LmV4ZWMoc3Noa2V5RW52VmFyQXJnKTtcbiAgICBsZXQgc3NoS2V5ID0gbmV3IHBsdWdpbnMuc21hcnRzc2guU3NoS2V5KCk7XG4gICAgcGx1Z2lucy5iZWF1dHlsb2cuaW5mbyhcIkZvdW5kIFNTSCBpZGVudGl0eSBmb3IgXCIgKyByZXN1bHRBcnJheVsxXSk7XG4gICAgaWYobm90VW5kZWZpbmVkKHJlc3VsdEFycmF5WzFdKSl7XG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmxvZyhcIi0tLT4gaG9zdCBkZWZpbmVkIVwiKVxuICAgICAgICBzc2hLZXkuaG9zdCA9IHJlc3VsdEFycmF5WzFdO1xuICAgIH1cbiAgICBpZihub3RVbmRlZmluZWQocmVzdWx0QXJyYXlbMl0pKXtcbiAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cubG9nKFwiLS0tPiBwcml2S2V5IGRlZmluZWQhXCIpXG4gICAgICAgIHNzaEtleS5wcml2S2V5QmFzZTY0ID0gcmVzdWx0QXJyYXlbMl07XG4gICAgfTtcbiAgICBpZihub3RVbmRlZmluZWQocmVzdWx0QXJyYXlbM10pKXtcbiAgICAgICAgXCItLS0+IHB1YktleSBkZWZpbmVkIVwiXG4gICAgICAgIHNzaEtleS5wdWJLZXlCYXNlNjQgPSByZXN1bHRBcnJheVszXTtcbiAgICB9O1xuICAgIFxuICAgIHNzaEluc3RhbmNlLmFkZEtleShzc2hLZXkpO1xufTtcblxubGV0IG5vdFVuZGVmaW5lZCA9IChzdHJpbmdBcmc6c3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIChzdHJpbmdBcmcgJiYgc3RyaW5nQXJnICE9IFwidW5kZWZpbmVkXCIgJiYgc3RyaW5nQXJnICE9IFwiIyNcIik7XG59Il19

3
dist/npmci.tag.d.ts vendored
View File

@@ -1,3 +0,0 @@
import "typings-global";
export declare let tag: (commandOptionArg: any) => void;
export declare let retag: () => void;

8
dist/npmci.tag.js vendored
View File

@@ -1,8 +0,0 @@
"use strict";
require("typings-global");
exports.tag = function (commandOptionArg) {
};
exports.retag = function () {
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRhZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBTWIsV0FBRyxHQUFHLFVBQVMsZ0JBQWdCO0FBRTFDLENBQUMsQ0FBQTtBQUVVLGFBQUssR0FBRztBQUVuQixDQUFDLENBQUMiLCJmaWxlIjoibnBtY2kudGFnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuaW1wb3J0IHtwcmVwYXJlfSBmcm9tIFwiLi9ucG1jaS5wcmVwYXJlXCI7XG5pbXBvcnQge2Jhc2h9IGZyb20gXCIuL25wbWNpLmJhc2hcIjtcbmltcG9ydCAqIGFzIGVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcblxuZXhwb3J0IGxldCB0YWcgPSBmdW5jdGlvbihjb21tYW5kT3B0aW9uQXJnKXtcbiAgICBcbn1cblxuZXhwb3J0IGxldCByZXRhZyA9IGZ1bmN0aW9uKCl7XG4gICAgXG59O1xuIl19

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let test: (versionArg: any) => any; import * as plugins from './npmci.plugins';
export declare let test: (versionArg: any) => plugins.q.Promise<{}>;

View File

@@ -1 +0,0 @@
export declare let testDocker: () => void;

View File

@@ -1,5 +0,0 @@
"use strict";
exports.testDocker = function () {
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRlc3QuZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFLVyxrQkFBVSxHQUFHO0FBRXhCLENBQUMsQ0FBQyIsImZpbGUiOiJucG1jaS50ZXN0LmRvY2tlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiXG5pbXBvcnQgKiBhcyBOcG1jaUVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcbmltcG9ydCB7YmFzaEJhcmV9IGZyb20gXCIuL25wbWNpLmJhc2hcIjtcbmltcG9ydCAqIGFzIE5wbWNpQnVpbGREb2NrZXIgZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCI7XG5cbmV4cG9ydCBsZXQgdGVzdERvY2tlciA9ICgpID0+IHtcblxufTsiXX0=

42
dist/npmci.test.js vendored
View File

@@ -1,14 +1,13 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); const npmci_bash_1 = require("./npmci.bash");
var npmci_bash_1 = require("./npmci.bash"); const npmci_install_1 = require("./npmci.install");
var npmci_install_1 = require("./npmci.install"); const NpmciBuildDocker = require("./npmci.build.docker");
var NpmciBuildDocker = require("./npmci.build.docker"); exports.test = (versionArg) => {
exports.test = function (versionArg) { let done = plugins.q.defer();
var done = plugins.q.defer(); if (versionArg === 'docker') {
if (versionArg == "docker") {
testDocker() testDocker()
.then(function () { .then(() => {
done.resolve(); done.resolve();
}); });
} }
@@ -16,33 +15,32 @@ exports.test = function (versionArg) {
npmci_install_1.install(versionArg) npmci_install_1.install(versionArg)
.then(npmDependencies) .then(npmDependencies)
.then(npmTest) .then(npmTest)
.then(function () { .then(() => {
done.resolve(); done.resolve();
}); });
} }
return done.promise; return done.promise;
}; };
var npmDependencies = function () { let npmDependencies = function () {
var done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now installing dependencies:"); plugins.beautylog.info('now installing dependencies:');
npmci_bash_1.bash("npm install"); npmci_bash_1.bash('npm install');
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
var npmTest = function () { let npmTest = () => {
var done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now starting tests:"); plugins.beautylog.info('now starting tests:');
npmci_bash_1.bash("npm test"); npmci_bash_1.bash('npm test');
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
var testDocker = function () { let testDocker = function () {
var done = plugins.q.defer(); let done = plugins.q.defer();
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.testDockerfiles) .then(NpmciBuildDocker.testDockerfiles)
.then(done.resolve); .then(done.resolve);
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQyw2Q0FBaUM7QUFDakMsbURBQXVDO0FBRXZDLHlEQUF3RDtBQUU3QyxRQUFBLElBQUksR0FBRyxDQUFDLFVBQVU7SUFDekIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxQixVQUFVLEVBQUU7YUFDUCxJQUFJLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDVixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSix1QkFBTyxDQUFDLFVBQVUsQ0FBQzthQUNkLElBQUksQ0FBQyxlQUFlLENBQUM7YUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNiLElBQUksQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRCxJQUFJLGVBQWUsR0FBRztJQUNsQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUE7SUFDdEQsaUJBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRCxJQUFJLE9BQU8sR0FBRztJQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUM3QyxpQkFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQUVELElBQUksVUFBVSxHQUFHO0lBQ2IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUU7U0FDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1NBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7U0FDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUNsQyw4QkFBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxJQUFZLGdCQUFnQixXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFFOUMsWUFBSSxHQUFHLFVBQUMsVUFBVTtJQUN6QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLEVBQUUsQ0FBQSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRTthQUNQLElBQUksQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLHVCQUFPLENBQUMsVUFBVSxDQUFDO2FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2IsSUFBSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVELElBQUksZUFBZSxHQUFHO0lBQ2xCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVELElBQUksT0FBTyxHQUFHO0lBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlDLGlCQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtTQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7U0FDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQSIsImZpbGUiOiJucG1jaS50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuaW1wb3J0IHtiYXNofSBmcm9tIFwiLi9ucG1jaS5iYXNoXCI7XG5pbXBvcnQge2luc3RhbGx9IGZyb20gXCIuL25wbWNpLmluc3RhbGxcIjtcbmltcG9ydCAqIGFzIGVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcbmltcG9ydCAqIGFzIE5wbWNpQnVpbGREb2NrZXIgZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCI7XG5cbmV4cG9ydCBsZXQgdGVzdCA9ICh2ZXJzaW9uQXJnKSA9PiB7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBpZih2ZXJzaW9uQXJnID09IFwiZG9ja2VyXCIpe1xuICAgICAgICB0ZXN0RG9ja2VyKClcbiAgICAgICAgICAgIC50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgZG9uZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0YWxsKHZlcnNpb25BcmcpXG4gICAgICAgICAgICAudGhlbihucG1EZXBlbmRlbmNpZXMpXG4gICAgICAgICAgICAudGhlbihucG1UZXN0KVxuICAgICAgICAgICAgLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgbnBtRGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHBsdWdpbnMuYmVhdXR5bG9nLmluZm8oXCJub3cgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXM6XCIpO1xuICAgIGJhc2goXCJucG0gaW5zdGFsbFwiKTtcbiAgICBkb25lLnJlc29sdmUoKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgbnBtVGVzdCA9ICgpID0+IHtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHBsdWdpbnMuYmVhdXR5bG9nLmluZm8oXCJub3cgc3RhcnRpbmcgdGVzdHM6XCIpO1xuICAgIGJhc2goXCJucG0gdGVzdFwiKTtcbiAgICBkb25lLnJlc29sdmUoKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgdGVzdERvY2tlciA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBOcG1jaUJ1aWxkRG9ja2VyLnJlYWREb2NrZXJmaWxlcygpXG4gICAgICAgIC50aGVuKE5wbWNpQnVpbGREb2NrZXIucHVsbERvY2tlcmZpbGVJbWFnZXMpXG4gICAgICAgIC50aGVuKE5wbWNpQnVpbGREb2NrZXIudGVzdERvY2tlcmZpbGVzKVxuICAgICAgICAudGhlbihkb25lLnJlc29sdmUpXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbn1cblxuIl19

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let trigger: () => any; import * as plugins from './npmci.plugins';
export declare let trigger: () => plugins.q.Promise<{}>;

38
dist/npmci.trigger.js vendored
View File

@@ -1,30 +1,28 @@
"use strict"; "use strict";
require("typings-global"); const plugins = require("./npmci.plugins");
var plugins = require("./npmci.plugins"); let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;
var triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;
exports.trigger = function () { exports.trigger = function () {
var done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now running triggers"); plugins.beautylog.info('now running triggers');
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_TRIGGER_*", evaluateTrigger); plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger);
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
var evaluateTrigger = function (triggerEnvVarArg) { let evaluateTrigger = (triggerEnvVarArg) => {
var triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg); let triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg);
var regexDomain = triggerRegexResultArray[1]; let regexDomain = triggerRegexResultArray[1];
var regexProjectId = triggerRegexResultArray[2]; let regexProjectId = triggerRegexResultArray[2];
var regexProjectTriggerToken = triggerRegexResultArray[3]; let regexProjectTriggerToken = triggerRegexResultArray[3];
var regexRefName = triggerRegexResultArray[4]; let regexRefName = triggerRegexResultArray[4];
var regexTriggerName; let regexTriggerName;
if (triggerRegexResultArray.length == 6) { if (triggerRegexResultArray.length === 6) {
regexTriggerName = triggerRegexResultArray[5]; regexTriggerName = triggerRegexResultArray[5];
} }
else { else {
regexTriggerName = "Unnamed Trigger"; regexTriggerName = 'Unnamed Trigger';
} }
plugins.beautylog.info("Found Trigger!"); plugins.beautylog.info('Found Trigger!');
plugins.beautylog.log("triggering build for ref " + regexRefName + " of " + regexTriggerName); plugins.beautylog.log('triggering build for ref ' + regexRefName + ' of ' + regexTriggerName);
plugins.request.post("https://gitlab.com/api/v3/projects/" + regexProjectId + "/trigger/builds", { form: { token: regexProjectTriggerToken, ref: regexRefName } }); plugins.request.post('https://gitlab.com/api/v3/projects/' + regexProjectId + '/trigger/builds', { form: { token: regexProjectTriggerToken, ref: regexRefName } });
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kudHJpZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUkxQyxJQUFJLGlCQUFpQixHQUFHLGdHQUFnRyxDQUFBO0FBRTdHLFFBQUEsT0FBTyxHQUFHO0lBQ2pCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUM5QyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDcEYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0I7SUFDbkMsSUFBSSx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN0RSxJQUFJLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1QyxJQUFJLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQyxJQUFJLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pELElBQUksWUFBWSxHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdDLElBQUksZ0JBQWdCLENBQUE7SUFDcEIsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUE7SUFDeEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsWUFBWSxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzdGLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3RLLENBQUMsQ0FBQSJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBSzNDLElBQUksaUJBQWlCLEdBQUcsZ0dBQWdHLENBQUM7QUFFOUcsZUFBTyxHQUFHO0lBQ2pCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMvQyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxlQUFlLEdBQUcsVUFBQyxnQkFBZ0I7SUFDbkMsSUFBSSx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxJQUFJLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUksWUFBWSxHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksZ0JBQWdCLENBQUM7SUFDckIsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsWUFBWSxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZLLENBQUMsQ0FBQSIsImZpbGUiOiJucG1jaS50cmlnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuaW1wb3J0IHtwcmVwYXJlfSBmcm9tIFwiLi9ucG1jaS5wcmVwYXJlXCI7XG5pbXBvcnQge2Jhc2h9IGZyb20gXCIuL25wbWNpLmJhc2hcIjtcblxuXG5sZXQgdHJpZ2dlclZhbHVlUmVnZXggPSAvXihbYS16QS1aMC05XFwuXSopXFx8KFthLXpBLVowLTlcXC5dKilcXHwoW2EtekEtWjAtOVxcLl0qKVxcfChbYS16QS1aMC05XFwuXSopXFx8PyhbYS16QS1aMC05XFwuXFwtXFwvXSopLztcblxuZXhwb3J0IGxldCB0cmlnZ2VyID0gZnVuY3Rpb24gKCkge1xuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XG4gICAgcGx1Z2lucy5iZWF1dHlsb2cuaW5mbyhcIm5vdyBydW5uaW5nIHRyaWdnZXJzXCIpO1xuICAgIHBsdWdpbnMuc21hcnRwYXJhbS5mb3JFYWNoTWluaW1hdGNoKHByb2Nlc3MuZW52LCBcIk5QTUNJX1RSSUdHRVJfKlwiLCBldmFsdWF0ZVRyaWdnZXIpO1xuICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbmxldCBldmFsdWF0ZVRyaWdnZXIgPSAodHJpZ2dlckVudlZhckFyZykgPT4ge1xuICAgIGxldCB0cmlnZ2VyUmVnZXhSZXN1bHRBcnJheSA9IHRyaWdnZXJWYWx1ZVJlZ2V4LmV4ZWModHJpZ2dlckVudlZhckFyZyk7XG4gICAgbGV0IHJlZ2V4RG9tYWluID0gdHJpZ2dlclJlZ2V4UmVzdWx0QXJyYXlbMV07XG4gICAgbGV0IHJlZ2V4UHJvamVjdElkID0gdHJpZ2dlclJlZ2V4UmVzdWx0QXJyYXlbMl07XG4gICAgbGV0IHJlZ2V4UHJvamVjdFRyaWdnZXJUb2tlbiA9IHRyaWdnZXJSZWdleFJlc3VsdEFycmF5WzNdO1xuICAgIGxldCByZWdleFJlZk5hbWUgPSB0cmlnZ2VyUmVnZXhSZXN1bHRBcnJheVs0XTtcbiAgICBsZXQgcmVnZXhUcmlnZ2VyTmFtZTtcbiAgICBpZiAodHJpZ2dlclJlZ2V4UmVzdWx0QXJyYXkubGVuZ3RoID09IDYpIHtcbiAgICAgICAgcmVnZXhUcmlnZ2VyTmFtZSA9IHRyaWdnZXJSZWdleFJlc3VsdEFycmF5WzVdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZ2V4VHJpZ2dlck5hbWUgPSBcIlVubmFtZWQgVHJpZ2dlclwiO1xuICAgIH1cbiAgICBwbHVnaW5zLmJlYXV0eWxvZy5pbmZvKFwiRm91bmQgVHJpZ2dlciFcIik7XG4gICAgcGx1Z2lucy5iZWF1dHlsb2cubG9nKFwidHJpZ2dlcmluZyBidWlsZCBmb3IgcmVmIFwiICsgcmVnZXhSZWZOYW1lICsgXCIgb2YgXCIgKyByZWdleFRyaWdnZXJOYW1lKTtcbiAgICBwbHVnaW5zLnJlcXVlc3QucG9zdChcImh0dHBzOi8vZ2l0bGFiLmNvbS9hcGkvdjMvcHJvamVjdHMvXCIgKyByZWdleFByb2plY3RJZCArIFwiL3RyaWdnZXIvYnVpbGRzXCIsIHsgZm9ybTogeyB0b2tlbjogcmVnZXhQcm9qZWN0VHJpZ2dlclRva2VuLCByZWY6IHJlZ2V4UmVmTmFtZSB9IH0pO1xufSJdfQ==

10
npmextra.json Normal file
View File

@@ -0,0 +1,10 @@
{
"npmts":{
"mode":"default",
"coverageTreshold": "70",
"cli": true
},
"npmdocker":{
"baseImage":"hosttoday/ht-docker-node:npmts"
}
}

View File

@@ -1,14 +1,15 @@
{ {
"name": "npmci", "name": "npmci",
"version": "2.2.2", "version": "2.3.29",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts",
"bin": { "bin": {
"npmci": "dist/index.js" "npmci": "dist/cli.js"
}, },
"scripts": { "scripts": {
"test": "(npmts) && (npm run testVersion)", "test": "(npmts) && (npm run testVersion)",
"testVersion": "node dist/index.js -v" "testVersion": "(cd test/assets/ && node ../../dist/cli.js -v)"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@@ -21,24 +22,34 @@
}, },
"homepage": "https://gitlab.com/pushrocks/npmci#README", "homepage": "https://gitlab.com/pushrocks/npmci#README",
"devDependencies": { "devDependencies": {
"npmts-g": "^5.2.6", "@types/should": "^8.1.30",
"should": "^9.0.2", "npmts-g": "^5.2.8",
"typings-test": "^1.0.1" "should": "^11.1.1",
"typings-test": "^1.0.3"
}, },
"dependencies": { "dependencies": {
"beautylog": "^5.0.12", "@types/lodash": "^4.14.40",
"@types/node": "^6.0.51",
"@types/q": "0.x.x",
"@types/request": "0.x.x",
"@types/shelljs": "^0.3.33",
"@types/through2": "^2.0.32",
"beautylog": "^6.0.0",
"gulp": "^3.9.1", "gulp": "^3.9.1",
"gulp-function": "^1.3.6", "gulp-function": "^2.2.0",
"projectinfo": "^1.0.3", "lodash": "^4.17.2",
"npmextra": "^2.0.3",
"projectinfo": "^1.0.4",
"q": "^1.4.1", "q": "^1.4.1",
"request": "^2.72.0", "request": "^2.79.0",
"shelljs": "^0.7.0", "shelljs": "^0.7.5",
"smartcli": "^1.0.4", "smartcli": "^1.0.15",
"smartfile": "^4.0.5", "smartfile": "^4.1.0",
"smartparam": "^0.1.1", "smartparam": "^0.1.1",
"smartssh": "^1.1.2", "smartsocket": "^1.1.7",
"smartstring": "^2.0.10", "smartssh": "^1.2.1",
"smartstring": "^2.0.22",
"through2": "^2.0.1", "through2": "^2.0.1",
"typings-global": "^1.0.3" "typings-global": "^1.0.14"
} }
} }

3
test/test.d.ts vendored
View File

@@ -1,2 +1 @@
import "typings-test"; import 'typings-test';
import "should";

File diff suppressed because one or more lines are too long

View File

@@ -1,93 +1,99 @@
import "typings-test"; import 'typings-test'
import "should"; import * as should from 'should'
import path = require("path"); import * as path from 'path'
import * as beautylog from "beautylog"
//set up environment // set up environment
process.env.CI_BUILD_REPO = "https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git"; process.env.CI_BUILD_REPO = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git'
process.env.NPMCI_SSHKEY_1 = "hostString|somePrivKey|##" process.env.NPMCI_SSHKEY_1 = 'hostString|somePrivKey|##'
process.env.NPMTS_TEST = "true"; process.env.NPMTS_TEST = 'true'
process.cwd = () => { process.cwd = () => {
return path.join(__dirname,"assets/"); return path.join(__dirname,'assets/')
}; }
//require NPMCI files // require NPMCI files
import npmci = require("../dist/index"); import npmci = require('../dist/index')
import NpmciBuildDocker = require("../dist/npmci.build.docker"); import NpmciBuildDocker = require('../dist/npmci.build.docker')
import NpmciPublish = require("../dist/npmci.publish"); import NpmciPublish = require('../dist/npmci.publish')
import NpmciTest = require("../dist/npmci.test"); import NpmciTest = require('../dist/npmci.test')
import NpmciSsh = require("../dist/npmci.ssh") import NpmciSsh = require('../dist/npmci.ssh')
let dockerfile1:NpmciBuildDocker.Dockerfile; let dockerfile1: NpmciBuildDocker.Dockerfile
let dockerfile2:NpmciBuildDocker.Dockerfile; let dockerfile2: NpmciBuildDocker.Dockerfile
let sortableArray:NpmciBuildDocker.Dockerfile[]; let sortableArray: NpmciBuildDocker.Dockerfile[]
describe("NPMCI",function(){ describe('NPMCI',function(){
describe("build.docker",function(){ describe('build.docker',function(){
it("should return valid Dockerfiles",function(){ it('should return valid Dockerfiles',function(){
dockerfile1 = new NpmciBuildDocker.Dockerfile({filePath:"./Dockerfile",read:true}); dockerfile1 = new NpmciBuildDocker.Dockerfile({filePath: './Dockerfile', read: true})
dockerfile2 = new NpmciBuildDocker.Dockerfile({filePath:"./Dockerfile_sometag1",read:true}); dockerfile2 = new NpmciBuildDocker.Dockerfile({filePath: './Dockerfile_sometag1', read: true})
dockerfile1.version.should.equal("latest"); should(dockerfile1.version).equal('latest')
dockerfile2.version.should.equal("sometag1"); should(dockerfile2.version).equal('sometag1')
}); })
it("should read a directory of Dockerfiles",function(done){
it('should read a directory of Dockerfiles',function(done){
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(function(readDockerfilesArrayArg:NpmciBuildDocker.Dockerfile[]){ .then(function(readDockerfilesArrayArg: NpmciBuildDocker.Dockerfile[]){
readDockerfilesArrayArg[1].version.should.equal("sometag1"); should(readDockerfilesArrayArg[1].version).equal('sometag1')
sortableArray = readDockerfilesArrayArg sortableArray = readDockerfilesArrayArg
done(); done()
}); })
}) })
it("should sort an array of Dockerfiles",function(done){
it('should sort an array of Dockerfiles',function(done){
NpmciBuildDocker.sortDockerfiles(sortableArray) NpmciBuildDocker.sortDockerfiles(sortableArray)
.then(function(sortedArrayArg:NpmciBuildDocker.Dockerfile[]){ .then(function(sortedArrayArg: NpmciBuildDocker.Dockerfile[]){
beautylog.success("final result"); console.log(sortedArrayArg)
console.log(sortedArrayArg); done()
done();
}) })
}); })
it("should correctly chain Dockerfile handling",function(done){
it('should correctly chain Dockerfile handling', function(done){
NpmciBuildDocker.build() NpmciBuildDocker.build()
.then(()=>{ .then(() => {
done(); done()
}); })
}) })
}); })
describe(".publish.docker",function(){
it("should publish all built Dockerfiles",function(done){ describe('.publish.docker',function(){
NpmciPublish.publish("docker") it('should publish all built Dockerfiles',function(done){
NpmciPublish.publish('docker')
.then(() => { .then(() => {
done(); done()
});; })
}); })
}); })
describe(".test.npm",function(){
it("should source nvm using bash and install a specific node version, then test it",function(done){ describe('.test.npm',function(){
NpmciTest.test("legacy") it('should source nvm using bash and install a specific node version, then test it',function(done){
NpmciTest.test('legacy')
.then(() => { .then(() => {
return NpmciTest.test("lts"); return NpmciTest.test('lts')
}) })
.then(() => { .then(() => {
return NpmciTest.test("stable"); return NpmciTest.test('stable')
}) })
.then(() => { .then(() => {
done(); done()
}); })
}) })
}); })
describe("test.docker",function(){
it("should test dockerfiles",function(done){ describe('test.docker',function(){
NpmciTest.test("docker") it('should test dockerfiles',function(done){
NpmciTest.test('docker')
.then(() => { .then(() => {
done(); done()
}); })
}) })
}); })
describe("npmci prepare ssh",function(){
it("should pick up SSH keys",function(done){ describe('npmci prepare ssh',function(){
it('should pick up SSH keys',function(done){
NpmciSsh.ssh() NpmciSsh.ssh()
.then(() => { .then(() => {
done(); done()
}) })
}) })
}) })

View File

@@ -1,81 +1,86 @@
#!/usr/bin/env node import * as plugins from './npmci.plugins'
import "typings-global"; import * as paths from './npmci.paths'
import * as plugins from "./npmci.plugins"; let npmciInfo = new plugins.projectinfo.ProjectinfoNpm(paths.NpmciPackageRoot)
import * as paths from "./npmci.paths"; plugins.beautylog.log('npmci version: ' + npmciInfo.version)
let npmciInfo = new plugins.projectinfo.ProjectinfoNpm(paths.NpmciPackageRoot);
plugins.beautylog.log("npmci version: " + npmciInfo.version);
import {build} from "./npmci.build" import {build} from './npmci.build'
import {command} from "./npmci.command"; import {clean} from './npmci.clean'
import {install} from "./npmci.install"; import {command} from './npmci.command'
import {publish} from "./npmci.publish"; import {install} from './npmci.install'
import {prepare} from "./npmci.prepare"; import {publish} from './npmci.publish'
import {tag, retag} from "./npmci.tag"; import {prepare} from './npmci.prepare'
import {test} from "./npmci.test"; import {test} from './npmci.test'
import {trigger} from "./npmci.trigger"; import {trigger} from './npmci.trigger'
import * as NpmciEnv from "./npmci.env"; import * as NpmciEnv from './npmci.env'
export {build} from "./npmci.build" export {build} from './npmci.build'
export {install} from "./npmci.install"; export {install} from './npmci.install';
export {publish} from "./npmci.publish"; export {publish} from './npmci.publish';
let smartcli = new plugins.smartcli.Smartcli()
let smartcli = new plugins.smartcli.Smartcli(); smartcli.addVersion(npmciInfo.version)
smartcli.addVersion(npmciInfo.version);
// build // build
smartcli.addCommand({ smartcli.addCommand({
commandName:"build" commandName: 'build'
}).then((argv) => { }).then((argv) => {
build(argv._[1]) build(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// clean
smartcli.addCommand({
commandName: 'clean'
}).then((argv) => {
clean()
.then(NpmciEnv.configStore)
})
// command // command
smartcli.addCommand({ smartcli.addCommand({
commandName:"command" commandName: 'command'
}).then((argv) => { }).then((argv) => {
command() command()
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// install // install
smartcli.addCommand({ smartcli.addCommand({
commandName:"install" commandName: 'install'
}).then((argv) => { }).then((argv) => {
install(argv._[1]) install(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// prepare // prepare
smartcli.addCommand({ smartcli.addCommand({
commandName:"prepare" commandName: 'prepare'
}).then((argv) => { }).then((argv) => {
prepare(argv._[1]) prepare(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// publish // publish
smartcli.addCommand({ smartcli.addCommand({
commandName:"publish" commandName: 'publish'
}).then((argv) => { }).then((argv) => {
publish(argv._[1]) publish(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// test // test
smartcli.addCommand({ smartcli.addCommand({
commandName:"test" commandName: 'test'
}).then((argv) => { }).then((argv) => {
test(argv._[1]) test(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// trigger // trigger
smartcli.addCommand({ smartcli.addCommand({
commandName:"trigger" commandName: 'trigger'
}).then((argv) => { }).then((argv) => {
trigger(); trigger()
}); })
smartcli.startParse(); smartcli.startParse()

View File

@@ -1,38 +1,48 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins";
export let bash = (commandArg:string,retryArg = 2,bareArg = false) => { let nvmSourceString: string = ''
let exitCode:number; export let nvmAvailable: boolean = false
let stdOut:string; let checkNvm = () => {
let execResult; if (plugins.shelljs.exec(`bash -c "source /usr/local/nvm/nvm.sh"`,{silent: true}).code === 0) {
if(!process.env.NPMTS_TEST){ nvmSourceString = `source /usr/local/nvm/nvm.sh && `
for (let i = 0; i <= retryArg; i++){ nvmAvailable = true
if(!bareArg){ } else if (plugins.shelljs.exec(`bash -c "source ~/.nvm/nvm.sh"`,{silent: true}).code === 0) {
nvmSourceString = `source ~/.nvm/nvm.sh && `
nvmAvailable = true
};
}
checkNvm()
export let bash = (commandArg: string, retryArg = 2, bareArg = false): string => {
let exitCode: number
let stdOut: string
let execResult
if (!process.env.NPMTS_TEST) { // NPMTS_TEST is used during testing
for (let i = 0; i <= retryArg; i++) {
if (!bareArg) {
execResult = plugins.shelljs.exec( execResult = plugins.shelljs.exec(
"bash -c \"source /usr/local/nvm/nvm.sh &&" + `bash -c "${nvmSourceString} ${commandArg}"`
commandArg + )
"\""
);
} else { } else {
execResult = plugins.shelljs.exec(commandArg); execResult = plugins.shelljs.exec(commandArg)
} }
exitCode = execResult.code; exitCode = execResult.code
stdOut = execResult.stdout; stdOut = execResult.stdout
if(exitCode !== 0 && i == retryArg){ if (exitCode !== 0 && i === retryArg) {
process.exit(1); process.exit(1)
} else if(exitCode == 0){ } else if (exitCode === 0) {
i = retryArg + 1; // if everything works out ok retrials are not wanted i = retryArg + 1 // if everything works out ok retrials are not wanted
} else { } else {
plugins.beautylog.warn("Something went wrong! Exit Code: " + exitCode.toString()); plugins.beautylog.warn('Something went wrong! Exit Code: ' + exitCode.toString())
plugins.beautylog.info("Retry " + (i + 1).toString() + " of " + retryArg.toString()); plugins.beautylog.info('Retry ' + (i + 1).toString() + ' of ' + retryArg.toString())
} }
} }
} else { } else {
plugins.beautylog.log("ShellExec would be: " + commandArg.blue) plugins.beautylog.log('ShellExec would be: ' + commandArg)
} }
return stdOut; return stdOut
} }
export let bashBare = (commandArg,retryArg = 2) => { export let bashBare = (commandArg, retryArg = 2) => {
return bash(commandArg,retryArg,true); return bash(commandArg, retryArg, true)
} }

View File

@@ -1,229 +1,293 @@
import * as plugins from "./npmci.plugins"; import * as plugins from './npmci.plugins'
import * as paths from "./npmci.paths"; import * as paths from './npmci.paths'
import * as NpmciEnv from "./npmci.env"; import * as NpmciEnv from './npmci.env'
import {bashBare} from "./npmci.bash"; import {bashBare} from './npmci.bash'
/**
* builds a cwd of Dockerfiles by triggering a promisechain
*/
export let build = function(){ export let build = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
readDockerfiles() readDockerfiles()
.then(sortDockerfiles) .then(sortDockerfiles)
.then(mapDockerfiles) .then(mapDockerfiles)
.then(buildDockerfiles) .then(buildDockerfiles)
.then(pushDockerfiles) .then(pushDockerfiles)
.then(() => { .then(() => {
done.resolve(); done.resolve()
}); })
return done.promise; return done.promise
} }
export let readDockerfiles = function(){ /**
let done = plugins.q.defer(); * creates instance of class Dockerfile for all Dockerfiles in cwd
let readDockerfilesArray:Dockerfile[] = [] * @returns Promise<Dockerfile[]>
plugins.gulp.src("./Dockerfile*") */
export let readDockerfiles = function(): plugins.q.Promise<Dockerfile[]>{
let done = plugins.q.defer<Dockerfile[]>()
let readDockerfilesArray: Dockerfile[] = []
plugins.gulp.src('./Dockerfile*')
.pipe(plugins.through2.obj(function(file,enc,cb){ .pipe(plugins.through2.obj(function(file,enc,cb){
let myDockerfile = new Dockerfile({ let myDockerfile = new Dockerfile({
filePath:file.path, filePath: file.path,
read:true read: true
}); })
readDockerfilesArray.push(myDockerfile); readDockerfilesArray.push(myDockerfile)
cb(null,file); cb(null,file)
},function(){ },function(){
done.resolve(readDockerfilesArray); done.resolve(readDockerfilesArray)
})); }))
return done.promise; return done.promise
} }
export let sortDockerfiles = function(sortableArrayArg:Dockerfile[]){ /**
let done = plugins.q.defer(); * sorts Dockerfiles into a dependency chain
let sortedArray:Dockerfile[] = []; * @param sortableArrayArg an array of instances of class Dockerfile
let cleanTagsOriginal = cleanTagsArrayFunction(sortableArrayArg,sortedArray); * @returns Promise<Dockerfile[]>
let sorterFunctionCounter:number = 0; */
export let sortDockerfiles = function(sortableArrayArg: Dockerfile[]): plugins.q.Promise<Dockerfile[]>{
let done = plugins.q.defer<Dockerfile[]>()
let sortedArray: Dockerfile[] = []
let cleanTagsOriginal = cleanTagsArrayFunction(sortableArrayArg,sortedArray)
let sorterFunctionCounter: number = 0
let sorterFunction = function(){ let sorterFunction = function(){
sortableArrayArg.forEach((dockerfileArg)=>{ sortableArrayArg.forEach((dockerfileArg) => {
let cleanTags = cleanTagsArrayFunction(sortableArrayArg,sortedArray); let cleanTags = cleanTagsArrayFunction(sortableArrayArg,sortedArray)
if(cleanTags.indexOf(dockerfileArg.baseImage) == -1 && sortedArray.indexOf(dockerfileArg) == -1){ if (cleanTags.indexOf(dockerfileArg.baseImage) === -1 && sortedArray.indexOf(dockerfileArg) === -1) {
sortedArray.push(dockerfileArg); sortedArray.push(dockerfileArg)
}; };
if(cleanTagsOriginal.indexOf(dockerfileArg.baseImage) != -1){ if (cleanTagsOriginal.indexOf(dockerfileArg.baseImage) !== -1) {
dockerfileArg.localBaseImageDependent = true; dockerfileArg.localBaseImageDependent = true
}; };
}); })
if(sortableArrayArg.length == sortedArray.length){ if (sortableArrayArg.length === sortedArray.length) {
done.resolve(sortedArray); done.resolve(sortedArray)
} else if (sorterFunctionCounter < 10) { } else if (sorterFunctionCounter < 10) {
sorterFunctionCounter++; sorterFunctionCounter++
sorterFunction(); sorterFunction()
}; };
} }
sorterFunction(); sorterFunction()
return done.promise; return done.promise
}; }
export let mapDockerfiles = function(sortedArray:Dockerfile[]){ /**
let done = plugins.q.defer(); * maps local Dockerfiles dependencies to the correspoding Dockerfile class instances
*/
export let mapDockerfiles = function(sortedArray: Dockerfile[]): plugins.q.Promise<Dockerfile[]>{
let done = plugins.q.defer<Dockerfile[]>()
sortedArray.forEach((dockerfileArg) => { sortedArray.forEach((dockerfileArg) => {
if(dockerfileArg.localBaseImageDependent){ if (dockerfileArg.localBaseImageDependent) {
sortedArray.forEach((dockfile2:Dockerfile) => { sortedArray.forEach((dockfile2: Dockerfile) => {
if(dockfile2.cleanTag == dockerfileArg.baseImage){ if (dockfile2.cleanTag === dockerfileArg.baseImage) {
dockerfileArg.localBaseDockerfile = dockfile2; dockerfileArg.localBaseDockerfile = dockfile2
} }
}) })
}; };
});
done.resolve(sortedArray);
return done.promise;
}
export let buildDockerfiles = (sortedArrayArg:Dockerfile[]) => {
let done = plugins.q.defer();
sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.build();
}) })
done.resolve(sortedArrayArg); done.resolve(sortedArray)
return done.promise; return done.promise
} }
export let pushDockerfiles = function(sortedArrayArg:Dockerfile[]){ /**
let done = plugins.q.defer(); * builds the correspoding real docker image for each Dockerfile class instance
*/
export let buildDockerfiles = (sortedArrayArg: Dockerfile[]) => {
let done = plugins.q.defer()
sortedArrayArg.forEach(function(dockerfileArg){ sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.push(NpmciEnv.buildStage); dockerfileArg.build()
}); })
done.resolve(sortedArrayArg); done.resolve(sortedArrayArg)
return done.promise; return done.promise
} }
export let pullDockerfileImages = (sortableArrayArg:Dockerfile[],registryArg = "registry.gitlab.com") => { /**
let done = plugins.q.defer(); * pushes the real Dockerfile images to a Docker registry
*/
export let pushDockerfiles = function(sortedArrayArg: Dockerfile[]){
let done = plugins.q.defer()
sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.push(NpmciEnv.buildStage)
})
done.resolve(sortedArrayArg)
return done.promise
}
/**
* pulls corresponding real Docker images for instances of Dockerfile from a registry.
* This is needed if building, testing, and publishing of Docker images is carried out in seperate CI stages.
*/
export let pullDockerfileImages = (sortableArrayArg: Dockerfile[],registryArg = 'registry.gitlab.com') => {
let done = plugins.q.defer()
sortableArrayArg.forEach((dockerfileArg) => { sortableArrayArg.forEach((dockerfileArg) => {
dockerfileArg.pull(registryArg); dockerfileArg.pull(registryArg)
}); })
done.resolve(sortableArrayArg); done.resolve(sortableArrayArg)
return done.promise; return done.promise
} }
export let testDockerfiles = (sortedArrayArg:Dockerfile[]) => { /**
let done = plugins.q.defer(); * tests all Dockerfiles in by calling class Dockerfile.test();
* @param sortedArrayArg Dockerfile[] that contains all Dockerfiles in cwd
*/
export let testDockerfiles = (sortedArrayArg: Dockerfile[]) => {
let done = plugins.q.defer()
sortedArrayArg.forEach(function(dockerfileArg){ sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.test(); dockerfileArg.test()
}); })
done.resolve(sortedArrayArg); done.resolve(sortedArrayArg)
return done.promise; return done.promise
}; }
/**
* class Dockerfile represents a Dockerfile on disk in npmci
*/
export class Dockerfile { export class Dockerfile {
filePath:string; filePath: string
repo:string; repo: string
version:string; version: string
cleanTag:string; cleanTag: string
buildTag:string; buildTag: string
testTag:string; testTag: string
releaseTag:string; releaseTag: string
containerName:string containerName: string
content:string; content: string
baseImage:string; baseImage: string
localBaseImageDependent:boolean; localBaseImageDependent: boolean
localBaseDockerfile:Dockerfile; localBaseDockerfile: Dockerfile
constructor(options:{filePath?:string,fileContents?:string|Buffer,read?:boolean}){ constructor(options: {filePath?: string,fileContents?: string|Buffer,read?: boolean}) {
this.filePath = options.filePath; this.filePath = options.filePath
this.repo = NpmciEnv.repo.user + "/" + NpmciEnv.repo.repo; this.repo = NpmciEnv.repo.user + '/' + NpmciEnv.repo.repo
this.version = dockerFileVersion(plugins.path.parse(options.filePath).base); this.version = dockerFileVersion(plugins.path.parse(options.filePath).base)
this.cleanTag = this.repo + ":" + this.version; this.cleanTag = this.repo + ':' + this.version
this.buildTag = this.cleanTag; this.buildTag = this.cleanTag
this.testTag = dockerTag("registry.gitlab.com",this.repo,this.version,"test"); this.testTag = dockerTag('registry.gitlab.com',this.repo,this.version,'test')
this.releaseTag = dockerTag(NpmciEnv.dockerRegistry,this.repo,this.version); this.releaseTag = dockerTag(NpmciEnv.dockerRegistry,this.repo,this.version)
this.containerName = "dockerfile-" + this.version; this.containerName = 'dockerfile-' + this.version
if(options.filePath && options.read){ if (options.filePath && options.read) {
this.content = plugins.smartfile.fs.toStringSync(plugins.path.resolve(options.filePath)); this.content = plugins.smartfile.fs.toStringSync(plugins.path.resolve(options.filePath))
}; };
this.baseImage = dockerBaseImage(this.content); this.baseImage = dockerBaseImage(this.content)
this.localBaseImageDependent = false; this.localBaseImageDependent = false
}; };
build(){
let done = plugins.q.defer(); /**
plugins.beautylog.info("now building Dockerfile for " + this.cleanTag); * builds the Dockerfile
bashBare("docker build -t " + this.buildTag + " -f " + this.filePath + " ."); */
NpmciEnv.dockerFilesBuilt.push(this); build() {
done.resolve(); let done = plugins.q.defer()
return done.promise; plugins.beautylog.info('now building Dockerfile for ' + this.cleanTag)
bashBare('docker build -t ' + this.buildTag + ' -f ' + this.filePath + ' .')
NpmciEnv.dockerFilesBuilt.push(this)
done.resolve()
return done.promise
}; };
push(stageArg){
let done = plugins.q.defer(); /**
let pushTag; * pushes the Dockerfile to a registry
switch (stageArg){ */
case "release": push(stageArg) {
pushTag = this.releaseTag; let done = plugins.q.defer()
break; let pushTag
case "test": switch (stageArg) {
case 'release':
pushTag = this.releaseTag
break
case 'test':
default: default:
pushTag = this.testTag; pushTag = this.testTag
break; break
} }
bashBare("docker tag " + this.buildTag + " " + pushTag); bashBare('docker tag ' + this.buildTag + ' ' + pushTag)
bashBare("docker push " + pushTag); bashBare('docker push ' + pushTag)
done.resolve(); done.resolve()
return done.promise; return done.promise
}
pull(registryArg:string){
let pullTag = this.testTag;
bashBare("docker pull " + pullTag);
bashBare("docker tag " + pullTag + " " + this.buildTag);
}; };
test(){
let testFile:string = plugins.path.join(paths.NpmciTestDir,"test_" + this.version + ".sh"); /**
let testFileExists:boolean = plugins.smartfile.fs.fileExistsSync(testFile); * pulls the Dockerfile from a registry
if(testFileExists){ */
bashBare("docker run --name npmci_test_container " + this.buildTag + " mkdir /npmci_test"); pull(registryArg: string) {
bashBare("docker cp " + testFile + " npmci_test_container:/npmci_test/test.sh"); let pullTag = this.testTag
bashBare("docker commit npmci_test_container npmci_test_image"); bashBare('docker pull ' + pullTag)
bashBare("docker run npmci_test_image sh /npmci_test/test.sh"); bashBare('docker tag ' + pullTag + ' ' + this.buildTag)
bashBare("docker rm npmci_test_container"); };
bashBare("docker rmi --force npmci_test_image");
/**
* tests the Dockerfile;
*/
test() {
let testFile: string = plugins.path.join(paths.NpmciTestDir,'test_' + this.version + '.sh')
let testFileExists: boolean = plugins.smartfile.fs.fileExistsSync(testFile)
if (testFileExists) {
bashBare('docker run --name npmci_test_container ' + this.buildTag + ' mkdir /npmci_test')
bashBare('docker cp ' + testFile + ' npmci_test_container:/npmci_test/test.sh')
bashBare('docker commit npmci_test_container npmci_test_image')
bashBare('docker run npmci_test_image sh /npmci_test/test.sh')
bashBare('docker rm npmci_test_container')
bashBare('docker rmi --force npmci_test_image')
} else { } else {
plugins.beautylog.warn("skipping tests for " + this.cleanTag + " because no testfile was found!"); plugins.beautylog.warn('skipping tests for ' + this.cleanTag + ' because no testfile was found!')
} }
}; };
getId(){
let containerId = bashBare("docker inspect --type=image --format=\"{{.Id}}\" " + this.buildTag); /**
return containerId; * gets the id of a Dockerfile
*/
getId() {
let containerId = bashBare('docker inspect --type=image --format=\"{{.Id}}\" ' + this.buildTag)
return containerId
}; };
} }
export let dockerFileVersion = function(dockerfileNameArg:string):string{ /**
let versionString:string; *
let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/; */
let regexResultArray = versionRegex.exec(dockerfileNameArg); export let dockerFileVersion = function(dockerfileNameArg: string): string{
if(regexResultArray && regexResultArray.length == 2){ let versionString: string
versionString = regexResultArray[1]; let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/
let regexResultArray = versionRegex.exec(dockerfileNameArg)
if (regexResultArray && regexResultArray.length === 2) {
versionString = regexResultArray[1]
} else { } else {
versionString = "latest"; versionString = 'latest'
} }
return versionString; return versionString
} }
export let dockerBaseImage = function(dockerfileContentArg:string){ /**
*
*/
export let dockerBaseImage = function(dockerfileContentArg: string){
let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n?/ let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n?/
let regexResultArray = baseImageRegex.exec(dockerfileContentArg) let regexResultArray = baseImageRegex.exec(dockerfileContentArg)
return regexResultArray[1]; return regexResultArray[1]
} }
export let dockerTag = function(registryArg:string,repoArg:string,versionArg:string,suffixArg?:string):string{ /**
let tagString:string; *
let registry = registryArg; */
let repo = repoArg; export let dockerTag = function(registryArg: string,repoArg: string,versionArg: string,suffixArg?: string): string{
let version = versionArg; let tagString: string
if(suffixArg){ let registry = registryArg
version = versionArg + "_" + suffixArg; let repo = repoArg
let version = versionArg
if (suffixArg) {
version = versionArg + '_' + suffixArg
}; };
tagString = registry + "/" + repo + ":" + version; tagString = registry + '/' + repo + ':' + version
return tagString; return tagString
}; }
export let cleanTagsArrayFunction = function(dockerfileArrayArg:Dockerfile[],trackingArrayArg:Dockerfile[]):string[]{ /**
let cleanTagsArray:string[] = []; *
dockerfileArrayArg.forEach(function(dockerfileArg){ */
if(trackingArrayArg.indexOf(dockerfileArg) == -1){ export let cleanTagsArrayFunction = function(dockerfileArrayArg: Dockerfile[],trackingArrayArg: Dockerfile[]): string[]{
cleanTagsArray.push(dockerfileArg.cleanTag); let cleanTagsArray: string[] = []
} dockerfileArrayArg.forEach(function(dockerfileArg){
}); if (trackingArrayArg.indexOf(dockerfileArg) === -1) {
return cleanTagsArray; cleanTagsArray.push(dockerfileArg.cleanTag)
}
})
return cleanTagsArray
} }

View File

@@ -1,17 +1,22 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash"; import * as env from './npmci.env'
import * as env from "./npmci.env"; import * as buildDocker from './npmci.build.docker'
import * as buildDocker from "./npmci.build.docker"
export let build = function(commandArg){ /**
switch(commandArg){ * defines possible build services
case "docker": */
return buildDocker.build(); export type TBuildService = 'docker';
/**
* builds for a specific service
*/
export let build = function(commandArg): plugins.q.Promise<any> {
switch (commandArg) {
case 'docker':
return buildDocker.build()
default: default:
plugins.beautylog.log("build target " + commandArg + " not recognised!"); plugins.beautylog.log('build target ' + commandArg + ' not recognised!')
} };
return
} }

12
ts/npmci.clean.ts Normal file
View File

@@ -0,0 +1,12 @@
import * as plugins from './npmci.plugins'
import * as paths from './npmci.paths'
/**
* cleans npmci config files
*/
export let clean = () => {
let done = plugins.q.defer()
plugins.smartfile.fs.removeSync(paths.NpmciPackageConfig)
done.resolve()
return done.promise
}

View File

@@ -1,16 +1,15 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash";
export let command = () => { export let command = () => {
let done = plugins.q.defer() let done = plugins.q.defer()
let wrappedCommand:string = ""; let wrappedCommand: string = ''
let argvArray = process.argv; let argvArray = process.argv
for(let i = 3; i < argvArray.length; i++){ for (let i = 3; i < argvArray.length; i++) {
wrappedCommand = wrappedCommand + argvArray[i]; wrappedCommand = wrappedCommand + argvArray[i]
if(i + 1 != argvArray.length) wrappedCommand = wrappedCommand + " "; if (i + 1 !== argvArray.length) { wrappedCommand = wrappedCommand + ' ' }
} }
bash(wrappedCommand); bash(wrappedCommand)
done.resolve(); done.resolve()
return done.promise return done.promise
} }

19
ts/npmci.config.ts Normal file
View File

@@ -0,0 +1,19 @@
import * as q from 'q'
import * as plugins from './npmci.plugins'
import * as paths from './npmci.paths'
export interface INpmciOptions {
globalNpmTools: string[]
}
export let getConfig = () => {
let done = q.defer<INpmciOptions>()
let npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd)
let defaultConfig: INpmciOptions = {
globalNpmTools: []
}
let npmciConfig = npmciNpmextra.dataFor<INpmciOptions>('npmci', defaultConfig)
done.resolve(npmciConfig)
return done.promise
}

View File

@@ -1,56 +1,58 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import * as paths from './npmci.paths'
import * as paths from "./npmci.paths"; import {GitRepo} from 'smartstring'
import {GitRepo} from "smartstring"; import {Dockerfile} from './npmci.build.docker'
import {Dockerfile} from "./npmci.build.docker"
export let repo:GitRepo; export let repo: GitRepo
if(process.env.CI_BUILD_REPO) repo = new GitRepo(process.env.CI_BUILD_REPO); if (process.env.CI_BUILD_REPO) repo = new GitRepo(process.env.CI_BUILD_REPO)
export let buildStage:string = process.env.CI_BUILD_STAGE; export let buildStage: string = process.env.CI_BUILD_STAGE
// handling config between commands // handling config between commands
export let dockerRegistry; // will be set by npmci.prepare export let dockerRegistry: string // will be set by npmci.prepare
export let dockerFilesBuilt:Dockerfile[] = []; export let setDockerRegistry = (dockerRegistryArg: string) => {
export let dockerFiles:Dockerfile[] = []; dockerRegistry = dockerRegistryArg
export let config; }
export let dockerFilesBuilt: Dockerfile[] = []
export let dockerFiles: Dockerfile[] = []
export let config = {
dockerRegistry: undefined, // this will be set later on store
dockerFilesBuilt: dockerFilesBuilt,
dockerFiles: dockerFiles,
project: undefined
}
export let configStore = () => { export let configStore = () => {
let config = { config.dockerRegistry = dockerRegistry
dockerRegistry: dockerRegistry,
dockerFilesBuilt: dockerFilesBuilt,
dockerFiles: dockerFiles
}
plugins.smartfile.memory.toFsSync( plugins.smartfile.memory.toFsSync(
JSON.stringify(config), JSON.stringify(config),
paths.NpmciPackageConfig paths.NpmciPackageConfig
); )
} }
let configLoad = () => { let configLoad = () => {
// internal config to transfer information in between npmci shell calls // internal config to transfer information in between npmci shell calls
try { try {
config = plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig,"json"); plugins.lodash.assign(config,plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig,'json'))
} }
catch(err){ catch (err) {
config = {}; configStore()
configStore(); plugins.beautylog.log('config initialized!')
plugins.beautylog.log("config initialized!");
} }
// project config // project config
try { try {
if(!config.project){ if (!config.project) {
config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir,"npmci.json"); config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir,'npmci.json')
plugins.beautylog.ok("project config found!"); plugins.beautylog.ok('project config found!')
}; };
} }
catch(err){ catch (err) {
config.project = {}; config.project = {}
plugins.beautylog.log("no project config found, so proceeding with default behaviour!"); plugins.beautylog.log('no project config found, so proceeding with default behaviour!')
} }
config.dockerRegistry ? dockerRegistry = config.dockerRegistry : void(0); config.dockerRegistry ? dockerRegistry = config.dockerRegistry : void(0)
config.dockerFilesBuilt ? dockerFilesBuilt = config.dockerFilesBuilt : void(0); config.dockerFilesBuilt ? dockerFilesBuilt = config.dockerFilesBuilt : void(0)
} }
configLoad(); configLoad()

View File

@@ -1,25 +1,43 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import * as configModule from './npmci.config'
import {bash} from "./npmci.bash"; import { bash } from './npmci.bash'
import { nvmAvailable } from './npmci.bash'
export let install = (versionArg) => { export let install = (versionArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.log("now installing " + "node ".green + ("version " + versionArg).yellow); plugins.beautylog.log(`now installing node version ${versionArg}`)
let version:string; let version: string
if(versionArg == "lts"){ if (versionArg === 'stable') {
version = "4"; version = 'stable'
} else if(versionArg == "legacy"){ } else if (versionArg === 'lts') {
version = "0" version = '6'
} else if (versionArg === 'legacy') {
version = '6'
} else { } else {
version = versionArg; version = versionArg
}; };
bash( if (nvmAvailable) {
"nvm install " + version + bash(`nvm install ${version} && nvm alias default ${version}`)
" && nvm alias default " + version plugins.beautylog.success(`Node version ${version} successfully installed!`)
); } else {
plugins.beautylog.success("Node version " + version + " successfully installed!"); plugins.beautylog.warn('Nvm not in path so staying at installed node version!')
bash("node -v"); };
bash("npm -v"); bash('node -v')
done.resolve(); bash('npm -v')
return done.promise;
// lets look for further config
configModule.getConfig()
.then(config => {
for (let npmTool of config.globalNpmTools) {
let whichOutput = bash(`which ${npmTool}`)
let toolAvailable: boolean = !(/not found/.test(whichOutput))
if (toolAvailable) {
plugins.beautylog.log(`Tool ${npmTool} is available`)
} else {
plugins.beautylog.info(`globally installing ${npmTool} from npm`)
bash(`npm install ${npmTool} -q -g`)
}
}
done.resolve()
})
return done.promise
} }

View File

@@ -1,9 +1,8 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins";
export let cwd = process.cwd(); export let cwd = process.cwd()
export let NpmciPackageRoot = plugins.path.join(__dirname,"../"); export let NpmciPackageRoot = plugins.path.join(__dirname,'../')
export let NpmciPackageConfig = plugins.path.join(NpmciPackageRoot,"./config.json"); export let NpmciPackageConfig = plugins.path.join(NpmciPackageRoot,'./config.json')
export let NpmciProjectDir = cwd; export let NpmciProjectDir = cwd
export let NpmciTestDir = plugins.path.join(cwd,"./test"); export let NpmciTestDir = plugins.path.join(cwd,'./test')

View File

@@ -1,15 +1,17 @@
import "typings-global"; export import beautylog = require('beautylog')
export import beautylog = require("beautylog"); export let gulp = require('gulp')
export let gulp = require("gulp"); export import gulpFunction = require('gulp-function')
export let gulpFunction = require("gulp-function"); export import lodash = require('lodash')
export import path = require("path"); export import npmextra = require('npmextra')
export import projectinfo = require("projectinfo"); export import path = require('path')
export let q = require("q"); export import projectinfo = require('projectinfo')
export let request = require("request"); export import q = require('q')
export let shelljs = require("shelljs"); export let request = require('request')
export import smartcli = require("smartcli"); export import shelljs = require('shelljs')
export import smartfile = require("smartfile"); export import smartcli = require('smartcli')
export import smartparam = require("smartparam"); export import smartfile = require('smartfile')
export import smartssh = require("smartssh"); export import smartparam = require('smartparam')
export import smartstring = require("smartstring"); export import smartsocket = require('smartsocket')
export let through2 = require("through2"); export import smartssh = require('smartssh')
export import smartstring = require('smartstring')
export import through2 = require('through2')

View File

@@ -1,70 +1,93 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash"; import * as env from './npmci.env'
import * as env from "./npmci.env" import * as sshModule from './npmci.ssh'
import * as sshModule from "./npmci.ssh"
// types
/**
* defines possible prepare services
*/
export type TPrepService = 'npm' | 'docker' | 'docker-gitlab' | 'ssh';
/**
* authenticates npm with token from env var
*/
let npm = function(){ let npm = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
let npmrcPrefix:string = "//registry.npmjs.org/:_authToken="; let npmrcPrefix: string = '//registry.npmjs.org/:_authToken='
let npmToken:string = process.env.NPMCI_TOKEN_NPM; let npmToken: string = process.env.NPMCI_TOKEN_NPM
let npmrcFileString = npmrcPrefix + npmToken; let npmrcFileString = npmrcPrefix + npmToken
if(npmToken){ if (npmToken) {
plugins.beautylog.info("found access token"); plugins.beautylog.info('found access token')
} else { } else {
plugins.beautylog.error("no access token found! Exiting!"); plugins.beautylog.error('no access token found! Exiting!')
process.exit(1); process.exit(1)
} }
plugins.smartfile.memory.toFsSync(npmrcFileString,"/root/.npmrc"); plugins.smartfile.memory.toFsSync(npmrcFileString,'/root/.npmrc')
done.resolve(); done.resolve()
return done.promise; return done.promise
}; }
/**
* logs in docker
*/
let docker = function(){ let docker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
env.dockerRegistry = "docker.io" env.setDockerRegistry('docker.io')
let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/ let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/
if(!process.env.NPMCI_LOGIN_DOCKER){ if (!process.env.NPMCI_LOGIN_DOCKER) {
plugins.beautylog.error("You have to specify Login Data to the Docker Registry"); plugins.beautylog.error('You have to specify Login Data to the Docker Registry')
process.exit(1); process.exit(1)
} }
plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com"); // Always also login to GitLab Registry plugins.shelljs.exec('docker login -u gitlab-ci-token -p ' + process.env.CI_BUILD_TOKEN + ' ' + 'registry.gitlab.com') // Always also login to GitLab Registry
let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER); let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER)
let username = dockerRegexResultArray[1]; let username = dockerRegexResultArray[1]
let password = dockerRegexResultArray[2]; let password = dockerRegexResultArray[2]
plugins.shelljs.exec("docker login -u " + username + " -p " + password); plugins.shelljs.exec('docker login -u ' + username + ' -p ' + password)
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
/**
* prepare docker for gitlab registry
*/
let dockerGitlab = function(){ let dockerGitlab = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
env.dockerRegistry = "registry.gitlab.com"; env.setDockerRegistry('registry.gitlab.com')
plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com"); plugins.shelljs.exec('docker login -u gitlab-ci-token -p ' + process.env.CI_BUILD_TOKEN + ' ' + 'registry.gitlab.com')
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
/**
* prepare ssh
*/
let ssh = function(){ let ssh = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
sshModule.ssh() sshModule.ssh()
.then(done.resolve); .then(done.resolve)
return done.promise; return done.promise
} }
export let prepare = function(serviceArg:string){ /**
* the main exported prepare function
* @param servieArg describes the service to prepare
*/
export let prepare = function(serviceArg: TPrepService){
switch (serviceArg) { switch (serviceArg) {
case "npm": case 'npm':
return npm(); return npm()
case "docker": case 'docker':
return docker(); return docker()
case "docker-gitlab": case 'docker-gitlab':
return dockerGitlab(); return dockerGitlab()
case "ssh": case 'ssh':
return ssh(); return ssh()
default: default:
break; break
} }
} }

View File

@@ -1,35 +1,49 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {prepare} from './npmci.prepare'
import {prepare} from "./npmci.prepare"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash"; import * as NpmciEnv from './npmci.env'
import * as NpmciEnv from "./npmci.env"; import * as NpmciBuildDocker from './npmci.build.docker'
import * as NpmciBuildDocker from "./npmci.build.docker"
export let publish = (serviceArg:string = "npm") => { /**
switch (serviceArg){ * type of supported services
case "npm": */
return publishNpm(); export type TPubService = 'npm' | 'docker';
case "docker":
return publishDocker(); /**
* the main exported publish function.
* @param pubServiceArg references targeted service to publish to
*/
export let publish = (pubServiceArg: TPubService = 'npm') => {
switch (pubServiceArg) {
case 'npm':
return publishNpm()
case 'docker':
return publishDocker()
} }
};
let publishNpm = function(){
let done = plugins.q.defer();
prepare("npm")
.then(function(){
bash("npm publish");
plugins.beautylog.ok("Done!") ;
done.resolve();
});
return done.promise;
} }
/**
* tries to publish current cwd to NPM registry
*/
let publishNpm = function(){
let done = plugins.q.defer()
prepare('npm')
.then(function(){
bash('npm publish')
plugins.beautylog.ok('Done!')
done.resolve()
})
return done.promise
}
/**
* tries to pubish current cwd to Docker registry
*/
let publishDocker = function(){ let publishDocker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.pushDockerfiles) .then(NpmciBuildDocker.pushDockerfiles)
.then(done.resolve); .then(done.resolve)
return done.promise; return done.promise
}; }

32
ts/npmci.servezone.ts Normal file
View File

@@ -0,0 +1,32 @@
import * as plugins from './npmci.plugins'
/**
* servezoneRegex is the regex that parses the servezone connection data
* parses strings in the form of "servezone.example.com|3000|somepassword"
*/
let servezoneRegex = /^(.*)\|(.*)\|(.*)/
/**
* holds the results of the parsed servezone env string
*/
let servezoneRegexResultArray = servezoneRegex.exec(process.env.NPMCI_SERVEZONE)
/**
* the data object that is used for the smartsocket client object
*/
let smartsocketClientConstructorOptions = {
alias: 'npmci',
password: servezoneRegexResultArray[3],
port: parseInt(servezoneRegexResultArray[2]),
role: 'ci',
url: servezoneRegexResultArray[1]
}
/**
* the main run function to submit a service to a servezone
*/
export let run = (configArg) => {
new plugins.smartsocket.SmartsocketClient(
smartsocketClientConstructorOptions
)
}

View File

@@ -1,42 +1,50 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins";
let sshRegex = /^(.*)\|(.*)\|(.*)/ let sshRegex = /^(.*)\|(.*)\|(.*)/
let sshInstance:plugins.smartssh.SshInstance; let sshInstance: plugins.smartssh.SshInstance
/**
* checks for ENV vars in form of NPMCI_SSHKEY_* and deploys any found ones
*/
export let ssh = () => { export let ssh = () => {
let done = plugins.q.defer(); let done = plugins.q.defer()
sshInstance = new plugins.smartssh.SshInstance(); sshInstance = new plugins.smartssh.SshInstance() // init ssh instance
plugins.smartparam.forEachMinimatch(process.env,"NPMCI_SSHKEY_*",evaluateSshEnv); plugins.smartparam.forEachMinimatch(process.env,'NPMCI_SSHKEY_*',evaluateSshEnv)
if(!process.env.NPMTS_TEST){ if (!process.env.NPMTS_TEST) {
sshInstance.writeToDisk() sshInstance.writeToDisk()
} else { } else {
plugins.beautylog.log("In test mode, so not storing SSH keys to disk!"); plugins.beautylog.log('In test mode, so not storing SSH keys to disk!')
}; };
done.resolve(); done.resolve()
return done.promise; return done.promise
}; }
let evaluateSshEnv = (sshkeyEnvVarArg) => { /**
let resultArray = sshRegex.exec(sshkeyEnvVarArg); * gets called for each found SSH ENV Var and deploys it
let sshKey = new plugins.smartssh.SshKey(); */
plugins.beautylog.info("Found SSH identity for " + resultArray[1]); let evaluateSshEnv = (sshkeyEnvVarArg) => {
if(notUndefined(resultArray[1])){ let resultArray = sshRegex.exec(sshkeyEnvVarArg)
plugins.beautylog.log("---> host defined!") let sshKey = new plugins.smartssh.SshKey()
sshKey.host = resultArray[1]; plugins.beautylog.info('Found SSH identity for ' + resultArray[1])
} if (notUndefined(resultArray[1])) {
if(notUndefined(resultArray[2])){ plugins.beautylog.log('---> host defined!')
plugins.beautylog.log("---> privKey defined!") sshKey.host = resultArray[1]
sshKey.privKeyBase64 = resultArray[2]; }
}; if (notUndefined(resultArray[2])) {
if(notUndefined(resultArray[3])){ plugins.beautylog.log('---> privKey defined!')
"---> pubKey defined!" sshKey.privKeyBase64 = resultArray[2]
sshKey.pubKeyBase64 = resultArray[3]; };
}; if (notUndefined(resultArray[3])) {
'---> pubKey defined!'
sshInstance.addKey(sshKey); sshKey.pubKeyBase64 = resultArray[3]
}; };
let notUndefined = (stringArg:string) => { sshInstance.addKey(sshKey)
return (stringArg && stringArg != "undefined" && stringArg != "##"); }
/**
* checks if not undefined
*/
let notUndefined = (stringArg: string) => {
return (stringArg && stringArg !== 'undefined' && stringArg !== '##')
} }

View File

@@ -1,13 +0,0 @@
import "typings-global";
import * as plugins from "./npmci.plugins";
import {prepare} from "./npmci.prepare";
import {bash} from "./npmci.bash";
import * as env from "./npmci.env";
export let tag = function(commandOptionArg){
}
export let retag = function(){
};

View File

@@ -1,8 +0,0 @@
import * as plugins from "./npmci.plugins"
import * as NpmciEnv from "./npmci.env";
import {bashBare} from "./npmci.bash";
import * as NpmciBuildDocker from "./npmci.build.docker";
export let testDocker = () => {
};

View File

@@ -1,50 +1,49 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash"; import {install} from './npmci.install'
import {install} from "./npmci.install"; import * as env from './npmci.env'
import * as env from "./npmci.env"; import * as NpmciBuildDocker from './npmci.build.docker'
import * as NpmciBuildDocker from "./npmci.build.docker";
export let test = (versionArg) => { export let test = (versionArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer()
if(versionArg == "docker"){ if (versionArg === 'docker') {
testDocker() testDocker()
.then(()=>{ .then(() => {
done.resolve(); done.resolve()
}); })
} else { } else {
install(versionArg) install(versionArg)
.then(npmDependencies) .then(npmDependencies)
.then(npmTest) .then(npmTest)
.then(()=>{ .then(() => {
done.resolve(); done.resolve()
}); })
} }
return done.promise; return done.promise
} }
let npmDependencies = function(){ let npmDependencies = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now installing dependencies:"); plugins.beautylog.info('now installing dependencies:')
bash("npm install"); bash('npm install')
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
let npmTest = () => { let npmTest = () => {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now starting tests:"); plugins.beautylog.info('now starting tests:')
bash("npm test"); bash('npm test')
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
let testDocker = function(){ let testDocker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.testDockerfiles) .then(NpmciBuildDocker.testDockerfiles)
.then(done.resolve) .then(done.resolve)
return done.promise; return done.promise
} }

View File

@@ -1,32 +1,30 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import { prepare } from './npmci.prepare'
import {prepare} from "./npmci.prepare"; import { bash } from './npmci.bash'
import {bash} from "./npmci.bash";
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;
export let trigger = function () { export let trigger = function () {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now running triggers"); plugins.beautylog.info('now running triggers')
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_TRIGGER_*", evaluateTrigger); plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger)
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
let evaluateTrigger = (triggerEnvVarArg) => { let evaluateTrigger = (triggerEnvVarArg) => {
let triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg); let triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg)
let regexDomain = triggerRegexResultArray[1]; let regexDomain = triggerRegexResultArray[1]
let regexProjectId = triggerRegexResultArray[2]; let regexProjectId = triggerRegexResultArray[2]
let regexProjectTriggerToken = triggerRegexResultArray[3]; let regexProjectTriggerToken = triggerRegexResultArray[3]
let regexRefName = triggerRegexResultArray[4]; let regexRefName = triggerRegexResultArray[4]
let regexTriggerName; let regexTriggerName
if (triggerRegexResultArray.length == 6) { if (triggerRegexResultArray.length === 6) {
regexTriggerName = triggerRegexResultArray[5]; regexTriggerName = triggerRegexResultArray[5]
} else { } else {
regexTriggerName = "Unnamed Trigger"; regexTriggerName = 'Unnamed Trigger'
} }
plugins.beautylog.info("Found Trigger!"); plugins.beautylog.info('Found Trigger!')
plugins.beautylog.log("triggering build for ref " + regexRefName + " of " + regexTriggerName); plugins.beautylog.log('triggering build for ref ' + regexRefName + ' of ' + regexTriggerName)
plugins.request.post("https://gitlab.com/api/v3/projects/" + regexProjectId + "/trigger/builds", { form: { token: regexProjectTriggerToken, ref: regexRefName } }); plugins.request.post('https://gitlab.com/api/v3/projects/' + regexProjectId + '/trigger/builds', { form: { token: regexProjectTriggerToken, ref: regexRefName } })
} }

3
tslint.json Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": "tslint-config-standard"
}