tsdocker/ts/npmdocker.cli.ts

68 lines
2.5 KiB
TypeScript
Raw Permalink Normal View History

import * as plugins from './npmdocker.plugins';
import * as paths from './npmdocker.paths';
2017-02-11 22:37:01 +00:00
// modules
import * as ConfigModule from './npmdocker.config';
import * as DockerModule from './npmdocker.docker';
2017-04-21 11:44:18 +00:00
let npmdockerCli = new plugins.smartcli.Smartcli();
2017-02-11 22:37:01 +00:00
export let run = () => {
npmdockerCli.standardTask().subscribe(async argvArg => {
plugins.beautylog.figletSync('npmdocker');
let configArg = await ConfigModule.run().then(DockerModule.run);
2017-02-11 22:37:01 +00:00
if (configArg.exitCode === 0) {
plugins.beautylog.success('container ended all right!');
2017-02-11 22:37:01 +00:00
} else {
plugins.beautylog.error(`container ended with error! Exit Code is ${configArg.exitCode}`);
process.exit(1);
2017-02-11 22:37:01 +00:00
}
});
2017-02-11 22:37:01 +00:00
2017-07-16 11:58:41 +00:00
/**
* this command is executed inside docker and meant for use from outside docker
*/
npmdockerCli.addCommand('runinside').subscribe(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();
2017-04-02 12:48:23 +00:00
await plugins.smartshell.exec(configArg.command).then(response => {
if (response.exitCode !== 0) {
process.exit(1);
2017-04-02 12:48:23 +00:00
}
});
});
2017-04-02 12:48:23 +00:00
npmdockerCli.addCommand('clean').subscribe(async argvArg => {
plugins.beautylog.ora.start();
plugins.beautylog.ora.text('cleaning up docker env...');
2017-02-11 22:37:01 +00:00
if (argvArg.all) {
plugins.beautylog.ora.text('killing any running docker containers...');
await plugins.smartshell.exec(`docker kill $(docker ps -q)`);
2017-02-11 22:37:01 +00:00
plugins.beautylog.ora.text('removing stopped containers...');
await plugins.smartshell.exec(`docker rm $(docker ps -a -q)`);
2017-02-11 22:37:01 +00:00
plugins.beautylog.ora.text('removing images...');
await plugins.smartshell.exec(`docker rmi $(docker images -q -f dangling=true)`);
2017-02-11 22:37:01 +00:00
plugins.beautylog.ora.text('removing all other images...');
await plugins.smartshell.exec(`docker rmi $(docker images -a -q)`);
2017-02-12 14:17:59 +00:00
plugins.beautylog.ora.text('removing all volumes...');
await plugins.smartshell.exec(`docker volume rm $(docker volume ls -f dangling=true -q)`);
2017-02-11 22:37:01 +00:00
}
plugins.beautylog.ora.endOk('docker environment now is clean!');
});
2017-02-11 22:37:01 +00:00
npmdockerCli.addCommand('speedtest').subscribe(async argvArg => {
plugins.beautylog.figletSync('npmdocker');
plugins.beautylog.ok('Starting speedtest');
await plugins.smartshell.exec(
`docker pull tianon/speedtest && docker run --rm tianon/speedtest`
);
});
2017-02-12 15:04:27 +00:00
npmdockerCli.startParse();
};