Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
1d0c4c3cf9 | |||
a037cba454 | |||
7009e07ecc | |||
7b8ef33e21 | |||
3011e599e8 | |||
8adb636db3 | |||
dd35e5d7d2 | |||
91d7f583e2 | |||
a77ed42e9f | |||
499c6cc3b7 | |||
19283fb695 | |||
b2d84b1399 | |||
7cc2374130 | |||
526bb5bbd0 | |||
14b2105a49 | |||
37efeffe69 | |||
943f46d620 |
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
docs/
|
.yarn/
|
||||||
coverage/
|
|
||||||
node_modules/
|
node_modules/
|
||||||
|
coverage/
|
||||||
|
public/
|
||||||
|
@ -1,38 +1,31 @@
|
|||||||
image: hosttoday/ht-docker-dbase:npmts
|
image: hosttoday/ht-docker-dbase:npmci
|
||||||
services:
|
services:
|
||||||
- docker:dind
|
- docker:dind
|
||||||
|
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .yarn/
|
||||||
|
key: "$CI_BUILD_STAGE"
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- build
|
|
||||||
- test
|
- test
|
||||||
- release
|
- release
|
||||||
- trigger
|
- trigger
|
||||||
|
- pages
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- npmci prepare docker-gitlab
|
- npmci prepare docker-gitlab
|
||||||
|
|
||||||
|
|
||||||
build:
|
|
||||||
stage: build
|
|
||||||
script:
|
|
||||||
- npm install
|
|
||||||
- npm test
|
|
||||||
- npmci build docker
|
|
||||||
tags:
|
|
||||||
- lossless
|
|
||||||
- priv
|
|
||||||
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test docker
|
- npmci test stable
|
||||||
tags:
|
tags:
|
||||||
- lossless
|
- lossless
|
||||||
- priv
|
- priv
|
||||||
|
|
||||||
release:
|
release:
|
||||||
image: hosttoday/ht-docker-node:npmts
|
image: hosttoday/ht-docker-node:npmci
|
||||||
stage: release
|
stage: release
|
||||||
script:
|
script:
|
||||||
- npmci publish npm
|
- npmci publish npm
|
||||||
@ -43,7 +36,7 @@ release:
|
|||||||
- priv
|
- priv
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
image: hosttoday/ht-docker-node:npmts
|
image: hosttoday/ht-docker-node:npmci
|
||||||
stage: trigger
|
stage: trigger
|
||||||
script:
|
script:
|
||||||
- npmci trigger
|
- npmci trigger
|
||||||
@ -52,3 +45,18 @@ trigger:
|
|||||||
tags:
|
tags:
|
||||||
- lossless
|
- lossless
|
||||||
- priv
|
- priv
|
||||||
|
|
||||||
|
pages:
|
||||||
|
image: hosttoday/ht-docker-node:npmci
|
||||||
|
stage: pages
|
||||||
|
script:
|
||||||
|
- npmci command yarn global add npmpage
|
||||||
|
- npmci command npmpage --publish gitlab
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
artifacts:
|
||||||
|
expire_in: 1 week
|
||||||
|
paths:
|
||||||
|
- public
|
34
README.md
34
README.md
@ -1,11 +1,29 @@
|
|||||||
# dockersock
|
# @mojoio/dockersock
|
||||||
|
|
||||||
easy communication with docker remote api from node, TypeScript ready
|
easy communication with docker remote api from node, TypeScript ready
|
||||||
|
|
||||||
## Status
|
## Availabililty
|
||||||
[](https://gitlab.com/pushrocks/dockersock/commits/master)
|
|
||||||
|
[](https://www.npmjs.com/package/dockersock)
|
||||||
|
[](https://GitLab.com/mojoio/dockersock)
|
||||||
|
[](https://github.com/mojoio/dockersock)
|
||||||
|
[](https://mojoio.gitlab.io/dockersock/)
|
||||||
|
|
||||||
|
## Status for master
|
||||||
|
|
||||||
|
[](https://GitLab.com/mojoio/dockersock/commits/master)
|
||||||
|
[](https://GitLab.com/mojoio/dockersock/commits/master)
|
||||||
|
[](https://www.npmjs.com/package/dockersock)
|
||||||
|
[](https://david-dm.org/mojoio/dockersock)
|
||||||
|
[](https://www.bithound.io/github/mojoio/dockersock/master/dependencies/npm)
|
||||||
|
[](https://www.bithound.io/github/mojoio/dockersock)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
[](http://standardjs.com/)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
We recommend the use of TypeScript for best Intellisense.
|
|
||||||
|
Use TypeScript for best in class instellisense.
|
||||||
|
|
||||||
```TypeScript
|
```TypeScript
|
||||||
import {Dockersock} from "dockersock"; // require Dockersock class
|
import {Dockersock} from "dockersock"; // require Dockersock class
|
||||||
@ -24,5 +42,11 @@ myDockersock.startContainer({ // starts a already present container
|
|||||||
myDockersock.newContainer({ // start new Container, equals "docker run" shell command
|
myDockersock.newContainer({ // start new Container, equals "docker run" shell command
|
||||||
image: "someimagetag"
|
image: "someimagetag"
|
||||||
})
|
})
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For further information read the linked docs at the top of this README.
|
||||||
|
|
||||||
|
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||||
|
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||||
|
|
||||||
|
[](https://mojo.io)
|
||||||
|
28
dist/dockersock.classes.dockersock.d.ts
vendored
28
dist/dockersock.classes.dockersock.d.ts
vendored
@ -1,28 +0,0 @@
|
|||||||
/// <reference types="q" />
|
|
||||||
import "typings-global";
|
|
||||||
import * as plugins from "./dockersock.plugins";
|
|
||||||
import { Observable } from "rxjs";
|
|
||||||
export declare class Dockersock {
|
|
||||||
sockPath: string;
|
|
||||||
requestObjectmap: plugins.lik.Objectmap;
|
|
||||||
constructor(pathArg?: string);
|
|
||||||
auth(userArg: string, passArg: string): plugins.q.Promise<{}>;
|
|
||||||
listContainers(): plugins.q.Promise<{}>;
|
|
||||||
listContainersDetailed(): plugins.q.Promise<{}>;
|
|
||||||
listContainersRunning(): plugins.q.Promise<{}>;
|
|
||||||
listContainersStopped(): plugins.q.Promise<{}>;
|
|
||||||
listImages(): plugins.q.Promise<{}>;
|
|
||||||
listImagesDangling(): plugins.q.Promise<{}>;
|
|
||||||
pullImage(imageLabelArg: string): plugins.q.Promise<{}>;
|
|
||||||
createContainer(optionsArg: any, pullFirstArg?: boolean): plugins.q.Promise<{}>;
|
|
||||||
getContainerId(): void;
|
|
||||||
startContainer(containerNameArg: any): plugins.q.Promise<{}>;
|
|
||||||
stopContainer(containerNameArg: any): plugins.q.Promise<{}>;
|
|
||||||
removeContainer(containerNameArg: any): plugins.q.Promise<{}>;
|
|
||||||
clean(): plugins.q.Promise<{}>;
|
|
||||||
callOnChange(cb: Function): void;
|
|
||||||
getChangeObservable(): Observable<{}>;
|
|
||||||
request(methodArg: string, routeArg: string, queryArg?: string, dataArg?: {}): plugins.q.Promise<{}>;
|
|
||||||
requestStream(methodArg: string, routeArg: string, queryArg?: string, dataArg?: {}): plugins.q.Promise<{}>;
|
|
||||||
endRequests(): void;
|
|
||||||
}
|
|
253
dist/dockersock.classes.dockersock.js
vendored
253
dist/dockersock.classes.dockersock.js
vendored
File diff suppressed because one or more lines are too long
6
dist/dockersock.plugins.d.ts
vendored
6
dist/dockersock.plugins.d.ts
vendored
@ -1,6 +0,0 @@
|
|||||||
import "typings-global";
|
|
||||||
export import beautylog = require("beautylog");
|
|
||||||
export import lik = require("lik");
|
|
||||||
export import q = require("q");
|
|
||||||
export import request = require("request");
|
|
||||||
export import rxjs = require("rxjs");
|
|
8
dist/dockersock.plugins.js
vendored
8
dist/dockersock.plugins.js
vendored
@ -1,8 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-global");
|
|
||||||
exports.beautylog = require("beautylog");
|
|
||||||
exports.lik = require("lik");
|
|
||||||
exports.q = require("q");
|
|
||||||
exports.request = require("request");
|
|
||||||
exports.rxjs = require("rxjs");
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2Vyc29jay5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9ja2Vyc29jay5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDVixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLFdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQztBQUNyQixTQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDakIsZUFBTyxXQUFXLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQyJ9
|
|
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -1,2 +0,0 @@
|
|||||||
import "typings-global";
|
|
||||||
export { Dockersock } from "./dockersock.classes.dockersock";
|
|
5
dist/index.js
vendored
5
dist/index.js
vendored
@ -1,5 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-global");
|
|
||||||
var dockersock_classes_dockersock_1 = require("./dockersock.classes.dockersock");
|
|
||||||
exports.Dockersock = dockersock_classes_dockersock_1.Dockersock;
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLDhDQUEyQixpQ0FBaUMsQ0FBQztBQUFwRCxnRUFBb0QifQ==
|
|
@ -1,18 +1,18 @@
|
|||||||
nginx1 :
|
nginx1 :
|
||||||
image: "nginx"
|
image: "nginx"
|
||||||
environment:
|
environment:
|
||||||
VIRTUAL_HOST: "test100.labkomp.de"
|
VIRTUAL_HOST: "test100.bleu.de"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: nginx1
|
container_name: nginx1
|
||||||
nginx2:
|
nginx2:
|
||||||
image: nginx
|
image: nginx
|
||||||
environment:
|
environment:
|
||||||
VIRTUAL_HOST: "test101.labkomp.de"
|
VIRTUAL_HOST: "test101.bleu.de"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: nginx2
|
container_name: nginx2
|
||||||
npmts-test-container:
|
nginx3:
|
||||||
image: "npmts-test-image"
|
image: nginx
|
||||||
volumes:
|
environment:
|
||||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
VIRTUAL_HOST: "test101.bleu.de"
|
||||||
restart: always
|
restart: always
|
||||||
container_name: npmts-test-container
|
container_name: nginx3
|
@ -1,11 +1,15 @@
|
|||||||
{
|
{
|
||||||
"npmts":{
|
"npmts": {
|
||||||
"mode":"default",
|
"mode": "default",
|
||||||
"coverageTreshold":10
|
"coverageTreshold": 10
|
||||||
},
|
},
|
||||||
"npmdocker":{
|
"npmdocker": {
|
||||||
"baseImage":"hosttoday/ht-docker-node:npmts",
|
"baseImage": "hosttoday/ht-docker-node:npmci",
|
||||||
"command":"npmts",
|
"command":
|
||||||
"dockerSock":"true"
|
"(ls -a && rm -r node_modules && yarn global add npmts && yarn install && npmts)",
|
||||||
|
"dockerSock": true
|
||||||
|
},
|
||||||
|
"npmci": {
|
||||||
|
"globalNpmTools": ["npmts", "npmdocker"]
|
||||||
}
|
}
|
||||||
}
|
}
|
444
package-lock.json
generated
Normal file
444
package-lock.json
generated
Normal file
@ -0,0 +1,444 @@
|
|||||||
|
{
|
||||||
|
"name": "@mojoio/docker",
|
||||||
|
"version": "1.0.24",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@airbnb/node-memwatch": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-2R+MEEMSTUdKwQ6NFWkyA/UNoSjL1tMldZqJbZpgXSwNMBzlNlkUWEXKu9RqTTMkDqJRfGJ2VDs8gPlPK2APDQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bindings": "^1.3.0",
|
||||||
|
"nan": "^2.9.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@pushrocks/lik": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/lik/-/lik-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-6dwRg7WMdY9drlqfo6NzOcw5ubVWYvIOSSMZz4Jsojpa8aDVwXd2VkD7sxO/PJRrbZzHkx/JXoY/epcWRjngUw==",
|
||||||
|
"requires": {
|
||||||
|
"@pushrocks/smartpromise": "^2.0.5",
|
||||||
|
"@types/lodash": "^4.14.112",
|
||||||
|
"@types/minimatch": "^3.0.3",
|
||||||
|
"lodash": "^4.17.10",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"symbol-tree": "^3.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@pushrocks/smartdelay": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartdelay/-/smartdelay-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-olWwh2/JWfhmYdgqrR5RdSsgv1GlXBnbP+XKUrdKVk3dcCzkoqDx9lRE9NfpoCg1cUM2VMxbTVgTW9PWyexEuw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@pushrocks/smartpromise": "^2.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@pushrocks/smartlog": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartlog/-/smartlog-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-GtsDTGIUF3VuWPyF8FV5dF31ZCEIcaJ56ZlvJsWxjnyJq57X25mk5/K0QAaRE9IIeHg6fORcukFomb5C+AOQrg==",
|
||||||
|
"requires": {
|
||||||
|
"@pushrocks/smartlog-interfaces": "^1.0.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@pushrocks/smartlog-interfaces": {
|
||||||
|
"version": "1.0.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartlog-interfaces/-/smartlog-interfaces-1.0.9.tgz",
|
||||||
|
"integrity": "sha512-0qwpomrRN0kFjmhR9m1iHYXoISoNuXtRP0Wr+JtkYyURLwKHMaW8Xoznf8MzXJptRfqufJi3Fxh5HodpPrIZUA=="
|
||||||
|
},
|
||||||
|
"@pushrocks/smartpromise": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartpromise/-/smartpromise-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g=="
|
||||||
|
},
|
||||||
|
"@pushrocks/smartrequest": {
|
||||||
|
"version": "1.0.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/smartrequest/-/smartrequest-1.0.17.tgz",
|
||||||
|
"integrity": "sha512-kB4+N42rrNNdR72TQ3QduyEtYOoaUiPVtrXS3XhaqQ7AZAtIGDTIfkNMMfzMPJtYXpNGcG1AH+wZDsKvkjW4EQ==",
|
||||||
|
"requires": {
|
||||||
|
"@pushrocks/smartpromise": "^2.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@pushrocks/tapbundle": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@pushrocks/tapbundle/-/tapbundle-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-QWVz5EwB3sjjqHTMa22xuw78TBgVTyqKTF5H6HT9d/rvxL5Ag4ZrTuoadMPcU9hRBx9gtPsKbWq4lEwOHdCmLA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@pushrocks/smartdelay": "^2.0.1",
|
||||||
|
"@pushrocks/smartpromise": "^2.0.5",
|
||||||
|
"early": "^2.1.1",
|
||||||
|
"leakage": "^0.4.0",
|
||||||
|
"smartchai": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@types/chai": {
|
||||||
|
"version": "4.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz",
|
||||||
|
"integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"@types/chai-as-promised": {
|
||||||
|
"version": "7.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz",
|
||||||
|
"integrity": "sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/chai": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@types/chai-string": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/chai-string/-/chai-string-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-aRNMs6TKgjgPlCHwDfq/YNy5VtRR2hJ4AUWByddrT0TRVVD8eX4MiHW6/iHvmQHRlVuuPZcwnTUE7b4yFt7bEA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/chai": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@types/lodash": {
|
||||||
|
"version": "4.14.112",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.112.tgz",
|
||||||
|
"integrity": "sha512-jDD7sendv3V7iwyRXSlECOR8HCtMN2faVA9ngLdHHihSVIwY7nbfsKl2kA6fimUDU1i5l/zgpG3aevwWnN3zCQ=="
|
||||||
|
},
|
||||||
|
"@types/minimatch": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
||||||
|
},
|
||||||
|
"ansi-256-colors": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"assertion-error": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"balanced-match": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||||
|
},
|
||||||
|
"beautycolor": {
|
||||||
|
"version": "1.0.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/beautycolor/-/beautycolor-1.0.11.tgz",
|
||||||
|
"integrity": "sha512-Uxl/39+2uqixPzsrV+0NOHf0sJlWmsKnRTV0oz8+bfwnHPA/E+SZuh3Upn3OXobv0W7LZg5BVoLj1nkMj7m5jA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-256-colors": "^1.1.0",
|
||||||
|
"typings-global": "^1.0.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bindings": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"brace-expansion": {
|
||||||
|
"version": "1.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
|
"requires": {
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"concat-map": "0.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chai": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
|
||||||
|
"integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"assertion-error": "^1.0.1",
|
||||||
|
"check-error": "^1.0.1",
|
||||||
|
"deep-eql": "^3.0.0",
|
||||||
|
"get-func-name": "^2.0.0",
|
||||||
|
"pathval": "^1.0.0",
|
||||||
|
"type-detect": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chai-as-promised": {
|
||||||
|
"version": "7.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
|
||||||
|
"integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"check-error": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chai-string": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.4.0.tgz",
|
||||||
|
"integrity": "sha1-NZFAwFHTak5LGl/GuRAVL0OKjUk=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"check-error": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"concat-map": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||||
|
},
|
||||||
|
"deep-eql": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"type-detect": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"define-properties": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"foreach": "^2.0.5",
|
||||||
|
"object-keys": "^1.0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"early": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/early/-/early-2.1.1.tgz",
|
||||||
|
"integrity": "sha1-hB4jJU6l3FTYr67ugvWrZcAO4jw=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"beautycolor": "^1.0.7",
|
||||||
|
"smartq": "^1.1.1",
|
||||||
|
"typings-global": "^1.0.16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"es-abstract": {
|
||||||
|
"version": "1.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
|
||||||
|
"integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"es-to-primitive": "^1.1.1",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.1",
|
||||||
|
"is-callable": "^1.1.3",
|
||||||
|
"is-regex": "^1.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"es-to-primitive": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-callable": "^1.1.1",
|
||||||
|
"is-date-object": "^1.0.1",
|
||||||
|
"is-symbol": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"es6-error": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"foreach": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
|
||||||
|
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"function-bind": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"get-func-name": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"has": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-callable": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"is-date-object": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"is-regex": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
|
||||||
|
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"has": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"is-symbol": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"leakage": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/leakage/-/leakage-0.4.0.tgz",
|
||||||
|
"integrity": "sha512-x7gYK5n5dPkHDZWJ2Kh8Ag1hZNzUh+HtXn8Bv1aDdN6o6ONPCJ8sOfFq+kxcULJFp3lXaCjXb3iXOLmQRbBLwA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@airbnb/node-memwatch": "^1.0.2",
|
||||||
|
"es6-error": "^4.0.2",
|
||||||
|
"left-pad": "^1.1.3",
|
||||||
|
"minimist": "^1.2.0",
|
||||||
|
"pretty-bytes": "^4.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"left-pad": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"lodash": {
|
||||||
|
"version": "4.17.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
|
||||||
|
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
|
||||||
|
},
|
||||||
|
"minimatch": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
|
"requires": {
|
||||||
|
"brace-expansion": "^1.1.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"nan": {
|
||||||
|
"version": "2.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
|
||||||
|
"integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"object-keys": {
|
||||||
|
"version": "1.0.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
|
||||||
|
"integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"object.getownpropertydescriptors": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
|
||||||
|
"integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.2",
|
||||||
|
"es-abstract": "^1.5.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pathval": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"pretty-bytes": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
|
||||||
|
"integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"rxjs": {
|
||||||
|
"version": "6.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
|
||||||
|
"integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
|
||||||
|
"requires": {
|
||||||
|
"tslib": "^1.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"smartchai": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/smartchai/-/smartchai-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-9M+R56OhAHXScxgr2vzQqxGx0XMS0QXriNZuP7hjlbVbo2FUT+l60iEzbwPt9Ga+5u2cEEjSSoZEQVqlROaddA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/chai": "^4.1.2",
|
||||||
|
"@types/chai-as-promised": "^7.1.0",
|
||||||
|
"@types/chai-string": "^1.4.0",
|
||||||
|
"chai": "^4.1.2",
|
||||||
|
"chai-as-promised": "^7.1.1",
|
||||||
|
"chai-string": "^1.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"smartq": {
|
||||||
|
"version": "1.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/smartq/-/smartq-1.1.8.tgz",
|
||||||
|
"integrity": "sha512-FURlYW/C3bLeZjJcBVyw7bxCyQoCXiXbLCZcDUKznhXHaLu35c8m33/a2H8CA0rtb82lvzN8dRLnBZAcNMzNHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"util.promisify": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symbol-tree": {
|
||||||
|
"version": "3.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
|
||||||
|
"integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY="
|
||||||
|
},
|
||||||
|
"tslib": {
|
||||||
|
"version": "1.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
|
||||||
|
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
|
||||||
|
},
|
||||||
|
"type-detect": {
|
||||||
|
"version": "4.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
||||||
|
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"typings-global": {
|
||||||
|
"version": "1.0.28",
|
||||||
|
"resolved": "https://registry.npmjs.org/typings-global/-/typings-global-1.0.28.tgz",
|
||||||
|
"integrity": "sha512-6VOwJWEY2971HOMHu/7sURzUXiD4/LiMJPsMAOqkHHAtS3MVpLFE5gzTiHilsH9KY5VE1mBQirWIgWFsDuo90A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"util.promisify": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.2",
|
||||||
|
"object.getownpropertydescriptors": "^2.0.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
27
package.json
27
package.json
@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "dockersock",
|
"name": "@mojoio/docker",
|
||||||
"version": "1.0.18",
|
"version": "1.0.24",
|
||||||
"description": "easy communication with docker remote api from node, TypeScript ready",
|
"description": "easy communication with docker remote api from node, TypeScript ready",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "npmdocker"
|
"test": "tsrun test/test.ts",
|
||||||
|
"build": "(npmts --notest && npmdocker)"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -25,18 +26,14 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/dockersock#README",
|
"homepage": "https://gitlab.com/pushrocks/dockersock#README",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/q": "^0.0.27",
|
"@pushrocks/lik": "^3.0.1",
|
||||||
"@types/request": "^0.0.27",
|
"@pushrocks/smartlog": "^2.0.1",
|
||||||
"beautylog": "^5.0.18",
|
"@pushrocks/smartpromise": "^2.0.5",
|
||||||
"lik": "^1.0.7",
|
"@pushrocks/smartrequest": "^1.0.17",
|
||||||
"q": "^1.4.1",
|
"rxjs": "^6.2.2"
|
||||||
"request": "^2.74.0",
|
|
||||||
"rxjs": "^5.0.0-beta.10",
|
|
||||||
"typings-global": "^1.0.6"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"npmts-g": "^5.2.8",
|
"@pushrocks/tapbundle": "^3.0.1"
|
||||||
"should": "^10.0.0",
|
},
|
||||||
"typings-test": "^1.0.1"
|
"private": false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
2
test/test.d.ts
vendored
2
test/test.d.ts
vendored
@ -1,2 +0,0 @@
|
|||||||
import "typings-test";
|
|
||||||
import "should";
|
|
42
test/test.js
42
test/test.js
@ -1,42 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-test");
|
|
||||||
require("should");
|
|
||||||
const index_1 = require("../dist/index");
|
|
||||||
describe("dockersock", function () {
|
|
||||||
describe(".Dockersock()", function () {
|
|
||||||
let testDockersock;
|
|
||||||
it("should create a new Dockersock instance", function () {
|
|
||||||
testDockersock = new index_1.Dockersock();
|
|
||||||
testDockersock.should.be.instanceof(index_1.Dockersock);
|
|
||||||
});
|
|
||||||
it("should list containers", function (done) {
|
|
||||||
testDockersock.listContainers()
|
|
||||||
.then((dataArg) => {
|
|
||||||
console.log(dataArg);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should list detailed containers", function (done) {
|
|
||||||
this.timeout(5000);
|
|
||||||
testDockersock.listContainersDetailed()
|
|
||||||
.then((dataArg) => {
|
|
||||||
console.log(dataArg);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should pull an image from imagetag", function (done) {
|
|
||||||
this.timeout(60000);
|
|
||||||
testDockersock.pullImage("hosttoday/ht-docker-dbase")
|
|
||||||
.then((dataArg) => {
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should return a change Objservable", function (done) {
|
|
||||||
this.timeout(10000);
|
|
||||||
testDockersock.getChangeObservable();
|
|
||||||
testDockersock.endRequests();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUVoQix3QkFBMkIsZUFBZSxDQUFDLENBQUE7QUFFM0MsUUFBUSxDQUFDLFlBQVksRUFBRTtJQUNuQixRQUFRLENBQUMsZUFBZSxFQUFFO1FBQ3RCLElBQUksY0FBMEIsQ0FBQztRQUMvQixFQUFFLENBQUMseUNBQXlDLEVBQUU7WUFDMUMsY0FBYyxHQUFHLElBQUksa0JBQVUsRUFBRSxDQUFDO1lBQ2xDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxJQUFJO1lBQ3ZDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7aUJBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU87Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsSUFBSSxFQUFFLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLFVBQVUsSUFBSTtZQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRTtpQkFDbEMsSUFBSSxDQUFDLENBQUMsT0FBTztnQkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxJQUFJO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsY0FBYyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQztpQkFDaEQsSUFBSSxDQUFDLENBQUMsT0FBTztnQkFDVixJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxJQUFJO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDckMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdCLElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIn0=
|
|
64
test/test.ts
64
test/test.ts
@ -1,42 +1,28 @@
|
|||||||
import "typings-test";
|
import { expect, tap } from '@pushrocks/tapbundle';
|
||||||
import "should";
|
import { DockerHost } from '../ts/index';
|
||||||
|
|
||||||
import { Dockersock } from "../dist/index";
|
let testDockerHost: DockerHost;
|
||||||
|
|
||||||
describe("dockersock", function () {
|
tap.test('should create a new Dockersock instance', async () => {
|
||||||
describe(".Dockersock()", function () {
|
testDockerHost = new DockerHost();
|
||||||
let testDockersock: Dockersock;
|
return expect(testDockerHost).to.be.instanceof(DockerHost);
|
||||||
it("should create a new Dockersock instance", function () {
|
|
||||||
testDockersock = new Dockersock();
|
|
||||||
testDockersock.should.be.instanceof(Dockersock);
|
|
||||||
});
|
|
||||||
it("should list containers", function (done) {
|
|
||||||
testDockersock.listContainers()
|
|
||||||
.then((dataArg) => {
|
|
||||||
console.log(dataArg);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should list detailed containers", function (done) {
|
|
||||||
this.timeout(5000);
|
|
||||||
testDockersock.listContainersDetailed()
|
|
||||||
.then((dataArg) => {
|
|
||||||
console.log(dataArg);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should pull an image from imagetag", function (done) {
|
|
||||||
this.timeout(60000);
|
|
||||||
testDockersock.pullImage("hosttoday/ht-docker-dbase")
|
|
||||||
.then((dataArg) => {
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should return a change Objservable", function (done) {
|
|
||||||
this.timeout(10000);
|
|
||||||
testDockersock.getChangeObservable();
|
|
||||||
testDockersock.endRequests();
|
|
||||||
done();
|
|
||||||
})
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tap.test('should list containers', async () => {
|
||||||
|
const containers = await testDockerHost.getContainers();
|
||||||
|
console.log(containers);
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
tap.test('should pull an image from imagetag', async () => {
|
||||||
|
await testDockerHost.pullImage('hosttoday/ht-docker-node:npmci');
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.skip.test('should return a change Objservable', async () => {
|
||||||
|
let myObservable = testDockerHost.getChangeObservable();
|
||||||
|
testDockerHost.endRequests();
|
||||||
|
let testPromise = observableToPromise(myObservable);
|
||||||
|
return await expect(testPromise).to.eventually.be.fulfilled;
|
||||||
|
}); */
|
||||||
|
|
||||||
|
tap.start();
|
||||||
|
2
ts/docker.changes.ts
Normal file
2
ts/docker.changes.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import * as plugins from './dockersock.plugins';
|
||||||
|
|
10
ts/docker.classes.container.ts
Normal file
10
ts/docker.classes.container.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import * as plugins from './dockersock.plugins';
|
||||||
|
import { DockerHost } from './docker.classes.host';
|
||||||
|
|
||||||
|
export class DockerContainer {
|
||||||
|
static async getContainers(dockerHostArg: DockerHost): Promise<DockerContainer[]> {
|
||||||
|
const result = [];
|
||||||
|
await dockerHostArg.request('GET', '/containers/json')
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
58
ts/docker.classes.host.ts
Normal file
58
ts/docker.classes.host.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import * as plugins from "./dockersock.plugins";
|
||||||
|
import { DockerContainer } from "./docker.classes.container";
|
||||||
|
|
||||||
|
export class DockerHost {
|
||||||
|
/**
|
||||||
|
* the path where the docker sock can be found
|
||||||
|
*/
|
||||||
|
sockPath: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* keeping track of currently active requests to safely end this module at any time
|
||||||
|
*/
|
||||||
|
requestObjectmap = new plugins.lik.Objectmap<any>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the constructor to instantiate a new docker sock instance
|
||||||
|
* @param pathArg
|
||||||
|
*/
|
||||||
|
constructor(pathArg: string = "http://unix:/var/run/docker.sock:") {
|
||||||
|
this.sockPath = pathArg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* authenticate against a registry
|
||||||
|
* @param userArg
|
||||||
|
* @param passArg
|
||||||
|
*/
|
||||||
|
auth(registryArg: string, userArg: string, passArg: string) {
|
||||||
|
let done = plugins.smartpromise.defer();
|
||||||
|
this.request("POST", "");
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
async getContainers() {
|
||||||
|
const containerArray = await DockerContainer.getContainers(this);
|
||||||
|
return containerArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fire a request
|
||||||
|
*/
|
||||||
|
async request(methodArg: string, routeArg: string, dataArg = {}) {
|
||||||
|
const requestUrl = `${this.sockPath}${routeArg}`
|
||||||
|
console.log(requestUrl);
|
||||||
|
const response = await plugins.smartrequest.request(requestUrl, {
|
||||||
|
method: methodArg,
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Host": "docker.sock"
|
||||||
|
},
|
||||||
|
requestBody: dataArg
|
||||||
|
});
|
||||||
|
return response
|
||||||
|
}
|
||||||
|
}
|
14
ts/docker.classes.image.ts
Normal file
14
ts/docker.classes.image.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import * as plugins from './dockersock.plugins';
|
||||||
|
import { DockerHost } from './docker.classes.host';
|
||||||
|
|
||||||
|
export class DockerImage {
|
||||||
|
/**
|
||||||
|
* the tags for an image
|
||||||
|
*/
|
||||||
|
tags: string[] = [];
|
||||||
|
|
||||||
|
static async createFromRegsitry(dockerHostArg: DockerHost): Promise<DockerImage> {
|
||||||
|
const resultingImage = new DockerImage();
|
||||||
|
return resultingImage;
|
||||||
|
}
|
||||||
|
}
|
0
ts/docker.classes.network.ts
Normal file
0
ts/docker.classes.network.ts
Normal file
0
ts/docker.classes.service.ts
Normal file
0
ts/docker.classes.service.ts
Normal file
@ -1,230 +0,0 @@
|
|||||||
import "typings-global"
|
|
||||||
import * as plugins from "./dockersock.plugins";
|
|
||||||
import { Observable } from "rxjs";
|
|
||||||
|
|
||||||
export class Dockersock {
|
|
||||||
sockPath: string;
|
|
||||||
requestObjectmap: plugins.lik.Objectmap = new plugins.lik.Objectmap();
|
|
||||||
constructor(pathArg: string = "http://unix:/var/run/docker.sock:") {
|
|
||||||
this.sockPath = pathArg;
|
|
||||||
}
|
|
||||||
|
|
||||||
// methods
|
|
||||||
auth(userArg: string, passArg: string) {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
this.request("POST", "");
|
|
||||||
return done.promise;
|
|
||||||
}
|
|
||||||
listContainers() {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
this.request("GET", "/containers")
|
|
||||||
.then(done.resolve);
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
||||||
listContainersDetailed() {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
let detailedDataObject = [];
|
|
||||||
this.listContainers()
|
|
||||||
.then((dataArg) => {
|
|
||||||
let recursiveCounter = 0;
|
|
||||||
let makeDetailed = () => {
|
|
||||||
if (typeof dataArg[recursiveCounter] != "undefined") {
|
|
||||||
this.request("GET", "/containers/" + dataArg[recursiveCounter].Id)
|
|
||||||
.then((dataArg2) => {
|
|
||||||
detailedDataObject.push(dataArg2);
|
|
||||||
recursiveCounter++;
|
|
||||||
// recursive call
|
|
||||||
makeDetailed();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
done.resolve(detailedDataObject);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
makeDetailed();
|
|
||||||
});
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
||||||
listContainersRunning() {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
return done.promise;
|
|
||||||
}
|
|
||||||
listContainersStopped() {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
return done.promise;
|
|
||||||
}
|
|
||||||
listImages() {
|
|
||||||
return this.request("GET", "/images", "?all=true");
|
|
||||||
}
|
|
||||||
listImagesDangling() {
|
|
||||||
return this.request("GET", "/images", "?dangling=true");
|
|
||||||
}
|
|
||||||
pullImage(imageLabelArg: string) {
|
|
||||||
let imageLabel = encodeURI(imageLabelArg);
|
|
||||||
return this.requestStream("POST", "/images/create?fromImage=" + imageLabel);
|
|
||||||
};
|
|
||||||
createContainer(optionsArg, pullFirstArg: boolean = true) {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
let create = () => {
|
|
||||||
return this.request("POST", "/containers/create", "", optionsArg);
|
|
||||||
}
|
|
||||||
if (pullFirstArg) {
|
|
||||||
this.pullImage(optionsArg.Image)
|
|
||||||
.then(create)
|
|
||||||
.then(done.resolve);
|
|
||||||
} else {
|
|
||||||
create()
|
|
||||||
.then(done.resolve)
|
|
||||||
}
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
||||||
getContainerId() {
|
|
||||||
|
|
||||||
};
|
|
||||||
startContainer(containerNameArg) {
|
|
||||||
return this.request("POST", "/containers/" + containerNameArg + "/start");
|
|
||||||
};
|
|
||||||
stopContainer(containerNameArg) {
|
|
||||||
return this.request("POST", "/containers/" + containerNameArg + "/stop");
|
|
||||||
};
|
|
||||||
removeContainer(containerNameArg) {
|
|
||||||
return this.request("DELETE", "/containers/" + containerNameArg + "?v=1");
|
|
||||||
};
|
|
||||||
clean() {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
||||||
callOnChange(cb: Function) {
|
|
||||||
let cbPromise;
|
|
||||||
let changeBuffered: boolean = false; // when cb is running then buffer any consequent change
|
|
||||||
let requestStream = plugins.request.get(this.sockPath + "/events");
|
|
||||||
requestStream.on("response", (response) => {
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
plugins.beautylog.ok("request returned status 200, so we are good!");
|
|
||||||
} else {
|
|
||||||
plugins.beautylog.error("request returned error: " + response.statusCode);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
requestStream.on("data", (data: Buffer) => {
|
|
||||||
let status = JSON.parse(data.toString()).status;
|
|
||||||
plugins.beautylog.logReduced(status);
|
|
||||||
if (typeof cbPromise == "undefined" || cbPromise.state == "pending") {
|
|
||||||
cbPromise = cb();
|
|
||||||
} else if (changeBuffered) {
|
|
||||||
changeBuffered = true;
|
|
||||||
cbPromise.then(() => {
|
|
||||||
changeBuffered = false;
|
|
||||||
cbPromise = cb();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
requestStream.on("end", () => {
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
getChangeObservable() {
|
|
||||||
let options = {
|
|
||||||
method: "GET",
|
|
||||||
url: this.sockPath + "/events",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"Host": "docker.sock"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let requestStream = plugins.request(options, (err, res, body) => {
|
|
||||||
if (!err && res.statusCode == 200) {
|
|
||||||
} else {
|
|
||||||
console.log(err);
|
|
||||||
console.log(res);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
requestStream.on("response", (response) => {
|
|
||||||
this.requestObjectmap.add(response);
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
plugins.beautylog.ok("request returned status 200, so we are good!");
|
|
||||||
} else {
|
|
||||||
plugins.beautylog.error("request returned error: " + response.statusCode);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
let changeObservable = Observable.fromEvent(requestStream, "data");
|
|
||||||
requestStream.on("end", () => {
|
|
||||||
this.requestObjectmap.remove(requestStream);
|
|
||||||
});
|
|
||||||
return changeObservable;
|
|
||||||
}
|
|
||||||
request(methodArg: string, routeArg: string, queryArg: string = "", dataArg = {}) {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
let jsonArg: string = JSON.stringify(dataArg);
|
|
||||||
let suffix: string = "";
|
|
||||||
if (methodArg == "GET") suffix = "/json";
|
|
||||||
let options = {
|
|
||||||
method: methodArg,
|
|
||||||
url: this.sockPath + routeArg + suffix + queryArg,
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"Host": "docker.sock"
|
|
||||||
},
|
|
||||||
body: jsonArg
|
|
||||||
};
|
|
||||||
//console.log(options);
|
|
||||||
plugins.request(options, (err, res, body) => {
|
|
||||||
if (!err && res.statusCode == 200) {
|
|
||||||
var responseObj = JSON.parse(body);
|
|
||||||
done.resolve(responseObj);
|
|
||||||
} else {
|
|
||||||
console.log(err);
|
|
||||||
console.log(res);
|
|
||||||
done.reject(err);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
return done.promise;
|
|
||||||
}
|
|
||||||
requestStream(methodArg: string, routeArg: string, queryArg: string = "", dataArg = {}) {
|
|
||||||
let done = plugins.q.defer();
|
|
||||||
let jsonArg: string = JSON.stringify(dataArg);
|
|
||||||
let suffix: string = "";
|
|
||||||
let options = {
|
|
||||||
method: methodArg,
|
|
||||||
url: this.sockPath + routeArg + suffix + queryArg,
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"Host": "docker.sock"
|
|
||||||
},
|
|
||||||
body: jsonArg
|
|
||||||
};
|
|
||||||
let requestStream = plugins.request(options, (err, res, body) => {
|
|
||||||
if (!err && res.statusCode == 200) {
|
|
||||||
done.resolve();
|
|
||||||
} else {
|
|
||||||
console.log(err);
|
|
||||||
console.log(res);
|
|
||||||
done.reject(err);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
requestStream.on("response", (response) => {
|
|
||||||
this.requestObjectmap.add(response);
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
plugins.beautylog.ok("request returned status 200, so we are good!");
|
|
||||||
} else {
|
|
||||||
plugins.beautylog.error("request returned error: " + response.statusCode);
|
|
||||||
done.reject(response);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
requestStream.on("data", (data: Buffer) => {
|
|
||||||
let status;
|
|
||||||
status = JSON.parse(data.toString()).status;
|
|
||||||
plugins.beautylog.logReduced(status);
|
|
||||||
});
|
|
||||||
requestStream.on("end", () => {
|
|
||||||
this.requestObjectmap.remove(requestStream);
|
|
||||||
});
|
|
||||||
return done.promise;
|
|
||||||
};
|
|
||||||
endRequests() {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.requestObjectmap.forEach((itemArg: plugins.request.Request) => {
|
|
||||||
itemArg.emit("end");
|
|
||||||
});
|
|
||||||
this.requestObjectmap.wipe();
|
|
||||||
}, 5000);
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
import "typings-global";
|
import 'typings-global';
|
||||||
export import beautylog = require("beautylog");
|
export import smartlog = require('@pushrocks/smartlog');
|
||||||
export import lik = require("lik");
|
export import lik = require('@pushrocks/lik');
|
||||||
export import q = require("q");
|
export import smartpromise = require('@pushrocks/smartpromise');
|
||||||
export import request = require("request");
|
export import smartrequest = require('@pushrocks/smartrequest');
|
||||||
export import rxjs = require("rxjs");
|
export import rxjs = require('rxjs');
|
||||||
|
@ -1,2 +1 @@
|
|||||||
import "typings-global";
|
export { DockerHost } from './docker.classes.host';
|
||||||
export { Dockersock } from "./dockersock.classes.dockersock";
|
|
||||||
|
Reference in New Issue
Block a user