From d3ff1cb2f26b9b3e89017687c8aaedeecccb4efe Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Thu, 31 Jan 2019 16:18:52 +0000 Subject: [PATCH] refactor: use getIpfs not ipfs from argv Using getIpfs gives the handlers the power to create an IPFS when needed instead of having to create it upfront for all handlers even if they don't use it. It allows operations like `echo "hello" | jsipfs add -q | jsipfs cid base32` to work without `jsipfs cid base32` failing because it's trying to acquire a repo lock when it doesn't use IPFS at all. License: MIT Signed-off-by: Alan Shaw --- src/cli/cp.js | 9 +++++---- src/cli/flush.js | 9 +++++---- src/cli/ls.js | 9 +++++---- src/cli/mkdir.js | 10 ++++++---- src/cli/mv.js | 10 ++++++---- src/cli/read.js | 10 ++++++---- src/cli/rm.js | 10 ++++++---- src/cli/stat.js | 10 ++++++---- src/cli/write.js | 10 ++++++---- 9 files changed, 51 insertions(+), 36 deletions(-) diff --git a/src/cli/cp.js b/src/cli/cp.js index 5bb016f..277c46e 100644 --- a/src/cli/cp.js +++ b/src/cli/cp.js @@ -40,20 +40,21 @@ module.exports = { let { source, dest, - ipfs, + getIpfs, parents, format, hashAlg, shardSplitThreshold } = argv - argv.resolve( - ipfs.files.cp(source, dest, { + argv.resolve((async () => { + const ipfs = await getIpfs() + return ipfs.files.cp(source, dest, { parents, format, hashAlg, shardSplitThreshold }) - ) + })()) } } diff --git a/src/cli/flush.js b/src/cli/flush.js index 08db794..d58ac5d 100644 --- a/src/cli/flush.js +++ b/src/cli/flush.js @@ -14,11 +14,12 @@ module.exports = { handler (argv) { let { path, - ipfs + getIpfs } = argv - argv.resolve( - ipfs.files.flush(path || FILE_SEPARATOR, {}) - ) + argv.resolve((async () => { + const ipfs = await getIpfs() + return ipfs.files.flush(path || FILE_SEPARATOR, {}) + })()) } } diff --git a/src/cli/ls.js b/src/cli/ls.js index 5d002b0..a5c8b3c 100644 --- a/src/cli/ls.js +++ b/src/cli/ls.js @@ -40,14 +40,15 @@ module.exports = { handler (argv) { let { path, - ipfs, + getIpfs, long, sort, cidBase } = argv - argv.resolve( - new Promise((resolve, reject) => { + argv.resolve((async () => { + const ipfs = await getIpfs() + return new Promise((resolve, reject) => { if (sort) { ipfs.files.ls(path || FILE_SEPARATOR, { long, @@ -98,6 +99,6 @@ module.exports = { }) ) }) - ) + })()) } } diff --git a/src/cli/mkdir.js b/src/cli/mkdir.js index c85baed..060b2e9 100644 --- a/src/cli/mkdir.js +++ b/src/cli/mkdir.js @@ -44,7 +44,7 @@ module.exports = { handler (argv) { let { path, - ipfs, + getIpfs, parents, cidVersion, hashAlg, @@ -52,14 +52,16 @@ module.exports = { shardSplitThreshold } = argv - argv.resolve( - ipfs.files.mkdir(path, { + argv.resolve((async () => { + const ipfs = await getIpfs() + + return ipfs.files.mkdir(path, { parents, cidVersion, hashAlg, flush, shardSplitThreshold }) - ) + })()) } } diff --git a/src/cli/mv.js b/src/cli/mv.js index d815e9c..4134d39 100644 --- a/src/cli/mv.js +++ b/src/cli/mv.js @@ -35,18 +35,20 @@ module.exports = { let { source, dest, - ipfs, + getIpfs, parents, recursive, shardSplitThreshold } = argv - argv.resolve( - ipfs.files.mv(source, dest, { + argv.resolve((async () => { + const ipfs = await getIpfs() + + return ipfs.files.mv(source, dest, { parents, recursive, shardSplitThreshold }) - ) + })()) } } diff --git a/src/cli/read.js b/src/cli/read.js index d629aa5..f6e7c0d 100644 --- a/src/cli/read.js +++ b/src/cli/read.js @@ -28,13 +28,15 @@ module.exports = { handler (argv) { let { path, - ipfs, + getIpfs, offset, length } = argv - argv.resolve( - new Promise((resolve, reject) => { + argv.resolve((async () => { + const ipfs = await getIpfs() + + return new Promise((resolve, reject) => { pull( ipfs.files.readPullStream(path, { offset, @@ -52,6 +54,6 @@ module.exports = { }) ) }) - ) + })()) } } diff --git a/src/cli/rm.js b/src/cli/rm.js index fac187a..945680d 100644 --- a/src/cli/rm.js +++ b/src/cli/rm.js @@ -22,14 +22,16 @@ module.exports = { handler (argv) { let { path, - ipfs, + getIpfs, recursive } = argv - argv.resolve( - ipfs.files.rm(path, { + argv.resolve((async () => { + const ipfs = await getIpfs() + + return ipfs.files.rm(path, { recursive }) - ) + })()) } } diff --git a/src/cli/stat.js b/src/cli/stat.js index 1e2c8d2..8c461a6 100644 --- a/src/cli/stat.js +++ b/src/cli/stat.js @@ -51,15 +51,17 @@ Type: `, handler (argv) { let { path, - ipfs, + getIpfs, format, hash, size, withLocal } = argv - argv.resolve( - ipfs.files.stat(path, { + argv.resolve((async () => { + const ipfs = await getIpfs() + + return ipfs.files.stat(path, { withLocal }) .then((stats) => { @@ -79,6 +81,6 @@ Type: `, .replace('', stats.type) ) }) - ) + })()) } } diff --git a/src/cli/write.js b/src/cli/write.js index 5650359..3fc31de 100644 --- a/src/cli/write.js +++ b/src/cli/write.js @@ -89,7 +89,7 @@ module.exports = { handler (argv) { let { path, - ipfs, + getIpfs, offset, length, create, @@ -106,8 +106,10 @@ module.exports = { shardSplitThreshold } = argv - argv.resolve( - ipfs.files.write(path, process.stdin, { + argv.resolve((async () => { + const ipfs = await getIpfs() + + return ipfs.files.write(path, process.stdin, { offset, length, create, @@ -123,6 +125,6 @@ module.exports = { flush, shardSplitThreshold }) - ) + })()) } }