Skip to content
This repository was archived by the owner on Mar 10, 2020. It is now read-only.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1587b32

Browse files
committedNov 14, 2017
.ls, .lsReadableStream and .lsPullStream
1 parent 9141594 commit 1587b32

File tree

5 files changed

+141
-10
lines changed

5 files changed

+141
-10
lines changed
 

‎package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@
1010
"http": "stream-http"
1111
},
1212
"scripts": {
13-
"test": "aegir test --no-parallel",
14-
"test:node": "aegir test --target node --no-parallel",
13+
"test": "aegir test ",
14+
"test:node": "aegir test --target node ",
1515
"test:browser": "aegir test --target browser",
1616
"lint": "aegir lint",
1717
"build": "aegir build",
18-
"release": "aegir release --no-parallel",
19-
"release-minor": "aegir release --type minor --no-parallel",
20-
"release-major": "aegir release --type major --no-parallel",
21-
"coverage": "aegir coverage --no-parallel --timeout 100000",
22-
"coverage-publish": "aegir coverage --provider coveralls --no-parallel --timeout 100000"
18+
"release": "aegir release ",
19+
"release-minor": "aegir release --type minor ",
20+
"release-major": "aegir release --type major ",
21+
"coverage": "aegir coverage --timeout 100000",
22+
"coverage-publish": "aegir coverage --provider coveralls --timeout 100000"
2323
},
2424
"dependencies": {
2525
"async": "^2.6.0",

‎src/files/index.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ module.exports = (arg) => {
1515
get: require('./get')(send),
1616
getReadableStream: require('./get-readable-stream')(send),
1717
getPullStream: require('./get-pull-stream')(send),
18+
19+
// Specific to MFS (for now)
1820
cp: require('./cp')(send),
19-
ls: require('./ls')(send),
2021
mkdir: require('./mkdir')(send),
2122
stat: require('./stat')(send),
2223
rm: require('./rm')(send),
24+
ls: require('./ls')(send),
2325
read: require('./read')(send),
2426
write: require('./write')(send),
2527
mv: require('./mv')(send)

‎src/ls-pull-stream.js

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
'use strict'
2+
3+
const moduleConfig = require('./utils/module-config')
4+
const pull = require('pull-stream')
5+
const deferred = require('pull-defer')
6+
7+
module.exports = (arg) => {
8+
const send = moduleConfig(arg)
9+
10+
return (args, opts, callback) => {
11+
if (typeof (opts) === 'function') {
12+
callback = opts
13+
opts = {}
14+
}
15+
16+
const p = deferred.source()
17+
18+
send({ path: 'ls', args: args, qs: opts }, (err, results) => {
19+
if (err) {
20+
return callback(err)
21+
}
22+
23+
let result = results.Objects
24+
if (!result) {
25+
return callback(new Error('expected .Objects in results'))
26+
}
27+
28+
result = result[0]
29+
if (!result) {
30+
return callback(new Error('expected one array in results.Objects'))
31+
}
32+
33+
result = result.Links
34+
if (!Array.isArray(result)) {
35+
return callback(new Error('expected one array in results.Objects[0].Links'))
36+
}
37+
38+
result = result.map((link) => ({
39+
depth: 1,
40+
name: link.Name,
41+
path: args + '/' + link.Name,
42+
size: link.Size,
43+
hash: link.Hash,
44+
type: typeOf(link)
45+
}))
46+
47+
p.resolve(pull.values(result))
48+
})
49+
50+
return p
51+
}
52+
}
53+
54+
function typeOf (link) {
55+
switch (link.Type) {
56+
case 1:
57+
case 5:
58+
return 'dir'
59+
case 2:
60+
return 'file'
61+
default:
62+
return 'unknown'
63+
}
64+
}

‎src/ls-readable-stream.js

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
'use strict'
2+
3+
const moduleConfig = require('./utils/module-config')
4+
const Stream = require('readable-stream')
5+
6+
module.exports = (arg) => {
7+
const send = moduleConfig(arg)
8+
9+
return (args, opts, callback) => {
10+
if (typeof (opts) === 'function') {
11+
callback = opts
12+
opts = {}
13+
}
14+
15+
const pt = new Stream.PassThrough({objectMode: true})
16+
17+
send({ path: 'ls', args: args, qs: opts }, (err, results) => {
18+
if (err) { return callback(err) }
19+
20+
let result = results.Objects
21+
if (!result) {
22+
return callback(new Error('expected .Objects in results'))
23+
}
24+
25+
result = result[0]
26+
if (!result) {
27+
return callback(new Error('expected one array in results.Objects'))
28+
}
29+
30+
result = result.Links
31+
if (!Array.isArray(result)) {
32+
return callback(new Error('expected one array in results.Objects[0].Links'))
33+
}
34+
35+
result = result.map((link) => ({
36+
depth: 1,
37+
name: link.Name,
38+
path: args + '/' + link.Name,
39+
size: link.Size,
40+
hash: link.Hash,
41+
type: typeOf(link)
42+
}))
43+
44+
result.forEach((item) => pt.write(item))
45+
pt.end()
46+
})
47+
48+
return pt
49+
}
50+
}
51+
52+
function typeOf (link) {
53+
switch (link.Type) {
54+
case 1:
55+
case 5:
56+
return 'dir'
57+
case 2:
58+
return 'file'
59+
default:
60+
return 'unknown'
61+
}
62+
}

‎src/utils/load-commands.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
function requireCommands () {
44
const cmds = {
5-
// add and createAddStream alias
5+
// Files (not MFS)
66
add: require('../files/add'),
77
addReadableStream: require('../files/add-readable-stream'),
88
addPullStream: require('../files/add-pull-stream'),
@@ -12,6 +12,10 @@ function requireCommands () {
1212
get: require('../files/get'),
1313
getReadableStream: require('../files/get-readable-stream'),
1414
getPullStream: require('../files/get-pull-stream'),
15+
ls: require('../ls'),
16+
lsReadableStream: require('../ls-readable-stream'),
17+
lsPullStream: require('../ls-pull-stream'),
18+
1519
bitswap: require('../bitswap'),
1620
block: require('../block'),
1721
bootstrap: require('../bootstrap'),
@@ -22,7 +26,6 @@ function requireCommands () {
2226
id: require('../id'),
2327
key: require('../key'),
2428
log: require('../log'),
25-
ls: require('../ls'),
2629
mount: require('../mount'),
2730
name: require('../name'),
2831
object: require('../object'),

0 commit comments

Comments
 (0)
This repository has been archived.