docker-cli-js
Advanced tools
Comparing version 0.0.2 to 0.0.3
{ | ||
"docker_machine_key_path": "~/.docker/machine/machines/machine_name/" | ||
"DockerMachineName": "enter value here" | ||
} |
@@ -8,4 +8,2 @@ var mkdirp = require('mkdirp'); | ||
//grunt.loadTasks('./tasks'); | ||
grunt.initConfig({ | ||
@@ -30,15 +28,2 @@ shell: { | ||
}, | ||
//clean: { | ||
// keys: ['test/keys/'], | ||
// options: { force: true } | ||
//}, | ||
//copy: { | ||
// keys: { | ||
// expand: true, | ||
// src: config.docker_machine_key_path + '*', | ||
// dest: 'test/keys/', | ||
// flatten: true, | ||
// filter: 'isFile', | ||
// }, | ||
//}, | ||
mochaTest: { | ||
@@ -54,4 +39,2 @@ config: config, | ||
src: ['./test/**/*.js'] | ||
//src: [baseDir + '/test/fleetmakefileReplace_test.js'] | ||
//src: [baseDir + '/test/objectToArray_test.js'] | ||
} | ||
@@ -64,4 +47,2 @@ }, | ||
grunt.loadNpmTasks('grunt-contrib-jshint'); | ||
//grunt.loadNpmTasks('grunt-contrib-clean'); | ||
//grunt.loadNpmTasks('grunt-contrib-copy'); | ||
grunt.loadNpmTasks('grunt-mocha-test'); | ||
@@ -68,0 +49,0 @@ |
@@ -21,4 +21,5 @@ /** | ||
var os = require("os"); | ||
var _ = require('lodash'); | ||
var dockermachine = require('dockermachineconfig'); | ||
var Docker = function (opts) { | ||
@@ -28,18 +29,92 @@ if (!(this instanceof Docker)) { | ||
} | ||
_.merge(this, opts); | ||
}; | ||
Docker.prototype.info = function(callback) { | ||
return Promise.resolve().then(function () { | ||
return exec('docker info'); | ||
}).then(function (data) { | ||
//console.log('data = ', data); | ||
return data; | ||
}).nodeify(callback); | ||
Docker.prototype.command = function(command, callback) { | ||
var self = this; | ||
var exec_command = 'docker '; | ||
return Promise.resolve().then(function () { | ||
if (self.machinename) { | ||
return dockermachine.config(self.machinename).then(function (data) { | ||
self.machineconfig = data; | ||
}); | ||
} | ||
}).then(function (data) { | ||
if (self.machineconfig) { | ||
exec_command += self.machineconfig.raw + ' '; | ||
} | ||
exec_command += command + ' '; | ||
var exec_options = {}; | ||
if (self.cwd) { | ||
exec_options.cwd = self.cwd; | ||
} | ||
console.log('exec options =', exec_options); | ||
return exec(exec_command, exec_options); | ||
}).then(function (data) { | ||
var result = { | ||
command: exec_command, | ||
raw: JSON.stringify(data) | ||
}; | ||
return extractResult(result); | ||
}).nodeify(callback); | ||
}; | ||
module.exports = Docker; | ||
var extractResult = function (result) { | ||
result.test = 'done'; | ||
var extracterArray = [ | ||
{ | ||
re: / build /, | ||
run: function (resultp) { | ||
var obj = JSON.parse(resultp.raw); | ||
var lines = obj[0].split(os.EOL); | ||
lines.forEach(function (line) { | ||
var re = /Successfully built (.*)$/; | ||
var str = line; | ||
var m; | ||
if ((m = re.exec(str)) !== null) { | ||
if (m.index === re.lastIndex) { | ||
re.lastIndex++; | ||
} | ||
// View your result using the m-variable. | ||
// eg m[0] etc. | ||
resultp.success = true; | ||
resultp.imageId = m[1]; | ||
} | ||
}); | ||
return (resultp.response = lines); | ||
} | ||
} | ||
]; | ||
extracterArray.forEach(function (extracter) { | ||
var re = extracter.re; | ||
var str = result.command; | ||
var m; | ||
if ((m = re.exec(str)) !== null) { | ||
if (m.index === re.lastIndex) { | ||
re.lastIndex++; | ||
} | ||
// View your result using the m-variable. | ||
// eg m[0] etc. | ||
return extracter.run(result); | ||
} | ||
}); | ||
return result; | ||
}; | ||
{ | ||
"name": "docker-cli-js", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "A wrapper for the docker CLI", | ||
"main": "lib/index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "grunt" | ||
}, | ||
@@ -29,4 +29,2 @@ "repository": { | ||
"should": "~7.1.0", | ||
"grunt-contrib-copy": "~0.8.1", | ||
"grunt-contrib-clean": "~0.6.0", | ||
"chai": "~3.3.0", | ||
@@ -36,3 +34,6 @@ "dockermachine": "0.0.5" | ||
"dependencies": { | ||
"dockermachineconfig": "~1.0.0", | ||
"lodash": "~3.10.1", | ||
"bluebird": "~2.10.1" | ||
} | ||
} |
@@ -23,13 +23,84 @@ # docker-cli-js | ||
## The following docker methods are implemented | ||
## Usage | ||
- build | ||
- | ||
```js | ||
var docker = new Docker({ | ||
machinename: 'aws_machine01', | ||
cwd: 'nginx' | ||
}); | ||
docker.command('build -t nginximg1 .').then(function (data) { | ||
console.log('data = ', data); | ||
}) | ||
## Usage | ||
```js | ||
?? | ||
//data = { | ||
// command: 'docker --tlsverify --tlscacert="/home/ubuntu/.docker/machine/machines/aws_machine01/ca.pem" --tlscert="/home/ubuntu/.docker/machine/machines/aws_machine01/cert.pem" --tlskey="/home/ubuntu/.docker/machine/machines/aws_machine01/key.pem" -H=tcp://52.64.142.194:2376 build -t nginximg1 . ', | ||
// raw: '["Sending build context to Docker daemon 3.584 kB\\rSending build context to Docker daemon 3.584 kB\\r\\r\\nStep 0 : FROM nginx\\nlatest: Pulling from library/nginx\\n843e2bded498: Pulling fs layer\\n8c00acfb0175: Pulling fs layer\\n426ac73b867e: Pulling fs layer\\nd6c6bbd63f57: Pulling fs layer\\n4ac684e3f295: Pulling fs layer\\n91391bd3c4d3: Pulling fs layer\\nb4587525ed53: Pulling fs layer\\n0240288f5187: Pulling fs layer\\n28c109ec1572: Pulling fs layer\\n063d51552dac: Pulling fs layer\\nd8a70839d961: Pulling fs layer\\nceab60537ad2: Pulling fs layer\\nd8a70839d961: Verifying Checksum\\nd8a70839d961: Download complete\\n4ac684e3f295: Verifying Checksum\\n4ac684e3f295: Download complete\\n0240288f5187: Verifying Checksum\\n0240288f5187: Download complete\\nd6c6bbd63f57: Verifying Checksum\\nd6c6bbd63f57: Download complete\\n8c00acfb0175: Verifying Checksum\\n8c00acfb0175: Download complete\\nceab60537ad2: Verifying Checksum\\nceab60537ad2: Download complete\\n28c109ec1572: Verifying Checksum\\n28c109ec1572: Download complete\\n426ac73b867e: Verifying Checksum\\n426ac73b867e: Download complete\\n063d51552dac: Verifying Checksum\\n063d51552dac: Download complete\\n91391bd3c4d3: Verifying Checksum\\n91391bd3c4d3: Download complete\\nb4587525ed53: Verifying Checksum\\nb4587525ed53: Download complete\\n843e2bded498: Verifying Checksum\\n843e2bded498: Download complete\\n843e2bded498: Pull complete\\n8c00acfb0175: Pull complete\\n426ac73b867e: Pull complete\\nd6c6bbd63f57: Pull complete\\n4ac684e3f295: Pull complete\\n91391bd3c4d3: Pull complete\\nb4587525ed53: Pull complete\\n0240288f5187: Pull complete\\n28c109ec1572: Pull complete\\n063d51552dac: Pull complete\\nd8a70839d961: Pull complete\\nceab60537ad2: Pull complete\\nlibrary/nginx:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.\\nDigest: sha256:302e0a331371acb77e434075d111ebe485a7f3605fdcf184185fcca73d65ac8b\\nStatus: Downloaded newer image for nginx:latest\\n ---> ceab60537ad2\\nStep 1 : COPY content /usr/share/nginx/html\\n ---> d57e3a01e674\\nRemoving intermediate container 84b42b1010a6\\nSuccessfully built d57e3a01e674\\n",""]', | ||
// success: true, | ||
// imageId: 'd57e3a01e674', | ||
// response: | ||
// ['Sending build context to Docker daemon 3.584 kB\rSending build context to Docker daemon 3.584 kB\r\r', | ||
// 'Step 0 : FROM nginx', | ||
// 'latest: Pulling from library/nginx', | ||
// '843e2bded498: Pulling fs layer', | ||
// '8c00acfb0175: Pulling fs layer', | ||
// '426ac73b867e: Pulling fs layer', | ||
// 'd6c6bbd63f57: Pulling fs layer', | ||
// '4ac684e3f295: Pulling fs layer', | ||
// '91391bd3c4d3: Pulling fs layer', | ||
// 'b4587525ed53: Pulling fs layer', | ||
// '0240288f5187: Pulling fs layer', | ||
// '28c109ec1572: Pulling fs layer', | ||
// '063d51552dac: Pulling fs layer', | ||
// 'd8a70839d961: Pulling fs layer', | ||
// 'ceab60537ad2: Pulling fs layer', | ||
// 'd8a70839d961: Verifying Checksum', | ||
// 'd8a70839d961: Download complete', | ||
// '4ac684e3f295: Verifying Checksum', | ||
// '4ac684e3f295: Download complete', | ||
// '0240288f5187: Verifying Checksum', | ||
// '0240288f5187: Download complete', | ||
// 'd6c6bbd63f57: Verifying Checksum', | ||
// 'd6c6bbd63f57: Download complete', | ||
// '8c00acfb0175: Verifying Checksum', | ||
// '8c00acfb0175: Download complete', | ||
// 'ceab60537ad2: Verifying Checksum', | ||
// 'ceab60537ad2: Download complete', | ||
// '28c109ec1572: Verifying Checksum', | ||
// '28c109ec1572: Download complete', | ||
// '426ac73b867e: Verifying Checksum', | ||
// '426ac73b867e: Download complete', | ||
// '063d51552dac: Verifying Checksum', | ||
// '063d51552dac: Download complete', | ||
// '91391bd3c4d3: Verifying Checksum', | ||
// '91391bd3c4d3: Download complete', | ||
// 'b4587525ed53: Verifying Checksum', | ||
// 'b4587525ed53: Download complete', | ||
// '843e2bded498: Verifying Checksum', | ||
// '843e2bded498: Download complete', | ||
// '843e2bded498: Pull complete', | ||
// '8c00acfb0175: Pull complete', | ||
// '426ac73b867e: Pull complete', | ||
// 'd6c6bbd63f57: Pull complete', | ||
// '4ac684e3f295: Pull complete', | ||
// '91391bd3c4d3: Pull complete', | ||
// 'b4587525ed53: Pull complete', | ||
// '0240288f5187: Pull complete', | ||
// '28c109ec1572: Pull complete', | ||
// '063d51552dac: Pull complete', | ||
// 'd8a70839d961: Pull complete', | ||
// 'ceab60537ad2: Pull complete', | ||
// 'library/nginx:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.', | ||
// 'Digest: sha256:302e0a331371acb77e434075d111ebe485a7f3605fdcf184185fcca73d65ac8b', | ||
// 'Status: Downloaded newer image for nginx:latest', | ||
// ' ---> ceab60537ad2', | ||
// 'Step 1 : COPY content /usr/share/nginx/html', | ||
// ' ---> d57e3a01e674', | ||
// 'Removing intermediate container 84b42b1010a6', | ||
// 'Successfully built d57e3a01e674', | ||
// ''] | ||
//} | ||
``` |
/*global describe, it, before */ | ||
var Docker = require('../lib/index.js'); | ||
//var fs = require('fs'); | ||
//var path = require('path'); | ||
var path = require('path'); | ||
var should = require('chai').should(); | ||
var machine = new require('./dockermachineconfig.js')(); | ||
var assert = require('chai').assert; | ||
var dockermachine = require('dockermachineconfig'); | ||
var config = require('../my_config.json'); | ||
describe('docker', function () { | ||
//before(function (done) { | ||
// // runs before all tests in this block | ||
// dockermachine.config(config.DockerMachineName).then( | ||
// function (output) { | ||
// console.log('index.js machine_config output =',output); | ||
// done(); | ||
// }); | ||
//}); | ||
it('should merge opts', function () { | ||
var docker = new Docker({ a: 'a' }); | ||
assert.isNotNull(docker); | ||
assert.equal(docker.a, 'a'); | ||
//console.log('docker', docker); | ||
}); | ||
var options = { | ||
}; | ||
describe('machine_config', function () { | ||
before(function (done) { | ||
// runs before all tests in this block | ||
machine.config(config.DockerMachineName).then( | ||
function (output) { | ||
console.log('index.js machine_config output =',output); | ||
done(); | ||
}); | ||
it('command info2 should fail', function (done) { | ||
var docker = new Docker({ machinename: config.DockerMachineName }); | ||
//console.log('docker', docker); | ||
assert.isNotNull(docker); | ||
var failed = false; | ||
var err = null; | ||
docker.command('info2').then(function (data) { | ||
//console.log('data = ', data); | ||
assert.isNotNull(data); | ||
}).catch(function (error) { | ||
assert.isNotNull(error); | ||
err = error; | ||
failed = true; | ||
//console.log('error = ', error); | ||
}).finally(function () { | ||
//console.log('finally '); | ||
assert.isTrue(failed); | ||
assert.isNotNull(err); | ||
done(); | ||
}); | ||
}); | ||
//before(function (done) { | ||
// // runs before all tests in this block | ||
// machine.ls().then( | ||
// function (output) { | ||
// console.log(output); | ||
// done(); | ||
// }); | ||
//}); | ||
it('command info should pass', function (done) { | ||
var docker = new Docker({ machinename: config.DockerMachineName }); | ||
//console.log('docker', docker); | ||
assert.isNotNull(docker); | ||
var failed = false; | ||
var err = null; | ||
docker.command('info').then(function (data) { | ||
//console.log('data = ', data); | ||
assert.isNotNull(data); | ||
}).catch(function (error) { | ||
assert.isNotNull(error); | ||
err = error; | ||
failed = true; | ||
//console.log('error = ', error); | ||
}).finally(function () { | ||
//console.log('finally '); | ||
assert.isFalse(failed); | ||
assert.isNull(err); | ||
done(); | ||
}); | ||
}); | ||
it('should be valid json', function () { | ||
config.DockerMachineName.should.be.a('string'); | ||
//should.exist(config.DockerMachineName); | ||
console.log('DockerMachineStorePath', config.DockerMachineName); | ||
it('command build should pass', function (done) { | ||
this.timeout(15000); | ||
var docker = new Docker({ | ||
machinename: config.DockerMachineName, | ||
cwd: path.join(__dirname, 'nginx') | ||
}); | ||
//console.log('docker', docker); | ||
assert.isNotNull(docker); | ||
var failed = false; | ||
var err = null; | ||
docker.command('build -t nginximg1 .').then(function (data) { | ||
//console.log('data = ', data); | ||
assert.isNotNull(data); | ||
}).catch(function (error) { | ||
assert.isNotNull(error); | ||
err = error; | ||
failed = true; | ||
//console.log('error = ', error); | ||
}).finally(function () { | ||
//console.log('finally '); | ||
assert.isFalse(failed); | ||
assert.isNull(err); | ||
done(); | ||
}); | ||
}); | ||
it('command build with callback', function (done) { | ||
this.timeout(15000); | ||
var docker = new Docker({ | ||
cwd: path.join(__dirname, 'nginx') | ||
}); | ||
//console.log('docker', docker); | ||
assert.isNotNull(docker); | ||
docker.command('build -t nginximg1 .', function (err, data) { | ||
console.log('data = ', data); | ||
assert.isNotNull(data); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
@@ -47,24 +124,2 @@ | ||
//describe('info', function () { | ||
// it('should return valid json', function (done) { | ||
// //assert.equal(false, fmvalidate.printMsg()); s | ||
// var docker = new Docker({ t: 't' }); | ||
// docker.info().then(function (data) { | ||
// //console.log('test index.js result = ' + result); | ||
// should.exist(data); | ||
// done(); | ||
// //var obj = JSON.parse(result); | ||
// }); | ||
// }); | ||
//}); | ||
//describe('info', function () { | ||
// it('should call callback', function (done) { | ||
// //assert.equal(false, fmvalidate.printMsg()); s | ||
// var docker = new Docker({ t: 't' }); | ||
// docker.info(function (err, data) { | ||
// should.exist(data); | ||
// done(); | ||
// }); | ||
// }); | ||
//}); |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
25499
8
11
246
1
105
1
2
3
+ Addedbluebird@~2.10.1
+ Addeddockermachineconfig@~1.0.0
+ Addedlodash@~3.10.1
+ Addedbluebird@2.10.2(transitive)
+ Addeddockermachineconfig@1.0.4(transitive)
+ Addedlodash@3.10.1(transitive)