From 36587b7034e385f10fe75c8a0b948fd5fe61eaae Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 18 May 2016 16:28:26 +0200 Subject: [PATCH 1/3] refactor: use aegir --- .gitignore | 35 ++++++++++++++++++++++++++++++++- .npmignore | 32 ++++++++++++++++++++++++++++++ .travis.yml | 25 +++++++++++++++++++++-- README.md | 8 +++++--- examples/id.js | 2 ++ examples/local.js | 2 ++ package.json | 19 +++++++++++------- index.js => src/index.js | 4 ++-- {lib => src}/node.js | 6 +++--- test/.eslintrc | 7 ------- test/{test.js => index.spec.js} | 24 +++++++++++----------- 11 files changed, 126 insertions(+), 38 deletions(-) create mode 100644 .npmignore rename index.js => src/index.js (92%) rename {lib => src}/node.js (95%) delete mode 100644 test/.eslintrc rename test/{test.js => index.spec.js} (93%) diff --git a/.gitignore b/.gitignore index eb03e3e1..254988dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,35 @@ -node_modules +**/node_modules/ +**/*.log +test/repo-tests* + +# Logs +logs *.log + +coverage + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +build + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +lib +dist diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..ea440ea6 --- /dev/null +++ b/.npmignore @@ -0,0 +1,32 @@ +**/node_modules/ +**/*.log +test/repo-tests* + +# Logs +logs +*.log + +coverage + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +build + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules diff --git a/.travis.yml b/.travis.yml index cb0b166d..5c9015c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,25 @@ +sudo: false language: node_js node_js: - - "4" - - "5" + - 4 + - 5 + - stable + +# Make sure we have new NPM. +before_install: + - npm install -g npm + +script: + - npm run lint + - npm test + - npm run coverage + +before_script: + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start + +after_success: + - npm run coverage-publish + +addons: + firefox: 'latest' diff --git a/README.md b/README.md index ba4dca1a..b92022fd 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ ipfsd-ctl ========= -[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io) [![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/) [![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs) -[![Dependency Status](https://david-dm.org/ipfs/js-ipfsd-ctl.svg?style=flat-square)](https://david-dm.org/ipfs/js-ipfsd-ctl) +[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io) +[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/) +[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs) +[![Coverage Status](https://coveralls.io/repos/github/ipfs/js-ipfsd-ctl/badge.svg?branch=master)](https://coveralls.io/github/ipfs/js-ipfsd-ctl?branch=master) [![Travis CI](https://travis-ci.org/ipfs/js-ipfsd-ctl.svg?branch=master)](https://travis-ci.org/ipfs/js-ipfsd-ctl) [![Circle CI](https://circleci.com/gh/ipfs/js-ipfsd-ctl.svg?style=svg)](https://circleci.com/gh/ipfs/js-ipfsd-ctl) - +[![Dependency Status](https://david-dm.org/ipfs/js-ipfsd-ctl.svg?style=flat-square)](https://david-dm.org/ipfs/js-ipfsd-ctl) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard) > Control an ipfs node daemon using Node.js diff --git a/examples/id.js b/examples/id.js index ce4af895..aab3d5b4 100644 --- a/examples/id.js +++ b/examples/id.js @@ -1,3 +1,5 @@ +'use strict' + var ipfsd = require('../index.js') ipfsd.disposableApi(function (err, ipfs) { diff --git a/examples/local.js b/examples/local.js index 20144efc..9386a484 100644 --- a/examples/local.js +++ b/examples/local.js @@ -1,3 +1,5 @@ +'use strict' + var ipfsd = require('../index.js') // opens an api connection to local running ipfs node diff --git a/package.json b/package.json index 351d0b76..b512d165 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,17 @@ "name": "ipfsd-ctl", "version": "0.13.0", "description": "simple controls for an ipfs node", - "main": "index.js", + "main": "lib/index.js", + "jsxnext:main": "src/index.js", "scripts": { - "test": "node_modules/.bin/mocha test", - "lint": "standard" + "lint": "aegir-lint", + "coverage": "aegir-coverage", + "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", + "coverage-publish": "aegir-coverage publish" }, "engines": { "node": ">=4.2.2" @@ -35,11 +42,9 @@ "async": "^1.5.0" }, "devDependencies": { - "estraverse": "^4.1.1", + "aegir": "^3.0.4", "mkdirp": "^0.5.1", - "mocha": "^2.3.4", - "pre-commit": "^1.1.2", - "standard": "^6.0.8" + "pre-commit": "^1.1.2" }, "repository": { "type": "git", diff --git a/index.js b/src/index.js similarity index 92% rename from index.js rename to src/index.js index 8724b25c..7e1b93c7 100644 --- a/index.js +++ b/src/index.js @@ -3,10 +3,10 @@ const os = require('os') const join = require('path').join -const Node = require('./lib/node') +const Node = require('./node') function tempDir () { - return join(os.tmpdir(), `ipfs_${(Math.random() + '').substr(2)}`) + return join(os.tmpdir(), `ipfs_${String(Math.random()).substr(2)}`) } module.exports = { diff --git a/lib/node.js b/src/node.js similarity index 95% rename from lib/node.js rename to src/node.js index 08b4c4ab..a822618e 100644 --- a/lib/node.js +++ b/src/node.js @@ -126,17 +126,17 @@ module.exports = class Node { this.subprocess = run(this.exec, ['daemon'], {env: this.env}) .on('error', (err) => { - if ((err + '').match('daemon is running')) { + if (String(err).match('daemon is running')) { // we're good done(null, ipfs(conf.Addresses.API)) - } else if ((err + '').match('non-zero exit code')) { + } else if (String(err).match('non-zero exit code')) { // ignore when kill -9'd } else { done(err) } }) .on('data', (data) => { - const match = (data + '').trim().match(/API server listening on (.*)/) + const match = String(data).trim().match(/API server listening on (.*)/) if (match) { this.apiAddr = match[1] const addr = multiaddr(this.apiAddr).nodeAddress() diff --git a/test/.eslintrc b/test/.eslintrc deleted file mode 100644 index a577026f..00000000 --- a/test/.eslintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "globals": { - "describe": true, - "it": true, - "before": true - } -} diff --git a/test/test.js b/test/index.spec.js similarity index 93% rename from test/test.js rename to test/index.spec.js index 08e80927..004473e8 100644 --- a/test/test.js +++ b/test/index.spec.js @@ -1,6 +1,7 @@ +/* eslint-env mocha */ 'use strict' -const ipfsd = require('../index.js') +const ipfsd = require('../src') const assert = require('assert') const ipfsApi = require('ipfs-api') const run = require('subcomandante') @@ -9,9 +10,6 @@ const rimraf = require('rimraf') const mkdirp = require('mkdirp') const path = require('path') -// this comment is used by mocha, do not delete -/*global describe, before, it*/ - describe('ipfs executable path', function () { this.timeout(2000) let Node @@ -22,12 +20,12 @@ describe('ipfs executable path', function () { mkdirp(npm3Path, (err) => { if (err) { - console.log(err) + throw err } fs.writeFileSync(path.join(npm3Path, 'ipfs')) - delete require.cache[require.resolve('../lib/node.js')] - Node = require('../lib/node.js') + delete require.cache[require.resolve('../src/node.js')] + Node = require('../src/node.js') var node = new Node() assert.equal(node.exec, '/tmp/ipfsd-ctl-test/node_modules/go-ipfs-dep/go-ipfs/ipfs') rimraf('/tmp/ipfsd-ctl-test', done) @@ -40,12 +38,12 @@ describe('ipfs executable path', function () { mkdirp(npm2Path, (err) => { if (err) { - console.log(err) + throw err } fs.writeFileSync(path.join(npm2Path, 'ipfs')) - delete require.cache[require.resolve('../lib/node.js')] - Node = require('../lib/node.js') + delete require.cache[require.resolve('../src/node.js')] + Node = require('../src/node.js') var node = new Node() assert.equal(node.exec, '/tmp/ipfsd-ctl-test/node_modules/ipfsd-ctl/node_modules/go-ipfs-dep/go-ipfs/ipfs') rimraf('/tmp/ipfsd-ctl-test', done) @@ -359,14 +357,14 @@ describe('ipfs-api version', function () { }) }) - // NOTE: if you change ../lib/node.js, the hash will need to be changed + // NOTE: if you change ../src/, the hash will need to be changed it('uses the correct ipfs-api', (done) => { - ipfs.add(path.join(__dirname, '../lib'), { recursive: true }, (err, res) => { + ipfs.add(path.join(__dirname, '../src'), { recursive: true }, (err, res) => { if (err) throw err const added = res[res.length - 1] assert(added) - assert.equal(added.Hash, 'QmdZt3Uiv3HZkHPsjGyWbrX1kMiRjst8cxQYsUjMqbXc7G') + assert.equal(added.Hash, 'QmcRD9UEqhJkKJ5SR4seitc28je2y5FXpvjwL6XFDXs7PL') done() }) }) From 712b76048d51351dc1f8dd46f78216f5c68fa9cd Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 18 May 2016 16:35:32 +0200 Subject: [PATCH 2/3] refactor: replace async --- package.json | 6 +++--- src/node.js | 22 ++++++++++------------ test/index.spec.js | 2 +- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index b512d165..44334722 100644 --- a/package.json +++ b/package.json @@ -33,13 +33,13 @@ ], "license": "MIT", "dependencies": { - "ipfs-api": "^3.0.0", "go-ipfs-dep": "0.4.1", + "ipfs-api": "^3.0.0", "multiaddr": "^1.1.1", "rimraf": "^2.4.5", + "run-series": "^1.1.4", "shutdown": "^0.2.4", - "subcomandante": "^1.0.5", - "async": "^1.5.0" + "subcomandante": "^1.0.5" }, "devDependencies": { "aegir": "^3.0.4", diff --git a/src/node.js b/src/node.js index a822618e..499acb7d 100644 --- a/src/node.js +++ b/src/node.js @@ -2,7 +2,7 @@ const fs = require('fs') const run = require('subcomandante') -const async = require('async') +const series = require('run-series') const ipfs = require('ipfs-api') const multiaddr = require('multiaddr') const rimraf = require('rimraf') @@ -30,17 +30,15 @@ function findIpfsExecutable () { } function configureNode (node, conf, done) { - if (Object.keys(conf).length > 0) { - async.forEachOfSeries(conf, (value, key, cb) => { - const env = {env: node.env} - - run(node.exec, ['config', key, '--json', JSON.stringify(value)], env) - .on('error', cb) - .on('end', cb) - }, done) - } else { - done() - } + const keys = Object.keys(conf) + series(keys.map((key) => (cb) => { + const value = conf[key] + const env = {env: node.env} + + run(node.exec, ['config', key, '--json', JSON.stringify(value)], env) + .on('error', cb) + .on('end', cb) + }), done) } // Consistent error handling diff --git a/test/index.spec.js b/test/index.spec.js index 004473e8..00926db5 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, 'QmcRD9UEqhJkKJ5SR4seitc28je2y5FXpvjwL6XFDXs7PL') + assert.equal(added.Hash, 'Qmafmh1Cw3H1bwdYpaaj5AbCW4LkYyUWaM7Nykpn5NZoYL') done() }) }) From 0231951d52c7365e6de6c9c50521f508a572a711 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 18 May 2016 16:36:57 +0200 Subject: [PATCH 3/3] feat: upgrade dependencies to latest --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 44334722..f69918d1 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ "license": "MIT", "dependencies": { "go-ipfs-dep": "0.4.1", - "ipfs-api": "^3.0.0", - "multiaddr": "^1.1.1", + "ipfs-api": "^4.1.0", + "multiaddr": "^2.0.0", "rimraf": "^2.4.5", "run-series": "^1.1.4", "shutdown": "^0.2.4",