Skip to content

Commit b47f0c1

Browse files
committed
Update: Remove vinyl-prepare & embed logic once again
1 parent fbf4115 commit b47f0c1

File tree

7 files changed

+140
-7
lines changed

7 files changed

+140
-7
lines changed

lib/dest/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
var lead = require('lead');
44
var pumpify = require('pumpify');
5-
var prepare = require('vinyl-prepare');
65
var mkdirpStream = require('fs-mkdirp-stream');
76
var number = require('value-or-function').number;
87

8+
var prepare = require('./prepare');
99
var sourcemap = require('./sourcemap');
1010
var writeContents = require('./write-contents');
1111

@@ -21,7 +21,7 @@ function dest(outFolder, opt) {
2121
}
2222

2323
var saveStream = pumpify.obj(
24-
prepare.dest(outFolder, opt),
24+
prepare(outFolder, opt),
2525
sourcemap(opt),
2626
mkdirpStream.obj(dirpath),
2727
writeContents(opt)

lib/dest/prepare.js

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
'use strict';
2+
3+
var path = require('path');
4+
5+
var fs = require('graceful-fs');
6+
var koalas = require('koalas');
7+
var through = require('through2');
8+
var valueOrFunction = require('value-or-function');
9+
10+
var string = valueOrFunction.string;
11+
var number = valueOrFunction.number;
12+
var boolean = valueOrFunction.boolean;
13+
14+
function prepareWrite(outFolder, opt) {
15+
if (!opt) {
16+
opt = {};
17+
}
18+
19+
if (!outFolder) {
20+
throw new Error('Invalid output folder');
21+
}
22+
23+
function normalize(file, enc, cb) {
24+
var defaultMode = file.stat ? file.stat.mode : null;
25+
var mode = koalas(number(opt.mode, file), defaultMode);
26+
var flag = koalas(boolean(opt.overwrite, file), true) ? 'w' : 'wx';
27+
var cwd = path.resolve(koalas(string(opt.cwd, file), process.cwd()));
28+
29+
var outFolderPath = string(outFolder, file);
30+
if (!outFolderPath) {
31+
return cb(new Error('Invalid output folder'));
32+
}
33+
var basePath = path.resolve(cwd, outFolderPath);
34+
var writePath = path.resolve(basePath, file.relative);
35+
36+
// Wire up new properties
37+
file.stat = (file.stat || new fs.Stats());
38+
file.stat.mode = mode;
39+
file.flag = flag;
40+
file.cwd = cwd;
41+
file.base = basePath;
42+
file.path = writePath;
43+
44+
cb(null, file);
45+
}
46+
47+
return through.obj(normalize);
48+
}
49+
50+
module.exports = prepareWrite;

lib/src/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
var gs = require('glob-stream');
44
var pumpify = require('pumpify');
5-
var prepare = require('vinyl-prepare');
65
var toThrough = require('to-through');
76
var isValidGlob = require('is-valid-glob');
87

8+
var prepare = require('./prepare');
99
var wrapVinyl = require('./wrap-vinyl');
1010
var sourcemap = require('./sourcemap');
1111
var readContents = require('./read-contents');
@@ -24,7 +24,7 @@ function src(glob, opt) {
2424
gs(glob, opt),
2525
wrapVinyl(opt),
2626
resolveSymlinks(opt),
27-
prepare.src(opt),
27+
prepare(opt),
2828
readContents(opt),
2929
sourcemap(opt),
3030
];

lib/src/prepare.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use strict';
2+
3+
var through = require('through2');
4+
var valueOrFunction = require('value-or-function');
5+
6+
var date = valueOrFunction.date;
7+
8+
function prepareRead(opt) {
9+
if (!opt) {
10+
opt = {};
11+
}
12+
13+
function normalize(file, enc, callback) {
14+
15+
// Skip this file if since option is set and current file is too old
16+
if (opt.since != null) {
17+
var since = date(opt.since, file);
18+
if (since === null) {
19+
return callback(new Error('Invalid since option'));
20+
}
21+
if (file.stat && file.stat.mtime <= since) {
22+
return callback();
23+
}
24+
}
25+
26+
return callback(null, file);
27+
}
28+
29+
return through.obj(normalize);
30+
}
31+
32+
module.exports = prepareRead;

lib/symlink/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ var os = require('os');
66
var fs = require('graceful-fs');
77
var pumpify = require('pumpify');
88
var through = require('through2');
9-
var prepare = require('vinyl-prepare');
109
var valueOrFunction = require('value-or-function');
1110
var koalas = require('koalas');
1211
var lead = require('lead');
1312
var mkdirpStream = require('fs-mkdirp-stream');
1413

1514
var fo = require('../file-operations');
15+
var prepare = require('./prepare');
1616

1717
var number = valueOrFunction.number;
1818
var boolean = valueOrFunction.boolean;
@@ -83,7 +83,7 @@ function symlink(outFolder, opt) {
8383
}
8484

8585
var stream = pumpify.obj(
86-
prepare.dest(outFolder, opt),
86+
prepare(outFolder, opt),
8787
mkdirpStream.obj(dirpath),
8888
through.obj(linkFile)
8989
);

lib/symlink/prepare.js

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'use strict';
2+
3+
// TODO: currently a copy-paste of prepareWrite but should be customized
4+
5+
var path = require('path');
6+
7+
var fs = require('graceful-fs');
8+
var koalas = require('koalas');
9+
var through = require('through2');
10+
var valueOrFunction = require('value-or-function');
11+
12+
var string = valueOrFunction.string;
13+
var number = valueOrFunction.number;
14+
var boolean = valueOrFunction.boolean;
15+
16+
function prepareSymlink(outFolder, opt) {
17+
if (!opt) {
18+
opt = {};
19+
}
20+
21+
if (!outFolder) {
22+
throw new Error('Invalid output folder');
23+
}
24+
25+
function normalize(file, enc, cb) {
26+
var defaultMode = file.stat ? file.stat.mode : null;
27+
var mode = koalas(number(opt.mode, file), defaultMode);
28+
var flag = koalas(boolean(opt.overwrite, file), true) ? 'w' : 'wx';
29+
var cwd = path.resolve(koalas(string(opt.cwd, file), process.cwd()));
30+
31+
var outFolderPath = string(outFolder, file);
32+
if (!outFolderPath) {
33+
return cb(new Error('Invalid output folder'));
34+
}
35+
var basePath = path.resolve(cwd, outFolderPath);
36+
var writePath = path.resolve(basePath, file.relative);
37+
38+
// Wire up new properties
39+
file.stat = (file.stat || new fs.Stats());
40+
file.stat.mode = mode;
41+
file.flag = flag;
42+
file.cwd = cwd;
43+
file.base = basePath;
44+
file.path = writePath;
45+
46+
cb(null, file);
47+
}
48+
49+
return through.obj(normalize);
50+
}
51+
52+
module.exports = prepareSymlink;

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
"to-through": "^2.0.0",
4343
"value-or-function": "^2.0.0",
4444
"vinyl": "^2.0.0",
45-
"vinyl-prepare": "^0.3.0",
4645
"vinyl-sourcemap": "^0.4.0"
4746
},
4847
"devDependencies": {

0 commit comments

Comments
 (0)