Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
f5df21e144 | |||
ba8c2d06d8 | |||
9bb0999f0e | |||
1beb3a0bbe | |||
c1133e9131 | |||
48dd3c3cca | |||
f0a5be41ea | |||
970d28a4ad | |||
76f2126eb3 | |||
a6f164602c | |||
f8457ad58d |
22
.gitignore
vendored
22
.gitignore
vendored
@ -1,4 +1,22 @@
|
|||||||
|
.nogit/
|
||||||
|
|
||||||
|
# artifacts
|
||||||
coverage/
|
coverage/
|
||||||
node_modules/
|
|
||||||
pages/
|
|
||||||
public/
|
public/
|
||||||
|
pages/
|
||||||
|
|
||||||
|
# installs
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# caches
|
||||||
|
.yarn/
|
||||||
|
.cache/
|
||||||
|
.rpt2_cache
|
||||||
|
|
||||||
|
# builds
|
||||||
|
dist/
|
||||||
|
dist_web/
|
||||||
|
dist_serve/
|
||||||
|
dist_ts_web/
|
||||||
|
|
||||||
|
# custom
|
@ -109,10 +109,10 @@ pages:
|
|||||||
image: hosttoday/ht-docker-node:npmci
|
image: hosttoday/ht-docker-node:npmci
|
||||||
stage: metadata
|
stage: metadata
|
||||||
script:
|
script:
|
||||||
- npmci command npm install -g typedoc typescript
|
- npmci command npm install -g @gitzone/tsdoc
|
||||||
- npmci npm prepare
|
- npmci npm prepare
|
||||||
- npmci npm install
|
- npmci npm install
|
||||||
- npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/
|
- npmci command tsdoc
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
- notpriv
|
- notpriv
|
||||||
|
36
README.md
36
README.md
@ -1,32 +1,28 @@
|
|||||||
# smartshell
|
# @pushrocks/smartshell
|
||||||
|
|
||||||
shell actions designed as promises
|
shell actions designed as promises
|
||||||
|
|
||||||
## Availabililty
|
## Availabililty and Links
|
||||||
|
* [npmjs.org (npm package)](https://www.npmjs.com/package/@pushrocks/smartshell)
|
||||||
[](https://www.npmjs.com/package/smartshell)
|
* [gitlab.com (source)](https://gitlab.com/pushrocks/smartshell)
|
||||||
[](https://GitLab.com/pushrocks/smartshell)
|
* [github.com (source mirror)](https://github.com/pushrocks/smartshell)
|
||||||
[](https://github.com/pushrocks/smartshell)
|
* [docs (typedoc)](https://pushrocks.gitlab.io/smartshell/)
|
||||||
[](https://pushrocks.gitlab.io/smartshell/)
|
|
||||||
|
|
||||||
## Status for master
|
## Status for master
|
||||||
|
[](https://gitlab.com/pushrocks/smartshell/commits/master)
|
||||||
[](https://GitLab.com/pushrocks/smartshell/commits/master)
|
[](https://gitlab.com/pushrocks/smartshell/commits/master)
|
||||||
[](https://GitLab.com/pushrocks/smartshell/commits/master)
|
[](https://www.npmjs.com/package/@pushrocks/smartshell)
|
||||||
[](https://www.npmjs.com/package/smartshell)
|
[](https://snyk.io/test/npm/@pushrocks/smartshell)
|
||||||
[](https://david-dm.org/pushrocks/smartshell)
|
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
||||||
[](https://www.bithound.io/github/pushrocks/smartshell/master/dependencies/npm)
|
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
||||||
[](https://www.bithound.io/github/pushrocks/smartshell)
|
[](https://prettier.io/)
|
||||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
|
||||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
|
||||||
[](http://standardjs.com/)
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Use TypeScript for best in class instellisense.
|
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)
|
||||||
|
|
||||||
[](https://push.rocks)
|
[](https://maintainedby.lossless.com)
|
||||||
|
@ -3,5 +3,15 @@
|
|||||||
"npmGlobalTools": [],
|
"npmGlobalTools": [],
|
||||||
"npmAccessLevel": "public",
|
"npmAccessLevel": "public",
|
||||||
"npmRegistryUrl": "registry.npmjs.org"
|
"npmRegistryUrl": "registry.npmjs.org"
|
||||||
|
},
|
||||||
|
"gitzone": {
|
||||||
|
"module": {
|
||||||
|
"githost": "gitlab.com",
|
||||||
|
"gitscope": "pushrocks",
|
||||||
|
"gitrepo": "smartshell",
|
||||||
|
"shortDescription": "shell actions designed as promises",
|
||||||
|
"npmPackagename": "@pushrocks/smartshell",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
186
package-lock.json
generated
186
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartshell",
|
"name": "@pushrocks/smartshell",
|
||||||
"version": "2.0.15",
|
"version": "2.0.21",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -61,19 +61,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@gitzone/tstest": {
|
"@gitzone/tstest": {
|
||||||
"version": "1.0.20",
|
"version": "1.0.23",
|
||||||
"resolved": "https://verdaccio.lossless.one/@gitzone%2ftstest/-/tstest-1.0.20.tgz",
|
"resolved": "https://registry.npmjs.org/@gitzone/tstest/-/tstest-1.0.23.tgz",
|
||||||
"integrity": "sha512-nEHRDpmPOns47/LIJQ+y+CJDzjiS17UKJpl7PYok4EgNJJGqJUN5ilz2KVLPDcRd/7JiB7JYKujlf2UgFKadgQ==",
|
"integrity": "sha512-iP+bCTVV+67MvWwM1l4AfQ0NuLP0xgsf2OTeUICq6I1zHm2bbGr7UuNZ2veBkx3fFb4A2Acs49bs5EkukYMi4Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@gitzone/tsrun": "^1.2.5",
|
"@gitzone/tsrun": "^1.2.6",
|
||||||
"@pushrocks/consolecolor": "^2.0.1",
|
"@pushrocks/consolecolor": "^2.0.1",
|
||||||
"@pushrocks/smartfile": "^7.0.2",
|
"@pushrocks/smartfile": "^7.0.2",
|
||||||
"@pushrocks/smartlog": "^2.0.19",
|
"@pushrocks/smartlog": "^2.0.19",
|
||||||
"@pushrocks/smartpromise": "^3.0.2",
|
"@pushrocks/smartpromise": "^3.0.2",
|
||||||
"@pushrocks/smartshell": "^2.0.13",
|
"@pushrocks/smartshell": "^2.0.20",
|
||||||
"@types/figures": "^2.0.0",
|
"@types/figures": "^3.0.1",
|
||||||
"figures": "^2.0.0"
|
"figures": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@pushrocks/consolecolor": {
|
"@pushrocks/consolecolor": {
|
||||||
@ -149,7 +149,7 @@
|
|||||||
},
|
},
|
||||||
"@pushrocks/smartdelay": {
|
"@pushrocks/smartdelay": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartdelay/-/smartdelay-2.0.3.tgz",
|
||||||
"integrity": "sha512-TXKDDqsc7sBTLl+oiYNaF6IdNk1n70i8ur8QfwcUU6tegTnrEkvMWy9h5Zdty/fq1ioCNpKLvuXoA+fgYVwKGQ==",
|
"integrity": "sha512-TXKDDqsc7sBTLl+oiYNaF6IdNk1n70i8ur8QfwcUU6tegTnrEkvMWy9h5Zdty/fq1ioCNpKLvuXoA+fgYVwKGQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@pushrocks/smartpromise": "^3.0.2"
|
"@pushrocks/smartpromise": "^3.0.2"
|
||||||
@ -171,11 +171,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@pushrocks/smartexit": {
|
"@pushrocks/smartexit": {
|
||||||
"version": "1.0.7",
|
"version": "1.0.15",
|
||||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartexit/-/smartexit-1.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartexit/-/smartexit-1.0.15.tgz",
|
||||||
"integrity": "sha512-G/gBbYWRAZs/O7YPUKTeEpCFvvfH7fayYvP3jqeHbZFFwILmaweLXDw/ns6R3bkI5w+lnlCoj26aXCtUWfqMtA==",
|
"integrity": "sha512-pvJBmF13spcDN+O8rSpYlKBOObyfW+omZKQr3hhSMT1VHMEYV8e/njsA19Cg4C2DfLPv+cRFFgPn27zJpleRsQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@pushrocks/lik": "^3.0.5"
|
"@pushrocks/lik": "^3.0.5",
|
||||||
|
"@pushrocks/smartdelay": "^2.0.3",
|
||||||
|
"@pushrocks/smartlog-source-ora": "^1.0.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@pushrocks/smartfile": {
|
"@pushrocks/smartfile": {
|
||||||
@ -207,8 +209,16 @@
|
|||||||
"@pushrocks/smartlog-interfaces": {
|
"@pushrocks/smartlog-interfaces": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.5.tgz",
|
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.5.tgz",
|
||||||
"integrity": "sha512-eLNlRpDwy3E+6v/B6fo/NiAo+UxBO3SxKgIIsgUGbWfVpsyUi0PG2xfVCdhJlhL1AsRRvKglfHSOB8qKE+XCLw==",
|
"integrity": "sha512-eLNlRpDwy3E+6v/B6fo/NiAo+UxBO3SxKgIIsgUGbWfVpsyUi0PG2xfVCdhJlhL1AsRRvKglfHSOB8qKE+XCLw=="
|
||||||
"dev": true
|
},
|
||||||
|
"@pushrocks/smartlog-source-ora": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartlog-source-ora/-/smartlog-source-ora-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-lgpZ2rBLt9UGIdMb43cB9rxwtbu4RaNmdQnAYfNGxizGPuNtXw3WAzdHyS5tEJFZAbvMOiwNguQ6Bk1i2gaedw==",
|
||||||
|
"requires": {
|
||||||
|
"@pushrocks/smartlog-interfaces": "^2.0.5",
|
||||||
|
"ora": "^3.4.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"@pushrocks/smartparam": {
|
"@pushrocks/smartparam": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
@ -270,22 +280,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@pushrocks/smartshell": {
|
"@pushrocks/smartshell": {
|
||||||
"version": "2.0.13",
|
"version": "2.0.20",
|
||||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.13.tgz",
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartshell/-/smartshell-2.0.20.tgz",
|
||||||
"integrity": "sha512-jLfAhLxMVKAScKdln1QrQqBI7A7INhMNHIq28fJEBi0BNDUS0eerw4yMAnR4CRmcrh4xFp1z+ju1kaPO3I/4MA==",
|
"integrity": "sha512-wA6crDGvEK7s9jTA5hJPjirTYs/1Wbt5zcAp/0AbB9Qxkzj/+alVueBGvD9NrXYhfn5EFeelwS5/Oy4lLm3A7A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@pushrocks/smartpromise": "^2.0.5",
|
"@pushrocks/smartexit": "^1.0.11",
|
||||||
|
"@pushrocks/smartpromise": "^3.0.2",
|
||||||
"@types/which": "^1.3.1",
|
"@types/which": "^1.3.1",
|
||||||
"which": "^1.3.1"
|
"which": "^1.3.1"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@pushrocks/smartpromise": {
|
|
||||||
"version": "2.0.5",
|
|
||||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz",
|
|
||||||
"integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@pushrocks/smarttime": {
|
"@pushrocks/smarttime": {
|
||||||
@ -347,10 +350,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/figures": {
|
"@types/figures": {
|
||||||
"version": "2.0.0",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/figures/-/figures-2.0.0.tgz",
|
"resolved": "https://verdaccio.lossless.one/@types%2ffigures/-/figures-3.0.1.tgz",
|
||||||
"integrity": "sha512-mcRgJ+ncKuNI+Dwac7omO18B8C8u+YBS+AU/oyLhEyjAnT3cUUThhHgZpbiIvu5ZqSvdD30BXtrqg9nxc3OKMg==",
|
"integrity": "sha512-2OXodKWdNhYl+S+wCvlafqJbfMIVDfQZYX2wRyUOcRiEQpeJ9zU6cT7d+RbMpjS+/vmQ2cAUUL8gyGy1YxtLPw==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"figures": "*"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"@types/form-data": {
|
"@types/form-data": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
@ -421,7 +427,6 @@
|
|||||||
"version": "3.2.1",
|
"version": "3.2.1",
|
||||||
"resolved": "https://verdaccio.lossless.one/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
"resolved": "https://verdaccio.lossless.one/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"color-convert": "^1.9.0"
|
"color-convert": "^1.9.0"
|
||||||
}
|
}
|
||||||
@ -527,7 +532,6 @@
|
|||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
"resolved": "https://verdaccio.lossless.one/chalk/-/chalk-2.4.2.tgz",
|
"resolved": "https://verdaccio.lossless.one/chalk/-/chalk-2.4.2.tgz",
|
||||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "^3.2.1",
|
"ansi-styles": "^3.2.1",
|
||||||
"escape-string-regexp": "^1.0.5",
|
"escape-string-regexp": "^1.0.5",
|
||||||
@ -540,6 +544,19 @@
|
|||||||
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
|
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"cli-cursor": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
||||||
|
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
|
||||||
|
"requires": {
|
||||||
|
"restore-cursor": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cli-spinners": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA=="
|
||||||
|
},
|
||||||
"cliui": {
|
"cliui": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://verdaccio.lossless.one/cliui/-/cliui-4.1.0.tgz",
|
"resolved": "https://verdaccio.lossless.one/cliui/-/cliui-4.1.0.tgz",
|
||||||
@ -590,7 +607,6 @@
|
|||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"color-name": "1.1.3"
|
"color-name": "1.1.3"
|
||||||
}
|
}
|
||||||
@ -598,8 +614,7 @@
|
|||||||
"color-name": {
|
"color-name": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"combined-stream": {
|
"combined-stream": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
@ -663,6 +678,21 @@
|
|||||||
"type-detect": "^4.0.0"
|
"type-detect": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"defaults": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
|
||||||
|
"requires": {
|
||||||
|
"clone": "^1.0.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"clone": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
||||||
|
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"delayed-stream": {
|
"delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
@ -693,8 +723,7 @@
|
|||||||
"escape-string-regexp": {
|
"escape-string-regexp": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"esprima": {
|
"esprima": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
@ -724,9 +753,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"figures": {
|
"figures": {
|
||||||
"version": "2.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
"resolved": "https://verdaccio.lossless.one/figures/-/figures-3.0.0.tgz",
|
||||||
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
|
"integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"escape-string-regexp": "^1.0.5"
|
"escape-string-regexp": "^1.0.5"
|
||||||
@ -828,8 +857,7 @@
|
|||||||
"has-flag": {
|
"has-flag": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"inflight": {
|
"inflight": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
@ -951,6 +979,14 @@
|
|||||||
"path-exists": "^3.0.0"
|
"path-exists": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"log-symbols": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"luxon": {
|
"luxon": {
|
||||||
"version": "1.13.2",
|
"version": "1.13.2",
|
||||||
"resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.13.2.tgz",
|
"resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.13.2.tgz",
|
||||||
@ -1083,6 +1119,49 @@
|
|||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"onetime": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
|
||||||
|
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
|
||||||
|
"requires": {
|
||||||
|
"mimic-fn": "^1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"mimic-fn": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ora": {
|
||||||
|
"version": "3.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
|
||||||
|
"integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^2.4.2",
|
||||||
|
"cli-cursor": "^2.1.0",
|
||||||
|
"cli-spinners": "^2.0.0",
|
||||||
|
"log-symbols": "^2.2.0",
|
||||||
|
"strip-ansi": "^5.2.0",
|
||||||
|
"wcwidth": "^1.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-regex": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
|
||||||
|
},
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^4.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"os-locale": {
|
"os-locale": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://verdaccio.lossless.one/os-locale/-/os-locale-3.1.0.tgz",
|
"resolved": "https://verdaccio.lossless.one/os-locale/-/os-locale-3.1.0.tgz",
|
||||||
@ -1242,6 +1321,15 @@
|
|||||||
"path-parse": "^1.0.6"
|
"path-parse": "^1.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"restore-cursor": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
|
||||||
|
"requires": {
|
||||||
|
"onetime": "^2.0.0",
|
||||||
|
"signal-exit": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"rxjs": {
|
"rxjs": {
|
||||||
"version": "6.5.2",
|
"version": "6.5.2",
|
||||||
"resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.5.2.tgz",
|
"resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.5.2.tgz",
|
||||||
@ -1286,8 +1374,7 @@
|
|||||||
"signal-exit": {
|
"signal-exit": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://verdaccio.lossless.one/signal-exit/-/signal-exit-3.0.2.tgz",
|
"resolved": "https://verdaccio.lossless.one/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"smartchai": {
|
"smartchai": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
@ -1391,7 +1478,6 @@
|
|||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://verdaccio.lossless.one/supports-color/-/supports-color-5.5.0.tgz",
|
"resolved": "https://verdaccio.lossless.one/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "^3.0.0"
|
"has-flag": "^3.0.0"
|
||||||
}
|
}
|
||||||
@ -1506,6 +1592,14 @@
|
|||||||
"vinyl": "^2.0.1"
|
"vinyl": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"wcwidth": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
|
||||||
|
"requires": {
|
||||||
|
"defaults": "^1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"which": {
|
"which": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartshell",
|
"name": "@pushrocks/smartshell",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "2.0.15",
|
"version": "2.0.21",
|
||||||
"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",
|
||||||
@ -26,14 +26,15 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gitzone/tsbuild": "^2.1.11",
|
"@gitzone/tsbuild": "^2.1.11",
|
||||||
"@gitzone/tsrun": "^1.2.6",
|
"@gitzone/tsrun": "^1.2.6",
|
||||||
"@gitzone/tstest": "^1.0.20",
|
"@gitzone/tstest": "^1.0.23",
|
||||||
"@pushrocks/tapbundle": "^3.0.9",
|
"@pushrocks/tapbundle": "^3.0.9",
|
||||||
"@types/node": "^12.0.2",
|
"@types/node": "^12.0.2",
|
||||||
"tslint": "^5.16.0",
|
"tslint": "^5.16.0",
|
||||||
"tslint-config-prettier": "^1.18.0"
|
"tslint-config-prettier": "^1.18.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pushrocks/smartexit": "^1.0.7",
|
"@pushrocks/smartdelay": "^2.0.3",
|
||||||
|
"@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",
|
||||||
"which": "^1.3.1"
|
"which": "^1.3.1"
|
||||||
|
@ -45,7 +45,11 @@ tap.test('smartshell should run async', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should be able to find git', async () => {
|
tap.test('should be able to find git', async () => {
|
||||||
testSmartshell.exec('git --version');
|
await testSmartshell.exec('git --version');
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.test('should spawn an interactive cli', async () => {
|
||||||
|
await testSmartshell.execInteractive('echo "hi"');
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.start({
|
tap.start({
|
||||||
|
@ -5,13 +5,13 @@ import * as plugins from './smartshell.plugins';
|
|||||||
* making sure the process doesn't run out of memory
|
* making sure the process doesn't run out of memory
|
||||||
*/
|
*/
|
||||||
export class ShellLog {
|
export class ShellLog {
|
||||||
logStore = Buffer.from('');
|
public logStore = Buffer.from('');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* log data to console
|
* log data to console
|
||||||
* @param dataArg
|
* @param dataArg
|
||||||
*/
|
*/
|
||||||
logToConsole(dataArg: string | Buffer): void {
|
public writeToConsole(dataArg: string | Buffer): void {
|
||||||
// make sure we have the data as string
|
// make sure we have the data as string
|
||||||
process.stdout.write(dataArg);
|
process.stdout.write(dataArg);
|
||||||
}
|
}
|
||||||
@ -20,7 +20,7 @@ export class ShellLog {
|
|||||||
* add data to Buffer for later consumption
|
* add data to Buffer for later consumption
|
||||||
* @param dataArg
|
* @param dataArg
|
||||||
*/
|
*/
|
||||||
addToBuffer(dataArg: string | Buffer): void {
|
public addToBuffer(dataArg: string | Buffer): void {
|
||||||
// make sure we have the data as Buffer
|
// make sure we have the data as Buffer
|
||||||
const dataBuffer: Buffer = (() => {
|
const dataBuffer: Buffer = (() => {
|
||||||
if (!Buffer.isBuffer(dataArg)) {
|
if (!Buffer.isBuffer(dataArg)) {
|
||||||
@ -31,8 +31,8 @@ export class ShellLog {
|
|||||||
this.logStore = Buffer.concat([this.logStore, dataBuffer]);
|
this.logStore = Buffer.concat([this.logStore, dataBuffer]);
|
||||||
}
|
}
|
||||||
|
|
||||||
logAndAdd(dataArg: string | Buffer): void {
|
public logAndAdd(dataArg: string | Buffer): void {
|
||||||
this.logToConsole(dataArg);
|
this.writeToConsole(dataArg);
|
||||||
this.addToBuffer(dataArg);
|
this.addToBuffer(dataArg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,20 +53,20 @@ export class Smartshell {
|
|||||||
const execChildProcess = cp.spawn(commandToExecute, [], {
|
const execChildProcess = cp.spawn(commandToExecute, [], {
|
||||||
shell: true,
|
shell: true,
|
||||||
env: process.env,
|
env: process.env,
|
||||||
detached: true
|
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.logToConsole(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.logToConsole(data);
|
spawnlogInstance.writeToConsole(data);
|
||||||
}
|
}
|
||||||
spawnlogInstance.addToBuffer(data);
|
spawnlogInstance.addToBuffer(data);
|
||||||
});
|
});
|
||||||
@ -103,7 +103,7 @@ export class Smartshell {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
async exec(commandStringArg: string): Promise<IExecResult> {
|
public async exec(commandStringArg: string): Promise<IExecResult> {
|
||||||
return (await this._exec(commandStringArg, false)) as IExecResult;
|
return (await this._exec(commandStringArg, false)) as IExecResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,28 +111,28 @@ export class Smartshell {
|
|||||||
* executes a given command async and silent
|
* executes a given command async and silent
|
||||||
* @param commandStringArg
|
* @param commandStringArg
|
||||||
*/
|
*/
|
||||||
async execSilent(commandStringArg: string): Promise<IExecResult> {
|
public async execSilent(commandStringArg: string): Promise<IExecResult> {
|
||||||
return (await this._exec(commandStringArg, true)) as IExecResult;
|
return (await this._exec(commandStringArg, true)) as IExecResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* executes a command async and strict, meaning it rejects the promise if something happens
|
* executes a command async and strict, meaning it rejects the promise if something happens
|
||||||
*/
|
*/
|
||||||
async execStrict(commandStringArg: string): Promise<IExecResult> {
|
public async execStrict(commandStringArg: string): Promise<IExecResult> {
|
||||||
return (await this._exec(commandStringArg, true, true)) as IExecResult;
|
return (await this._exec(commandStringArg, true, true)) as IExecResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* executes a command and allows you to stream output
|
* executes a command and allows you to stream output
|
||||||
*/
|
*/
|
||||||
async execStreaming(
|
public async execStreaming(
|
||||||
commandStringArg: string,
|
commandStringArg: string,
|
||||||
silentArg: boolean = false
|
silentArg: boolean = false
|
||||||
): Promise<IExecResultStreaming> {
|
): Promise<IExecResultStreaming> {
|
||||||
return (await this._exec(commandStringArg, silentArg, false, true)) as IExecResultStreaming;
|
return (await this._exec(commandStringArg, silentArg, false, true)) as IExecResultStreaming;
|
||||||
}
|
}
|
||||||
|
|
||||||
async execStreamingSilent(commandStringArg: string) {
|
public async execStreamingSilent(commandStringArg: string) {
|
||||||
return (await this.execStreaming(commandStringArg, true)) as IExecResultStreaming;
|
return (await this.execStreaming(commandStringArg, true)) as IExecResultStreaming;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +141,11 @@ export class Smartshell {
|
|||||||
* @param commandStringArg
|
* @param commandStringArg
|
||||||
* @param regexArg
|
* @param regexArg
|
||||||
*/
|
*/
|
||||||
async execAndWaitForLine(commandStringArg: string, regexArg: RegExp, silentArg: boolean = false) {
|
public async execAndWaitForLine(
|
||||||
|
commandStringArg: string,
|
||||||
|
regexArg: RegExp,
|
||||||
|
silentArg: boolean = false
|
||||||
|
) {
|
||||||
let done = plugins.smartpromise.defer();
|
let done = plugins.smartpromise.defer();
|
||||||
let execStreamingResult = await this.execStreaming(commandStringArg, silentArg);
|
let execStreamingResult = await this.execStreaming(commandStringArg, silentArg);
|
||||||
execStreamingResult.childProcess.stdout.on('data', (stdOutChunk: string) => {
|
execStreamingResult.childProcess.stdout.on('data', (stdOutChunk: string) => {
|
||||||
@ -152,7 +156,27 @@ export class Smartshell {
|
|||||||
return done.promise;
|
return done.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
async execAndWaitForLineSilent(commandStringArg: string, regexArg: RegExp) {
|
public async execAndWaitForLineSilent(commandStringArg: string, regexArg: RegExp) {
|
||||||
this.execAndWaitForLine(commandStringArg, regexArg, true);
|
this.execAndWaitForLine(commandStringArg, regexArg, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* execs an command and then enters interactive CLI
|
||||||
|
* @param commandStringArg
|
||||||
|
* @param regexArg
|
||||||
|
*/
|
||||||
|
public async execInteractive(commandStringArg: string) {
|
||||||
|
const done = plugins.smartpromise.defer();
|
||||||
|
const shell = cp.spawn('sh', [], { stdio: 'pipe' });
|
||||||
|
this.smartexit.addProcess(shell);
|
||||||
|
const shellLog = new ShellLog();
|
||||||
|
process.stdin.pipe(shell.stdin);
|
||||||
|
shell.stdout.pipe(process.stdout);
|
||||||
|
shell.on('close', code => {
|
||||||
|
console.log(`interactive shell terminated with code ${code}`);
|
||||||
|
done.resolve();
|
||||||
|
});
|
||||||
|
shell.stdin.write(commandStringArg + '\n');
|
||||||
|
await done.promise;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
import * as smartdelay from '@pushrocks/smartdelay';
|
||||||
import * as smartexit from '@pushrocks/smartexit';
|
import * as smartexit from '@pushrocks/smartexit';
|
||||||
import * as smartpromise from '@pushrocks/smartpromise';
|
import * as smartpromise from '@pushrocks/smartpromise';
|
||||||
import * as which from 'which';
|
import * as which from 'which';
|
||||||
|
|
||||||
export { smartexit, smartpromise, which };
|
export { smartdelay, smartexit, smartpromise, which };
|
||||||
|
Reference in New Issue
Block a user