aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/tar/lib/update.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/node_modules/tar/lib/update.js')
-rw-r--r--deps/node/deps/npm/node_modules/tar/lib/update.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/deps/node/deps/npm/node_modules/tar/lib/update.js b/deps/node/deps/npm/node_modules/tar/lib/update.js
new file mode 100644
index 00000000..16c3e93e
--- /dev/null
+++ b/deps/node/deps/npm/node_modules/tar/lib/update.js
@@ -0,0 +1,36 @@
+'use strict'
+
+// tar -u
+
+const hlo = require('./high-level-opt.js')
+const r = require('./replace.js')
+// just call tar.r with the filter and mtimeCache
+
+const u = module.exports = (opt_, files, cb) => {
+ const opt = hlo(opt_)
+
+ if (!opt.file)
+ throw new TypeError('file is required')
+
+ if (opt.gzip)
+ throw new TypeError('cannot append to compressed archives')
+
+ if (!files || !Array.isArray(files) || !files.length)
+ throw new TypeError('no files or directories specified')
+
+ files = Array.from(files)
+
+ mtimeFilter(opt)
+ return r(opt, files, cb)
+}
+
+const mtimeFilter = opt => {
+ const filter = opt.filter
+
+ if (!opt.mtimeCache)
+ opt.mtimeCache = new Map()
+
+ opt.filter = filter ? (path, stat) =>
+ filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)
+ : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)
+}