Skip to content

Commit e8c2799

Browse files
committed
Support for nested folders
1 parent e4ecda2 commit e8c2799

File tree

4 files changed

+32
-3
lines changed

4 files changed

+32
-3
lines changed

lib/build-bundler.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ let { createFile, generateFingerprint } = require("faucet-pipeline-util");
44
// TODO: Not available on all supported Node versions
55
let { promisify } = require("util");
66
let readFile = promisify(fs.readFile);
7-
let readdir = promisify(fs.readdir);
7+
let tree = require("./tree");
88

99
module.exports = ({ source, target, fingerprint, configDir }) => {
1010
return files => {
@@ -13,8 +13,7 @@ module.exports = ({ source, target, fingerprint, configDir }) => {
1313
if(files) {
1414
filesToCopy = filesWithinDirectory(source, files);
1515
} else {
16-
// TODO: Get that entire tree
17-
filesToCopy = readdir(source);
16+
filesToCopy = tree(source);
1817
}
1918

2019
return filesToCopy.then(sources => {

lib/tree.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
let fs = require("fs");
2+
let path = require("path");
3+
// TODO: Not available on all supported Node versions
4+
let { promisify } = require("util");
5+
let stat = promisify(fs.stat);
6+
let readdir = promisify(fs.readdir);
7+
8+
function tree(directory, relativeTo = directory) {
9+
return readdir(directory).then(entries => {
10+
return Promise.all(entries.map(entry => {
11+
let fullEntry = path.join(directory, entry);
12+
13+
return stat(fullEntry).then(results => {
14+
if(results.isDirectory()) {
15+
return tree(fullEntry, relativeTo);
16+
} else {
17+
return path.relative(relativeTo, fullEntry);
18+
}
19+
});
20+
})).then(flatten);
21+
});
22+
}
23+
24+
function flatten(arr) {
25+
return [].concat.apply([], arr);
26+
}
27+
28+
module.exports = tree;

test/run

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ cd "$root/test"
5656
begin "./test_basic"
5757
faucet --no-fingerprint
5858
assert_identical "./dist/test.txt" "./src/test.txt"
59+
assert_identical "./dist/inner/test2.txt" "./src/inner/test2.txt"
5960
end
6061

6162
begin "./test_fingerprint"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello World

0 commit comments

Comments
 (0)