-
Notifications
You must be signed in to change notification settings - Fork 14
/
ls-types.js
executable file
·60 lines (49 loc) · 1.1 KB
/
ls-types.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env node
const fs = require('fs')
const transformFilename = require('./transform-filename')
function lsTypes (dir, dones, callback) {
if (typeof dones === 'function') {
callback = dones
dones = false
}
fs.readdir(dir, (err, files) => {
if (err) {
return callback(err)
}
if (dones) {
files = files.map((f) => {
if (/\.done$/.test(f)) {
return f.replace(/\.done$/, '')
}
return false
}).filter(Boolean)
}
files = files.map(transformFilename)
.filter(Boolean)
.sort()
callback(null, files)
})
}
if (require.main === module) {
const dones = process.argv[2] === '-d'
const dirs = process.argv.slice(dones ? 3 : 2)
const ls = () => {
const dir = dirs.shift()
if (!dir) {
return
}
fs.stat(dir, (err, stat) => {
if (err || !stat.isDirectory()) {
return ls()
}
lsTypes(dir, dones, (err, files) => {
if (err) {
throw err
}
files.length && console.log('%s: %s', dir, files.join(' '))
ls()
})
})
}
ls()
}