From a12e8c40f963b41a8a51756b861ba5f8e7316ccd Mon Sep 17 00:00:00 2001 From: haad Date: Tue, 13 Sep 2016 22:18:53 +0200 Subject: [PATCH 01/23] Add possibility to pass config options to local node and down to init() --- src/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 7e1b93c7..a62ad680 100644 --- a/src/index.js +++ b/src/index.js @@ -13,7 +13,11 @@ module.exports = { version (done) { (new Node()).version(done) }, - local (path, done) { + local (path, opts, done) { + if (typeof opts === 'function') { + done = opts + opts = {} + } if (!done) { done = path path = process.env.IPFS_PATH || @@ -21,7 +25,7 @@ module.exports = { process.env.USERPROFILE, '.ipfs') } process.nextTick(() => { - done(null, new Node(path)) + done(null, new Node(path, opts)) }) }, disposableApi (opts, done) { From 328055253514ae7230331827cf66a1127daa92f9 Mon Sep 17 00:00:00 2001 From: Haad Date: Fri, 11 Nov 2016 13:32:34 +0100 Subject: [PATCH 02/23] Fix hash check test --- test/index.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/index.spec.js b/test/index.spec.js index 00926db5..fa71f1f3 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -364,7 +364,7 @@ describe('ipfs-api version', function () { const added = res[res.length - 1] assert(added) - assert.equal(added.Hash, 'Qmafmh1Cw3H1bwdYpaaj5AbCW4LkYyUWaM7Nykpn5NZoYL') + assert.equal(added.Hash, 'Qmd4VbGayymErsAE1E6FYD4SnDgbL8z3P2h9jRQCaBaDSV') done() }) }) From ab73fcf2f0ceb8d2972e042b7f596ca77fd44961 Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 00:04:08 -0400 Subject: [PATCH 03/23] fix(shutdown): fixed bugs in stopDaemon - bug1: local var for the closure (this.subprocess set to null) - bug2: order problem: should set .on('close') handler before .kill() --- src/node.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/node.js b/src/node.js index 499acb7d..2396a5f4 100644 --- a/src/node.js +++ b/src/node.js @@ -151,18 +151,19 @@ module.exports = class Node { if (!done) done = () => {} if (!this.subprocess) return done(null) - this.subprocess.kill('SIGTERM') - + // need a local var for the closure, as we clear the var. + const subprocess = this.subprocess const timeout = setTimeout(() => { - this.subprocess.kill('SIGKILL') + subprocess.kill('SIGKILL') done(null) }, GRACE_PERIOD) - this.subprocess.on('close', () => { + subprocess.on('close', () => { clearTimeout(timeout) done(null) }) + subprocess.kill('SIGTERM') this.subprocess = null } From b15aeb28970250aec0cae85ac914e7228e4994cb Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 00:07:56 -0400 Subject: [PATCH 04/23] note(shutdown): comment on problematic func name --- src/node.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/node.js b/src/node.js index 2396a5f4..37298bd1 100644 --- a/src/node.js +++ b/src/node.js @@ -109,6 +109,8 @@ module.exports = class Node { } // cleanup tmp files + // TODO: this is a bad name for a function. a user may call this expecting + // something similar to "stopDaemon()". consider changing it. - @jbenet shutdown (done) { if (!this.clean && this.disposable) { rimraf(this.path, (err) => { From 7a00f73fab5e6c395674dba3aa868a4223d54e9d Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 00:10:46 -0400 Subject: [PATCH 05/23] fix: rm unused var (thanks, linter) --- src/node.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/node.js b/src/node.js index 37298bd1..62f317bb 100644 --- a/src/node.js +++ b/src/node.js @@ -80,7 +80,6 @@ module.exports = class Node { done = initOpts initOpts = {} } - let buf = '' const keySize = initOpts.keysize || 2048 @@ -91,9 +90,7 @@ module.exports = class Node { run(this.exec, ['init', '-b', keySize], {env: this.env}) .on('error', done) - .on('data', (data) => { - buf += data - }) + .on('data', () => {}) // let it flow .on('end', () => { configureNode(this, this.opts, (err) => { if (err) return done(err) From 5168be782eccb25d566f952e77ec57ac0dd67007 Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 00:13:40 -0400 Subject: [PATCH 06/23] fix(startDaemon): fix the behavior of startDeamon - now waits for "Daemon is ready" - also tracks Gateway address - checks failures on startup, and returns an error if so - this was a serious bug-- would not detect errors. - fails correctly, without leaving the process hanging --- src/node.js | 94 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/src/node.js b/src/node.js index 62f317bb..5374f841 100644 --- a/src/node.js +++ b/src/node.js @@ -118,38 +118,86 @@ module.exports = class Node { } startDaemon (done) { - parseConfig(this.path, (err, conf) => { + const node = this + parseConfig(node.path, (err, conf) => { if (err) return done(err) - this.subprocess = run(this.exec, ['daemon'], {env: this.env}) - .on('error', (err) => { - if (String(err).match('daemon is running')) { - // we're good - done(null, ipfs(conf.Addresses.API)) - } else if (String(err).match('non-zero exit code')) { - // ignore when kill -9'd - } else { - done(err) - } - }) - .on('data', (data) => { - const match = String(data).trim().match(/API server listening on (.*)/) - if (match) { - this.apiAddr = match[1] - const addr = multiaddr(this.apiAddr).nodeAddress() - const api = ipfs(this.apiAddr) - api.apiHost = addr.address - api.apiPort = addr.port - done(null, api) - } - }) + let stdout = "" + + // strategy: + // - run subprocess + // - listen for API addr on stdout (success) + // - or an early exit or error (failure) + node.subprocess = run(node.exec, ['daemon'], {env: node.env}) + node.subprocess.on('error', onErr) + .on('data', onData) + + // done2 is called to call done after removing the event listeners + function done2 (err, val) { + node.subprocess.removeListener('data', onData) + node.subprocess.removeListener('error', onErr) + if (err) { + node.killProcess(() => {}) // we failed. kill, just to be sure... + } + done(err, val) + done = () => {} // in case it gets called twice + } + + function onErr (err) { + if (String(err).match('daemon is running')) { + // we're good + done2(null, ipfs(conf.Addresses.API)) + + // TODO: I don't think this case is OK at all... + // When does the daemon outout "daemon is running" ?? seems old. + // Someone should check on this... - @jbenet + } else if (String(err).match('non-zero exit code')) { + // exited with an error on startup, before we removed listeners + done2(err) + } else { + done2(err) + } + } + + function onData (data) { + data = String(data) + stdout += data + + if (!data.trim().match(/Daemon is ready/)) { + return // not ready yet, keep waiting. + } + + const apiM = stdout.match(/API server listening on (.*)\n/) + if (apiM) { + // found the API server listening. extract the addr. + node.apiAddr = apiM[1] + } else { + // daemon ready but no API server? seems wrong... + done2(new Error("daemon ready without api")) + } + + const gatewayM = stdout.match(/Gateway \((readonly|writable)\) server listening on (.*)\n/) + if (gatewayM) { + // found the Gateway server listening. extract the addr. + node.gatewayAddr = gatewayM[1] + } + + const addr = multiaddr(node.apiAddr).nodeAddress() + const api = ipfs(node.apiAddr) + api.apiHost = addr.address + api.apiPort = addr.port + done2(null, api) + } }) } stopDaemon (done) { if (!done) done = () => {} if (!this.subprocess) return done(null) + this.killProcess(done) + } + killProcess (done) { // need a local var for the closure, as we clear the var. const subprocess = this.subprocess const timeout = setTimeout(() => { From ef3998876db2db822595694008a1f6cee281ffcb Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 00:16:00 -0400 Subject: [PATCH 07/23] feat(startDeamon): allow passing flags to ipfs daemon --- src/node.js | 10 ++++++++-- test/index.spec.js | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/node.js b/src/node.js index 5374f841..816f52b6 100644 --- a/src/node.js +++ b/src/node.js @@ -117,18 +117,24 @@ module.exports = class Node { } } - startDaemon (done) { + startDaemon (flags, done) { + if (typeof(flags) === 'function' && typeof(done) === 'undefined') { + done = flags + flags = [] + } + const node = this parseConfig(node.path, (err, conf) => { if (err) return done(err) let stdout = "" + let args = ['daemon'].concat(flags || []) // strategy: // - run subprocess // - listen for API addr on stdout (success) // - or an early exit or error (failure) - node.subprocess = run(node.exec, ['daemon'], {env: node.env}) + node.subprocess = run(node.exec, args, {env: node.env}) node.subprocess.on('error', onErr) .on('data', onData) diff --git a/test/index.spec.js b/test/index.spec.js index fa71f1f3..91b883d8 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -369,3 +369,25 @@ describe('ipfs-api version', function () { }) }) }) + +describe('node startDaemon', () => { + it('allows passing flags', (done) => { + ipfsd.disposable((err, node) => { + if (err) throw err + node.startDaemon(["--should-not-exist"], (err, ignore) => { + if (!err) { + throw new Error("should have errored") + } + + let errStr = "Unrecognized option 'should-not-exist'" + + err = ""+ err + if (err.indexOf(errStr) >= 0) { + done() // correct error + } + + throw err + }) + }) + }) +}) From 99f6778cd438d90750e42aff6174789daeb5534d Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 00:52:57 -0400 Subject: [PATCH 08/23] fix: make the linter happy for D# --- src/node.js | 6 +++--- test/index.spec.js | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/node.js b/src/node.js index 816f52b6..8097cea1 100644 --- a/src/node.js +++ b/src/node.js @@ -118,7 +118,7 @@ module.exports = class Node { } startDaemon (flags, done) { - if (typeof(flags) === 'function' && typeof(done) === 'undefined') { + if (typeof flags === 'function' && typeof done === 'undefined') { done = flags flags = [] } @@ -127,7 +127,7 @@ module.exports = class Node { parseConfig(node.path, (err, conf) => { if (err) return done(err) - let stdout = "" + let stdout = '' let args = ['daemon'].concat(flags || []) // strategy: @@ -179,7 +179,7 @@ module.exports = class Node { node.apiAddr = apiM[1] } else { // daemon ready but no API server? seems wrong... - done2(new Error("daemon ready without api")) + done2(new Error('daemon ready without api')) } const gatewayM = stdout.match(/Gateway \((readonly|writable)\) server listening on (.*)\n/) diff --git a/test/index.spec.js b/test/index.spec.js index 91b883d8..7bce398b 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,4 +1,5 @@ /* eslint-env mocha */ +/* eslint max-nested-callbacks: ["error", 8] */ 'use strict' const ipfsd = require('../src') @@ -374,15 +375,14 @@ describe('node startDaemon', () => { it('allows passing flags', (done) => { ipfsd.disposable((err, node) => { if (err) throw err - node.startDaemon(["--should-not-exist"], (err, ignore) => { + node.startDaemon(['--should-not-exist'], (err, ignore) => { if (!err) { - throw new Error("should have errored") + throw new Error('should have errored') } - let errStr = "Unrecognized option 'should-not-exist'" + let errStr = 'Unrecognized option \'should-not-exist\'' - err = ""+ err - if (err.indexOf(errStr) >= 0) { + if (String(err).indexOf(errStr) >= 0) { done() // correct error } From b618b7176dfb7b8bfb179db4bf5b50c46f697a32 Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 01:13:35 -0400 Subject: [PATCH 09/23] updates ipfs-api@9.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index deecaf7f..8d3c088e 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "license": "MIT", "dependencies": { "go-ipfs-dep": "0.4.1", - "ipfs-api": "^4.1.0", + "ipfs-api": "^9.0.0", "multiaddr": "^2.0.0", "rimraf": "^2.4.5", "run-series": "^1.1.4", From 9c7b060ef40f7e02877dadfedcc602178fa817ad Mon Sep 17 00:00:00 2001 From: jbenet Date: Fri, 16 Sep 2016 01:49:51 -0400 Subject: [PATCH 10/23] fix(tests): guarded func to avoid it being called twice --- src/node.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/node.js b/src/node.js index 8097cea1..31b15630 100644 --- a/src/node.js +++ b/src/node.js @@ -139,14 +139,14 @@ module.exports = class Node { .on('data', onData) // done2 is called to call done after removing the event listeners - function done2 (err, val) { + let done2 = (err, val) => { node.subprocess.removeListener('data', onData) node.subprocess.removeListener('error', onErr) if (err) { node.killProcess(() => {}) // we failed. kill, just to be sure... } done(err, val) - done = () => {} // in case it gets called twice + done2 = () => {} // in case it gets called twice } function onErr (err) { From 3ae9063a0e15af0ba166212d63369fdc2bbc686e Mon Sep 17 00:00:00 2001 From: David Dias Date: Fri, 16 Sep 2016 02:02:09 -0400 Subject: [PATCH 11/23] chore: update scripts --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 8d3c088e..93d42440 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "test": "aegir-test --env node", "build": "aegir-build --env node", "release": "aegir-release --env node", - "release:minor": "aegir-release --type minor --env node", - "release:major": "aegir-release --type major --env node", + "release-minor": "aegir-release --type minor --env node", + "release-major": "aegir-release --type major --env node", "coverage-publish": "aegir-coverage publish" }, "engines": { @@ -68,4 +68,4 @@ "example": "examples", "test": "test" } -} \ No newline at end of file +} From d65571dd043f2c4c13310bea594060bbcd583eb7 Mon Sep 17 00:00:00 2001 From: David Dias Date: Fri, 16 Sep 2016 02:02:32 -0400 Subject: [PATCH 12/23] chore: update contributors --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 93d42440..fb8c8d8a 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,15 @@ "David Dias ", "FrauBienenstich ", "Harlan T Wood ", - "Juan Benet ", "Kristoffer Ström ", "Lars-Magnus Skog ", + "Richard Littauer ", "Stephen Whitmore ", "dignifiedquire ", "greenkeeperio-bot ", "haad ", - "haadcode " + "haadcode ", + "jbenet " ], "license": "MIT", "dependencies": { @@ -68,4 +69,4 @@ "example": "examples", "test": "test" } -} +} \ No newline at end of file From aad1d0b4c46cab07ea57ec8af47968cdd6074497 Mon Sep 17 00:00:00 2001 From: David Dias Date: Fri, 16 Sep 2016 02:02:33 -0400 Subject: [PATCH 13/23] chore: release version v0.15.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fb8c8d8a..23da73cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfsd-ctl", - "version": "0.14.0", + "version": "0.15.0", "description": "simple controls for an ipfs node", "main": "lib/index.js", "jsxnext:main": "src/index.js", From 0e9cb9859658d60a31e6c63fb7d62f2cf03e630f Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 2 Jun 2016 21:46:46 +0200 Subject: [PATCH 14/23] feat: upgrade to go-ipfs 0.4.3 This also stops the crash when stopping a daemon. --- package.json | 13 +++++----- src/node.js | 59 ++++++++++++++++++++++++++++-------------- test/fixtures/test.txt | 1 + 3 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 test/fixtures/test.txt diff --git a/package.json b/package.json index 23da73cd..2bacb084 100644 --- a/package.json +++ b/package.json @@ -44,18 +44,19 @@ ], "license": "MIT", "dependencies": { - "go-ipfs-dep": "0.4.1", + "bl": "^1.1.2", + "go-ipfs-dep": "0.4.3", "ipfs-api": "^9.0.0", - "multiaddr": "^2.0.0", - "rimraf": "^2.4.5", + "multiaddr": "^2.0.3", + "rimraf": "^2.5.4", "run-series": "^1.1.4", "shutdown": "^0.2.4", "subcomandante": "^1.0.5" }, "devDependencies": { - "aegir": "^8.0.1", + "aegir": "^8.1.2", "mkdirp": "^0.5.1", - "pre-commit": "^1.1.2" + "pre-commit": "^1.1.3" }, "repository": { "type": "git", @@ -69,4 +70,4 @@ "example": "examples", "test": "test" } -} \ No newline at end of file +} diff --git a/src/node.js b/src/node.js index 31b15630..565faa89 100644 --- a/src/node.js +++ b/src/node.js @@ -9,17 +9,19 @@ const rimraf = require('rimraf') const shutdown = require('shutdown') const path = require('path') const join = path.join - -const rootPath = process.env.testpath ? process.env.testpath : __dirname +const bl = require('bl') const ipfsDefaultPath = findIpfsExecutable() const GRACE_PERIOD = 7500 // amount of ms to wait before sigkill function findIpfsExecutable () { - let npm3Path = path.join(rootPath, '../../', '/go-ipfs-dep/go-ipfs/ipfs') + const rootPath = process.env.testpath ? process.env.testpath : __dirname - let npm2Path = path.join(rootPath, '../', 'node_modules/go-ipfs-dep/go-ipfs/ipfs') + const appRoot = path.join(rootPath, '..') + const depPath = path.join('go-ipfs-dep', 'go-ipfs', 'ipfs') + const npm3Path = path.join(appRoot, '../', depPath) + const npm2Path = path.join(appRoot, 'node_modules', depPath) try { fs.statSync(npm3Path) @@ -43,8 +45,9 @@ function configureNode (node, conf, done) { // Consistent error handling function parseConfig (path, done) { + const file = fs.readFileSync(join(path, 'config')) + try { - const file = fs.readFileSync(join(path, 'config')) const parsed = JSON.parse(file) done(null, parsed) } catch (err) { @@ -66,13 +69,15 @@ module.exports = class Node { } _run (args, envArg, done) { - let result = '' run(this.exec, args, envArg) .on('error', done) - .on('data', (data) => { - result += data - }) - .on('end', () => done(null, result.trim())) + .pipe(bl((err, result) => { + if (err) { + return done(err) + } + + done(null, result.toString().trim()) + })) } init (initOpts, done) { @@ -90,15 +95,20 @@ module.exports = class Node { run(this.exec, ['init', '-b', keySize], {env: this.env}) .on('error', done) - .on('data', () => {}) // let it flow - .on('end', () => { + .pipe(bl((err, buf) => { + if (err) return done(err) + configureNode(this, this.opts, (err) => { - if (err) return done(err) + if (err) { + return done(err) + } + this.clean = false this.initialized = true + done(null, this) }) - }) + })) if (this.disposable) { shutdown.addHandler('disposable', 1, this.shutdown.bind(this)) @@ -192,14 +202,24 @@ module.exports = class Node { const api = ipfs(node.apiAddr) api.apiHost = addr.address api.apiPort = addr.port + + // We are happyly listening, so let's not hide other errors + node.subprocess.removeListener('error', onErr) + done2(null, api) } }) } stopDaemon (done) { - if (!done) done = () => {} - if (!this.subprocess) return done(null) + if (!done) { + done = () => {} + } + + if (!this.subprocess) { + return done() + } + this.killProcess(done) } @@ -208,12 +228,13 @@ module.exports = class Node { const subprocess = this.subprocess const timeout = setTimeout(() => { subprocess.kill('SIGKILL') - done(null) + done() }, GRACE_PERIOD) subprocess.on('close', () => { clearTimeout(timeout) - done(null) + this.subprocess = null + done() }) subprocess.kill('SIGTERM') @@ -236,7 +257,7 @@ module.exports = class Node { setConfig (key, value, done) { run(this.exec, ['config', key, value, '--json'], {env: this.env}) .on('error', done) - .on('data', (data) => {}) + .on('data', () => {}) .on('end', () => done()) } diff --git a/test/fixtures/test.txt b/test/fixtures/test.txt new file mode 100644 index 00000000..95d09f2b --- /dev/null +++ b/test/fixtures/test.txt @@ -0,0 +1 @@ +hello world \ No newline at end of file From a66d5f5613a9fda911f6e61c3e272e4961bf941d Mon Sep 17 00:00:00 2001 From: Friedel Ziegelmayer Date: Thu, 29 Sep 2016 16:48:59 +0200 Subject: [PATCH 15/23] fix: ensure setting the config cbs only once --- package.json | 1 + src/node.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/package.json b/package.json index 2bacb084..e44bc671 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "go-ipfs-dep": "0.4.3", "ipfs-api": "^9.0.0", "multiaddr": "^2.0.3", + "once": "^1.4.0", "rimraf": "^2.5.4", "run-series": "^1.1.4", "shutdown": "^0.2.4", diff --git a/src/node.js b/src/node.js index 565faa89..71c804e7 100644 --- a/src/node.js +++ b/src/node.js @@ -10,6 +10,7 @@ const shutdown = require('shutdown') const path = require('path') const join = path.join const bl = require('bl') +const once = require('once') const ipfsDefaultPath = findIpfsExecutable() @@ -255,6 +256,7 @@ module.exports = class Node { } setConfig (key, value, done) { + done = once(done) run(this.exec, ['config', key, value, '--json'], {env: this.env}) .on('error', done) .on('data', () => {}) From a71bbb488165cf2ef82c150d4e939de775946c9c Mon Sep 17 00:00:00 2001 From: Friedel Ziegelmayer Date: Thu, 29 Sep 2016 17:20:50 +0200 Subject: [PATCH 16/23] chore: use latest go-ipfs dep --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e44bc671..c0c6e343 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "license": "MIT", "dependencies": { "bl": "^1.1.2", - "go-ipfs-dep": "0.4.3", + "go-ipfs-dep": "0.4.3-1", "ipfs-api": "^9.0.0", "multiaddr": "^2.0.3", "once": "^1.4.0", From de1ec6c71a7031ef0383de4bc0702523652cb0bb Mon Sep 17 00:00:00 2001 From: David Dias Date: Thu, 29 Sep 2016 17:30:50 +0100 Subject: [PATCH 17/23] chore: update contributors --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c0c6e343..5b9ce55d 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,12 @@ "Bret Comnes ", "David Dias ", "FrauBienenstich ", + "Friedel Ziegelmayer ", "Harlan T Wood ", "Kristoffer Ström ", "Lars-Magnus Skog ", "Richard Littauer ", "Stephen Whitmore ", - "dignifiedquire ", "greenkeeperio-bot ", "haad ", "haadcode ", @@ -71,4 +71,4 @@ "example": "examples", "test": "test" } -} +} \ No newline at end of file From a537fd5a1c10f63999ded4f535b5b0ad04113509 Mon Sep 17 00:00:00 2001 From: edsilv Date: Sun, 23 Oct 2016 22:20:26 +0100 Subject: [PATCH 18/23] update go-ipfs-dep to v0.4.3-2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a86d7db0..79496669 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "license": "MIT", "dependencies": { "bl": "^1.1.2", - "go-ipfs-dep": "0.4.3-1", + "go-ipfs-dep": "0.4.3-2", "ipfs-api": "^9.0.0", "multiaddr": "^2.0.3", "once": "^1.4.0", From ace94f5f20e6f3ed9e6f91352cd127ba9c4f165d Mon Sep 17 00:00:00 2001 From: edsilv Date: Mon, 24 Oct 2016 07:45:34 +0100 Subject: [PATCH 19/23] update to v0.4.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 79496669..0a1e789f 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "license": "MIT", "dependencies": { "bl": "^1.1.2", - "go-ipfs-dep": "0.4.3-2", + "go-ipfs-dep": "0.4.4", "ipfs-api": "^9.0.0", "multiaddr": "^2.0.3", "once": "^1.4.0", From 8996ef9e4ab809513e0f5ecde4eece76cdd10e04 Mon Sep 17 00:00:00 2001 From: David Dias Date: Thu, 29 Sep 2016 17:30:50 +0100 Subject: [PATCH 20/23] chore: release version v0.16.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5b9ce55d..a86d7db0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfsd-ctl", - "version": "0.15.0", + "version": "0.16.0", "description": "simple controls for an ipfs node", "main": "lib/index.js", "jsxnext:main": "src/index.js", From bf7620abdba5bc806de856182bab1f1b56eabaa6 Mon Sep 17 00:00:00 2001 From: David Dias Date: Sat, 29 Oct 2016 06:25:16 +0100 Subject: [PATCH 21/23] chore: update contributors --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 0a1e789f..61f791a0 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "Lars-Magnus Skog ", "Richard Littauer ", "Stephen Whitmore ", + "edsilv ", "greenkeeperio-bot ", "haad ", "haadcode ", From f97df5c367c4b017441700d319ec1acf263a60e5 Mon Sep 17 00:00:00 2001 From: David Dias Date: Sat, 29 Oct 2016 06:25:17 +0100 Subject: [PATCH 22/23] chore: release version v0.17.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 61f791a0..b1d878ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfsd-ctl", - "version": "0.16.0", + "version": "0.17.0", "description": "simple controls for an ipfs node", "main": "lib/index.js", "jsxnext:main": "src/index.js", From 1b36b092bc09eb9905af99d80df448744bc67cc7 Mon Sep 17 00:00:00 2001 From: greenkeeperio-bot Date: Fri, 4 Nov 2016 16:07:19 +0100 Subject: [PATCH 23/23] chore(package): update aegir to version 9.1.1 https://greenkeeper.io/ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b1d878ee..6a728949 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "subcomandante": "^1.0.5" }, "devDependencies": { - "aegir": "^8.1.2", + "aegir": "^9.1.1", "mkdirp": "^0.5.1", "pre-commit": "^1.1.3" },