Compare commits

...

15 Commits

Author SHA1 Message Date
449512e156 1.2.13 2017-10-07 14:02:27 +02:00
758e677bab update dependencies 2017-10-07 14:02:24 +02:00
42ffb4a8dd 1.2.12 2017-07-16 13:58:48 +02:00
9176b56035 update dependencies and greeting 2017-07-16 13:58:41 +02:00
b3d78f8ce5 1.2.11 2017-04-21 13:44:25 +02:00
b6a6aac8e5 now includes smartanalytics 2017-04-21 13:44:18 +02:00
32f5ead4f4 1.2.10 2017-04-20 21:57:47 +02:00
c29a261cb6 update to latest standards 2017-04-20 21:57:44 +02:00
de57d45947 1.2.9 2017-04-02 14:54:18 +02:00
00bf1532ca update readme 2017-04-02 14:54:15 +02:00
38fc672bf6 update ci 2017-04-02 14:51:38 +02:00
83771df11d 1.2.8 2017-04-02 14:48:27 +02:00
822e480bdf fix command execution 2017-04-02 14:48:23 +02:00
77c6ef99c1 1.2.7 2017-03-29 01:49:32 +02:00
8e3991c121 update gitlab ci yml 2017-03-29 01:49:27 +02:00
18 changed files with 703 additions and 748 deletions

View File

@ -6,22 +6,25 @@ stages:
- test - test
- release - release
- trigger - trigger
- pages
test: test:
stage: test stage: test
script: script:
- npmci test stable - npmci node install stable
- npmci npm install
- npmci npm test
tags: tags:
- docker - docker
- lossless - lossless
- priv - priv
release: release:
image: hosttoday/ht-docker-node:npmts
stage: release stage: release
environment: npmjs-com_registry environment: npmjs-com_registry
script: script:
- npmci publish - npmci npm prepare
- npmci npm publish
only: only:
- tags - tags
tags: tags:
@ -30,7 +33,6 @@ release:
- priv - priv
trigger: trigger:
image: hosttoday/ht-docker-node:npmts
stage: trigger stage: trigger
script: script:
- npmci trigger - npmci trigger
@ -40,3 +42,18 @@ trigger:
- docker - docker
- lossless - lossless
- priv - priv
pages:
image: hosttoday/ht-docker-node:npmci
stage: pages
script:
- npmci command yarn global add npmpage
- npmci command npmpage
only:
- tags
tags:
- docker
artifacts:
expire_in: 1 week
paths:
- public

View File

@ -55,5 +55,6 @@ dockersSock | wether or not the testcontainer will have access to the docker.soc
For further information read the linked docs at the top of this README. For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![npm](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://git.zone) [![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://git.zone)

View File

@ -1,5 +1,6 @@
FROM hosttoday/ht-docker-node:npmci FROM hosttoday/ht-docker-node:npmci
RUN yarn global add npmdocker
COPY ./buildContextDir /workspace COPY ./buildContextDir /workspace
WORKDIR /workspace WORKDIR /workspace
ENV CI=true ENV CI=true
CMD ["npmci","test","stable"]; CMD ["npmdocker","runinside"];

1
dist/cli.js vendored
View File

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

32
dist/npmdocker.cli.js vendored
View File

@ -12,19 +12,46 @@ const plugins = require("./npmdocker.plugins");
// modules // modules
const ConfigModule = require("./npmdocker.config"); const ConfigModule = require("./npmdocker.config");
const DockerModule = require("./npmdocker.docker"); const DockerModule = require("./npmdocker.docker");
/**
* smartanalytics
* this data is fully anonymized (no Ips or any other personal information is tracked).
* It just keeps track which of our tools are really used...
* ... so we know where to spend our limited resources for improving them.
* Since yarn is out and there is heavy caching going on,
* pure download stats are just not reliable enough for us anymore
* Feel free to dig into the smartanalytics package, if you are interested in how it works.
* It is just an https call to Google Analytics.
* Our privacy policy can be found here: https://lossless.gmbh/privacy.html
*/
let npmdockerAnalytics = new plugins.smartanalytics.AnalyticsAccount('npmdocker', 'UA-64087619-5');
npmdockerAnalytics.sendEvent('npm', 'exec', 'git.zone');
let npmdockerCli = new plugins.smartcli.Smartcli(); let npmdockerCli = new plugins.smartcli.Smartcli();
exports.run = () => { exports.run = () => {
npmdockerCli.standardTask().then((argvArg) => __awaiter(this, void 0, void 0, function* () { npmdockerCli.standardTask().then((argvArg) => __awaiter(this, void 0, void 0, function* () {
plugins.beautylog.figletSync('npmdocker');
let configArg = yield ConfigModule.run() let configArg = yield ConfigModule.run()
.then(DockerModule.run); .then(DockerModule.run);
if (configArg.exitCode === 0) { if (configArg.exitCode === 0) {
plugins.beautylog.success('container ended all right!'); plugins.beautylog.success('container ended all right!');
} }
else { else {
plugins.beautylog.error('container ended with error!'); plugins.beautylog.error(`container ended with error! Exit Code is ${configArg.exitCode}`);
process.exit(1); process.exit(1);
} }
})); }));
/**
* this command is executed inside docker and meant for use from outside docker
*/
npmdockerCli.addCommand('runinside').then((argvArg) => __awaiter(this, void 0, void 0, function* () {
plugins.beautylog.ok('Allright. We are now in Docker!');
plugins.beautylog.log('now trying to run your specified command');
let configArg = yield ConfigModule.run();
yield plugins.smartshell.exec(configArg.command).then(response => {
if (response.exitCode !== 0) {
process.exit(1);
}
});
}));
npmdockerCli.addCommand('clean').then((argvArg) => __awaiter(this, void 0, void 0, function* () { npmdockerCli.addCommand('clean').then((argvArg) => __awaiter(this, void 0, void 0, function* () {
plugins.beautylog.ora.start(); plugins.beautylog.ora.start();
plugins.beautylog.ora.text('cleaning up docker env...'); plugins.beautylog.ora.text('cleaning up docker env...');
@ -43,9 +70,10 @@ exports.run = () => {
plugins.beautylog.ora.endOk('docker environment now is clean!'); plugins.beautylog.ora.endOk('docker environment now is clean!');
})); }));
npmdockerCli.addCommand('speedtest').then((argvArg) => __awaiter(this, void 0, void 0, function* () { npmdockerCli.addCommand('speedtest').then((argvArg) => __awaiter(this, void 0, void 0, function* () {
plugins.beautylog.figletSync('npmdocker');
plugins.beautylog.ok('Starting speedtest'); plugins.beautylog.ok('Starting speedtest');
yield plugins.smartshell.exec(`docker pull tianon/speedtest && docker run --rm tianon/speedtest`); yield plugins.smartshell.exec(`docker pull tianon/speedtest && docker run --rm tianon/speedtest`);
})); }));
npmdockerCli.startParse(); npmdockerCli.startParse();
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLmNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLCtDQUE4QztBQUc5QyxVQUFVO0FBQ1YsbURBQWtEO0FBQ2xELG1EQUFrRDtBQUVsRCxJQUFJLFlBQVksR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7QUFFdkMsUUFBQSxHQUFHLEdBQUc7SUFDZixZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQU8sT0FBTztRQUM3QyxJQUFJLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUU7YUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN6QixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakIsQ0FBQztJQUNILENBQUMsQ0FBQSxDQUFDLENBQUE7SUFFRixZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFPLE9BQU87UUFDbEQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7UUFDdkQsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7WUFDdEUsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBRTVELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO1lBQzVELE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQTtZQUU3RCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtZQUNoRCxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUE7WUFFaEYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDMUQsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO1lBRWxFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1lBQ3JELE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQTtRQUMzRixDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7SUFDakUsQ0FBQyxDQUFBLENBQUMsQ0FBQTtJQUVGLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQU8sT0FBTztRQUN0RCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzFDLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQTtJQUNuRyxDQUFDLENBQUEsQ0FBQyxDQUFBO0lBRUYsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFBO0FBQzNCLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLmNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLCtDQUE4QztBQUc5QyxVQUFVO0FBQ1YsbURBQWtEO0FBQ2xELG1EQUFrRDtBQUdsRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQ2pHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLFVBQVUsQ0FBQyxDQUFBO0FBRXJELElBQUksWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtBQUV2QyxRQUFBLEdBQUcsR0FBRztJQUNmLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBTyxPQUFPO1FBQzdDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3pDLElBQUksU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRTthQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3pCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUN6RixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDLENBQUEsQ0FBQyxD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

View File

@ -25,8 +25,8 @@ let getQenvKeyValueObject = () => __awaiter(this, void 0, void 0, function* () {
let buildConfig = (qenvKeyValueObjectArrayArg) => __awaiter(this, void 0, void 0, function* () { let buildConfig = (qenvKeyValueObjectArrayArg) => __awaiter(this, void 0, void 0, function* () {
let npmextra = new plugins.npmextra.Npmextra(paths.cwd); let npmextra = new plugins.npmextra.Npmextra(paths.cwd);
let config = npmextra.dataFor('npmdocker', { let config = npmextra.dataFor('npmdocker', {
baseImage: 'hosttoday/ht-docker-node:npmts', baseImage: 'hosttoday/ht-docker-node:npmci',
command: 'npm test', command: 'npmci test stable',
dockerSock: false, dockerSock: false,
keyValueObjectArray: qenvKeyValueObjectArrayArg keyValueObjectArray: qenvKeyValueObjectArrayArg
}); });
@ -36,4 +36,4 @@ exports.run = () => __awaiter(this, void 0, void 0, function* () {
let config = yield getQenvKeyValueObject().then(buildConfig); let config = yield getQenvKeyValueObject().then(buildConfig);
return config; return config;
}); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLCtDQUE4QztBQUM5QywyQ0FBMEM7QUFXekMsQ0FBQztBQUVGLElBQUkscUJBQXFCLEdBQUc7SUFDMUIsSUFBSSx1QkFBMEMsQ0FBQTtJQUM5QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRix1QkFBdUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUE7SUFDM0YsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sdUJBQXVCLEdBQUcsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFBQSxDQUFDO0lBQ0YsTUFBTSxDQUFDLHVCQUF1QixDQUFBO0FBQ2hDLENBQUMsQ0FBQSxDQUFBO0FBRUQsSUFBSSxXQUFXLEdBQUcsQ0FBTywwQkFBNkM7SUFDcEUsSUFBSSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkQsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FDM0IsV0FBVyxFQUNYO1FBQ0UsU0FBUyxFQUFFLGdDQUFnQztRQUMzQyxPQUFPLEVBQUUsVUFBVTtRQUNuQixVQUFVLEVBQUUsS0FBSztRQUNqQixtQkFBbUIsRUFBRSwwQkFBMEI7S0FDaEQsQ0FDRixDQUFBO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSxDQUFBO0FBRVUsUUFBQSxHQUFHLEdBQUc7SUFDZixJQUFJLE1BQU0sR0FBRyxNQUFNLHFCQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUEsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWRvY2tlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLCtDQUE4QztBQUM5QywyQ0FBMEM7QUFXekMsQ0FBQztBQUVGLElBQUkscUJBQXFCLEdBQUc7SUFDMUIsSUFBSSx1QkFBMEMsQ0FBQTtJQUM5QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRix1QkFBdUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUE7SUFDM0YsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sdUJBQXVCLEdBQUcsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFBQSxDQUFDO0lBQ0YsTUFBTSxDQUFDLHVCQUF1QixDQUFBO0FBQ2hDLENBQUMsQ0FBQSxDQUFBO0FBRUQsSUFBSSxXQUFXLEdBQUcsQ0FBTywwQkFBNkM7SUFDcEUsSUFBSSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkQsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FDM0IsV0FBVyxFQUNYO1FBQ0UsU0FBUyxFQUFFLGdDQUFnQztRQUMzQyxPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLG1CQUFtQixFQUFFLDBCQUEwQjtLQUNoRCxDQUNGLENBQUE7SUFDRCxNQUFNLENBQUMsTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBLENBQUE7QUFFVSxRQUFBLEdBQUcsR0FBRztJQUNmLElBQUksTUFBTSxHQUFHLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUQsTUFBTSxDQUFDLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQSxDQUFBIn0=

File diff suppressed because one or more lines are too long

View File

@ -5,8 +5,9 @@ import * as path from 'path';
import * as projectinfo from 'projectinfo'; import * as projectinfo from 'projectinfo';
import * as q from 'smartq'; import * as q from 'smartq';
import * as qenv from 'qenv'; import * as qenv from 'qenv';
import * as smartanalytics from 'smartanalytics';
import * as smartcli from 'smartcli'; import * as smartcli from 'smartcli';
import * as smartfile from 'smartfile'; import * as smartfile from 'smartfile';
import * as smartshell from 'smartshell'; import * as smartshell from 'smartshell';
import * as smartstring from 'smartstring'; import * as smartstring from 'smartstring';
export { beautylog, npmextra, path, projectinfo, q, qenv, smartcli, smartfile, smartshell, smartstring }; export { beautylog, npmextra, path, projectinfo, q, qenv, smartanalytics, smartcli, smartfile, smartshell, smartstring };

View File

@ -13,6 +13,8 @@ const q = require("smartq");
exports.q = q; exports.q = q;
const qenv = require("qenv"); const qenv = require("qenv");
exports.qenv = qenv; exports.qenv = qenv;
const smartanalytics = require("smartanalytics");
exports.smartanalytics = smartanalytics;
const smartcli = require("smartcli"); const smartcli = require("smartcli");
exports.smartcli = smartcli; exports.smartcli = smartcli;
const smartfile = require("smartfile"); const smartfile = require("smartfile");
@ -21,4 +23,4 @@ const smartshell = require("smartshell");
exports.smartshell = smartshell; exports.smartshell = smartshell;
const smartstring = require("smartstring"); const smartstring = require("smartstring");
exports.smartstring = smartstring; exports.smartstring = smartstring;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1kb2NrZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix1Q0FBc0M7QUFZcEMsOEJBQVM7QUFYWCxxQ0FBb0M7QUFZbEMsNEJBQVE7QUFYViw2QkFBNEI7QUFZMUIsb0JBQUk7QUFYTiwyQ0FBMEM7QUFZeEMsa0NBQVc7QUFYYiw0QkFBMkI7QUFZekIsY0FBQztBQVhILDZCQUE0QjtBQVkxQixvQkFBSTtBQVhOLHFDQUFvQztBQVlsQyw0QkFBUTtBQVhWLHVDQUFzQztBQVlwQyw4QkFBUztBQVhYLHlDQUF3QztBQVl0QyxnQ0FBVTtBQVhaLDJDQUEwQztBQVl4QyxrQ0FBVyJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1kb2NrZXIucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix1Q0FBc0M7QUFhcEMsOEJBQVM7QUFaWCxxQ0FBb0M7QUFhbEMsNEJBQVE7QUFaViw2QkFBNEI7QUFhMUIsb0JBQUk7QUFaTiwyQ0FBMEM7QUFheEMsa0NBQVc7QUFaYiw0QkFBMkI7QUFhekIsY0FBQztBQVpILDZCQUE0QjtBQWExQixvQkFBSTtBQVpOLGlEQUFnRDtBQWE5Qyx3Q0FBYztBQVpoQixxQ0FBb0M7QUFhbEMsNEJBQVE7QUFaVix1Q0FBc0M7QUFhcEMsOEJBQVM7QUFaWCx5Q0FBd0M7QUFhdEMsZ0NBQVU7QUFaWiwyQ0FBMEM7QUFheEMsa0NBQVcifQ==

View File

@ -2,21 +2,13 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./npmdocker.plugins"); const plugins = require("./npmdocker.plugins");
exports.dockerfileSnippet = (optionsArg) => { exports.dockerfileSnippet = (optionsArg) => {
let commandArray = optionsArg.command.split(/\s/);
let commandString = "";
for (let stringItem of commandArray) {
if (!(commandString == "")) {
commandString = commandString + ",";
}
commandString = commandString + '"' + stringItem + '"';
}
;
return plugins.smartstring.indent.normalize(` return plugins.smartstring.indent.normalize(`
FROM ${optionsArg.baseImage} FROM ${optionsArg.baseImage}
RUN yarn global add npmdocker
COPY ./buildContextDir /workspace COPY ./buildContextDir /workspace
WORKDIR /workspace WORKDIR /workspace
ENV CI=true ENV CI=true
CMD [${commandString}]; CMD ["npmdocker","runinside"];
`); `);
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnNuaXBwZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZG9ja2VyLnNuaXBwZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQStDO0FBT3BDLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxVQUE2QjtJQUN6RCxJQUFJLFlBQVksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxJQUFJLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDOUIsR0FBRyxDQUFBLENBQUMsSUFBSSxVQUFVLElBQUksWUFBWSxDQUFDLENBQUEsQ0FBQztRQUNoQyxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQztZQUN2QixhQUFhLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsYUFBYSxHQUFHLGFBQWEsR0FBRyxHQUFHLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUMzRCxDQUFDO0lBQUEsQ0FBQztJQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7ZUFDakMsVUFBVSxDQUFDLFNBQVM7Ozs7ZUFJcEIsYUFBYTtLQUN2QixDQUFDLENBQUM7QUFDUCxDQUFDLENBQUEifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZG9ja2VyLnNuaXBwZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZG9ja2VyLnNuaXBwZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQStDO0FBT3BDLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxVQUE4QjtJQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2VBQy9CLFVBQVUsQ0FBQyxTQUFTOzs7Ozs7S0FNOUIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBIn0=

1
docs/index.md Normal file
View File

@ -0,0 +1 @@
Docs for npmpage coming soon.

View File

@ -1,6 +1,6 @@
{ {
"name": "npmdocker", "name": "npmdocker",
"version": "1.2.6", "version": "1.2.13",
"description": "develop npm modules cross platform with docker", "description": "develop npm modules cross platform with docker",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -35,15 +35,16 @@
"devDependencies": {}, "devDependencies": {},
"dependencies": { "dependencies": {
"@types/shelljs": "0.x.x", "@types/shelljs": "0.x.x",
"beautylog": "^6.1.5", "beautylog": "^6.1.10",
"npmextra": "^2.0.5", "npmextra": "^2.0.9",
"projectinfo": "^3.0.2", "projectinfo": "^3.0.4",
"qenv": "^1.1.3", "qenv": "^1.1.7",
"smartcli": "^2.0.1", "smartanalytics": "^2.0.9",
"smartfile": "^4.1.9", "smartcli": "^2.0.7",
"smartq": "^1.1.1", "smartfile": "^4.2.26",
"smartshell": "^1.0.6", "smartq": "^1.1.6",
"smartshell": "^1.0.18",
"smartstring": "^2.0.24", "smartstring": "^2.0.24",
"typings-global": "^1.0.14" "typings-global": "^1.0.20"
} }
} }

View File

@ -5,20 +5,50 @@ import * as paths from './npmdocker.paths'
import * as ConfigModule from './npmdocker.config' import * as ConfigModule from './npmdocker.config'
import * as DockerModule from './npmdocker.docker' import * as DockerModule from './npmdocker.docker'
/**
* smartanalytics
* this data is fully anonymized (no Ips or any other personal information is tracked).
* It just keeps track which of our tools are really used...
* ... so we know where to spend our limited resources for improving them.
* Since yarn is out and there is heavy caching going on,
* pure download stats are just not reliable enough for us anymore
* Feel free to dig into the smartanalytics package, if you are interested in how it works.
* It is just an https call to Google Analytics.
* Our privacy policy can be found here: https://lossless.gmbh/privacy.html
*/
let npmdockerAnalytics = new plugins.smartanalytics.AnalyticsAccount('npmdocker','UA-64087619-5')
npmdockerAnalytics.sendEvent('npm','exec','git.zone')
let npmdockerCli = new plugins.smartcli.Smartcli() let npmdockerCli = new plugins.smartcli.Smartcli()
export let run = () => { export let run = () => {
npmdockerCli.standardTask().then(async (argvArg) => { npmdockerCli.standardTask().then(async (argvArg) => {
plugins.beautylog.figletSync('npmdocker')
let configArg = await ConfigModule.run() let configArg = await ConfigModule.run()
.then(DockerModule.run) .then(DockerModule.run)
if (configArg.exitCode === 0) { if (configArg.exitCode === 0) {
plugins.beautylog.success('container ended all right!') plugins.beautylog.success('container ended all right!')
} else { } else {
plugins.beautylog.error('container ended with error!') plugins.beautylog.error(`container ended with error! Exit Code is ${configArg.exitCode}`)
process.exit(1) process.exit(1)
} }
}) })
/**
* this command is executed inside docker and meant for use from outside docker
*/
npmdockerCli.addCommand('runinside').then(async (argvArg) => {
plugins.beautylog.ok('Allright. We are now in Docker!')
plugins.beautylog.log('now trying to run your specified command')
let configArg = await ConfigModule.run()
await plugins.smartshell.exec(configArg.command).then(response => {
if (response.exitCode !== 0) {
process.exit(1)
}
})
})
npmdockerCli.addCommand('clean').then(async (argvArg) => { npmdockerCli.addCommand('clean').then(async (argvArg) => {
plugins.beautylog.ora.start() plugins.beautylog.ora.start()
plugins.beautylog.ora.text('cleaning up docker env...') plugins.beautylog.ora.text('cleaning up docker env...')
@ -42,6 +72,7 @@ export let run = () => {
}) })
npmdockerCli.addCommand('speedtest').then(async (argvArg) => { npmdockerCli.addCommand('speedtest').then(async (argvArg) => {
plugins.beautylog.figletSync('npmdocker')
plugins.beautylog.ok('Starting speedtest') plugins.beautylog.ok('Starting speedtest')
await plugins.smartshell.exec(`docker pull tianon/speedtest && docker run --rm tianon/speedtest`) await plugins.smartshell.exec(`docker pull tianon/speedtest && docker run --rm tianon/speedtest`)
}) })

View File

@ -27,8 +27,8 @@ let buildConfig = async (qenvKeyValueObjectArrayArg: IKeyValueObject[]) => {
let config = npmextra.dataFor<IConfig>( let config = npmextra.dataFor<IConfig>(
'npmdocker', 'npmdocker',
{ {
baseImage: 'hosttoday/ht-docker-node:npmts', baseImage: 'hosttoday/ht-docker-node:npmci',
command: 'npm test', command: 'npmci test stable',
dockerSock: false, dockerSock: false,
keyValueObjectArray: qenvKeyValueObjectArrayArg keyValueObjectArray: qenvKeyValueObjectArrayArg
} }

View File

@ -67,7 +67,11 @@ let buildDockerImage = async () => {
} }
await plugins.smartshell.execSilent( await plugins.smartshell.execSilent(
`docker build -f ${paths.dockerfile} -t ${dockerData.imageTag} ${paths.assets}` `docker build -f ${paths.dockerfile} -t ${dockerData.imageTag} ${paths.assets}`
).then(async () => { ).then(async (response) => {
if (response.exitCode !== 0) {
console.log(response.stdout)
process.exit(1)
}
plugins.beautylog.ok('Dockerimage built!') plugins.beautylog.ok('Dockerimage built!')
}) })
}) })
@ -119,7 +123,11 @@ let deleteDockerContainer = async () => {
* cleans up deletes the test image * cleans up deletes the test image
*/ */
let deleteDockerImage = async () => { let deleteDockerImage = async () => {
await plugins.smartshell.exec(`docker rmi ${dockerData.imageTag}`) await plugins.smartshell.execSilent(`docker rmi ${dockerData.imageTag}`).then(async (response) => {
if (response.exitCode !== 0) {
console.log(response.stdout)
}
})
} }
/** /**
@ -162,4 +170,4 @@ export let run = async (configArg: IConfig): Promise<IConfig> => {
.then(postClean) .then(postClean)
.catch(err => { console.log(err) }) .catch(err => { console.log(err) })
return config return config
} }

View File

@ -5,6 +5,7 @@ import * as path from 'path'
import * as projectinfo from 'projectinfo' import * as projectinfo from 'projectinfo'
import * as q from 'smartq' import * as q from 'smartq'
import * as qenv from 'qenv' import * as qenv from 'qenv'
import * as smartanalytics from 'smartanalytics'
import * as smartcli from 'smartcli' import * as smartcli from 'smartcli'
import * as smartfile from 'smartfile' import * as smartfile from 'smartfile'
import * as smartshell from 'smartshell' import * as smartshell from 'smartshell'
@ -17,6 +18,7 @@ export {
projectinfo, projectinfo,
q, q,
qenv, qenv,
smartanalytics,
smartcli, smartcli,
smartfile, smartfile,
smartshell, smartshell,

View File

@ -1,24 +1,17 @@
import * as plugins from "./npmdocker.plugins"; import * as plugins from "./npmdocker.plugins";
export interface IDockerfileSnippet { export interface IDockerfileSnippet {
baseImage:string; baseImage: string;
command:string; command: string;
} }
export let dockerfileSnippet = (optionsArg:IDockerfileSnippet):string => { export let dockerfileSnippet = (optionsArg: IDockerfileSnippet): string => {
let commandArray = optionsArg.command.split(/\s/); return plugins.smartstring.indent.normalize(`
let commandString:string = "";
for(let stringItem of commandArray){
if(!(commandString == "")){
commandString = commandString + ",";
}
commandString = commandString + '"' + stringItem + '"';
};
return plugins.smartstring.indent.normalize(`
FROM ${optionsArg.baseImage} FROM ${optionsArg.baseImage}
RUN yarn global add npmdocker
COPY ./buildContextDir /workspace COPY ./buildContextDir /workspace
WORKDIR /workspace WORKDIR /workspace
ENV CI=true ENV CI=true
CMD [${commandString}]; CMD ["npmdocker","runinside"];
`); `)
} }

1250
yarn.lock

File diff suppressed because it is too large Load Diff