Compare commits

..

4 Commits

Author SHA1 Message Date
0199160013 2.0.26 2020-05-22 01:23:27 +00:00
199fa19899 fix(core): update 2020-05-22 01:23:27 +00:00
23a3230f07 2.0.25 2019-08-27 20:15:23 +02:00
ad0b7ac21c fix(core): update 2019-08-27 20:15:22 +02:00
7 changed files with 59 additions and 42 deletions

View File

@ -1,5 +1,5 @@
# gitzone standard # gitzone ci_default
image: hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache: cache:
paths: paths:
@ -38,19 +38,7 @@ snyk:
# test stage # test stage
# ==================== # ====================
testLTS: testStable:
stage: test
script:
- npmci npm prepare
- npmci node install lts
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
testSTABLE:
stage: test stage: test
script: script:
- npmci npm prepare - npmci npm prepare
@ -60,12 +48,24 @@ testSTABLE:
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- priv
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install lts
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv - notpriv
release: release:
stage: release stage: release
script: script:
- npmci node install stable - npmci node install lts
- npmci npm publish - npmci npm publish
only: only:
- tags - tags
@ -78,19 +78,11 @@ release:
# ==================== # ====================
codequality: codequality:
stage: metadata stage: metadata
image: docker:stable
allow_failure: true allow_failure: true
services:
- docker:stable-dind
script: script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - npmci command npm install -g tslint typescript
- docker run - npmci npm install
--env SOURCE_CODE="$PWD" - npmci command "tslint -c tslint.json ./ts/**/*.ts"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [codeclimate.json]
tags: tags:
- docker - docker
- priv - priv
@ -106,7 +98,9 @@ trigger:
- notpriv - notpriv
pages: pages:
image: hosttoday/ht-docker-node:npmci image: hosttoday/ht-docker-dbase:npmci
services:
- docker:stable-dind
stage: metadata stage: metadata
script: script:
- npmci command npm install -g @gitzone/tsdoc - npmci command npm install -g @gitzone/tsdoc

View File

@ -23,6 +23,6 @@ Use TypeScript for best in class instellisense.
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) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://maintainedby.lossless.com) [![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

7
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartshell", "name": "@pushrocks/smartshell",
"version": "2.0.24", "version": "2.0.26",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -1416,6 +1416,11 @@
"resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.2.tgz", "resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.2.tgz",
"integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY="
}, },
"tree-kill": {
"version": "1.2.2",
"resolved": "https://verdaccio.lossless.one/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="
},
"ts-node": { "ts-node": {
"version": "8.3.0", "version": "8.3.0",
"resolved": "https://verdaccio.lossless.one/ts-node/-/ts-node-8.3.0.tgz", "resolved": "https://verdaccio.lossless.one/ts-node/-/ts-node-8.3.0.tgz",

View File

@ -1,7 +1,7 @@
{ {
"name": "@pushrocks/smartshell", "name": "@pushrocks/smartshell",
"private": false, "private": false,
"version": "2.0.24", "version": "2.0.26",
"description": "shell actions designed as promises", "description": "shell actions designed as promises",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -37,6 +37,18 @@
"@pushrocks/smartexit": "^1.0.15", "@pushrocks/smartexit": "^1.0.15",
"@pushrocks/smartpromise": "^3.0.2", "@pushrocks/smartpromise": "^3.0.2",
"@types/which": "^1.3.1", "@types/which": "^1.3.1",
"tree-kill": "^1.2.2",
"which": "^1.3.1" "which": "^1.3.1"
} },
"files": [
"ts/*",
"ts_web/*",
"dist/*",
"dist_web/*",
"dist_ts_web/*",
"assets/*",
"cli.js",
"npmextra.json",
"readme.md"
]
} }

View File

@ -49,7 +49,7 @@ tap.test('should be able to find git', async () => {
}); });
tap.test('should spawn an interactive cli', async () => { tap.test('should spawn an interactive cli', async () => {
await testSmartshell.execInteractive('echo "hi"'); // await testSmartshell.execInteractive('echo "hi"');
}); });
tap.start({ tap.start({

View File

@ -53,18 +53,18 @@ export class Smartshell {
const execChildProcess = cp.spawn(commandToExecute, [], { const execChildProcess = cp.spawn(commandToExecute, [], {
shell: true, shell: true,
env: process.env, env: process.env,
detached: false detached: false,
}); });
this.smartexit.addProcess(execChildProcess); this.smartexit.addProcess(execChildProcess);
execChildProcess.stdout.on('data', data => { execChildProcess.stdout.on('data', (data) => {
if (!silentArg) { if (!silentArg) {
spawnlogInstance.writeToConsole(data); spawnlogInstance.writeToConsole(data);
} }
spawnlogInstance.addToBuffer(data); spawnlogInstance.addToBuffer(data);
}); });
execChildProcess.stderr.on('data', data => { execChildProcess.stderr.on('data', (data) => {
if (!silentArg) { if (!silentArg) {
spawnlogInstance.writeToConsole(data); spawnlogInstance.writeToConsole(data);
} }
@ -77,8 +77,9 @@ export class Smartshell {
finalPromise: childProcessEnded.promise, finalPromise: childProcessEnded.promise,
kill: () => { kill: () => {
// this notation with the - kills the whole process group // this notation with the - kills the whole process group
process.kill(-execChildProcess.pid); console.log(`running tree kill on process ${execChildProcess.pid}`);
} plugins.treeKill(execChildProcess.pid);
},
}); });
} }
@ -90,7 +91,7 @@ export class Smartshell {
const execResult = { const execResult = {
exitCode: code, exitCode: code,
stdout: spawnlogInstance.logStore.toString() stdout: spawnlogInstance.logStore.toString(),
}; };
if (!streamingArg) { if (!streamingArg) {
@ -122,7 +123,7 @@ export class Smartshell {
return (await this._exec(commandStringArg, false, true)) as IExecResult; return (await this._exec(commandStringArg, false, true)) as IExecResult;
} }
public async execStrictSilent (commandStringArg: string): Promise<IExecResult> { public async execStrictSilent(commandStringArg: string): Promise<IExecResult> {
return (await this._exec(commandStringArg, true, true)) as IExecResult; return (await this._exec(commandStringArg, true, true)) as IExecResult;
} }
@ -179,7 +180,7 @@ export class Smartshell {
const shellLog = new ShellLog(); const shellLog = new ShellLog();
const stdInStream = process.stdin.pipe(shell.stdin); const stdInStream = process.stdin.pipe(shell.stdin);
const stdOutStream = shell.stdout.pipe(process.stdout); const stdOutStream = shell.stdout.pipe(process.stdout);
shell.on('close', code => { shell.on('close', (code) => {
console.log(`interactive shell terminated with code ${code}`); console.log(`interactive shell terminated with code ${code}`);
stdInStream.removeAllListeners(); stdInStream.removeAllListeners();
stdInStream.uncork(); stdInStream.uncork();

View File

@ -4,3 +4,8 @@ import * as smartpromise from '@pushrocks/smartpromise';
import * as which from 'which'; import * as which from 'which';
export { smartdelay, smartexit, smartpromise, which }; export { smartdelay, smartexit, smartpromise, which };
// third party
import treeKill from 'tree-kill';
export { treeKill };