diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/tar/lib/create.js')
| -rw-r--r-- | sandbox/testAppNevena/Front/node_modules/tar/lib/create.js | 104 | 
1 files changed, 104 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/tar/lib/create.js b/sandbox/testAppNevena/Front/node_modules/tar/lib/create.js new file mode 100644 index 00000000..d033640a --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/tar/lib/create.js @@ -0,0 +1,104 @@ +'use strict' + +// tar -c +const hlo = require('./high-level-opt.js') + +const Pack = require('./pack.js') +const fsm = require('fs-minipass') +const t = require('./list.js') +const path = require('path') + +module.exports = (opt_, files, cb) => { +  if (typeof files === 'function') +    cb = files + +  if (Array.isArray(opt_)) +    files = opt_, opt_ = {} + +  if (!files || !Array.isArray(files) || !files.length) +    throw new TypeError('no files or directories specified') + +  files = Array.from(files) + +  const opt = hlo(opt_) + +  if (opt.sync && typeof cb === 'function') +    throw new TypeError('callback not supported for sync tar functions') + +  if (!opt.file && typeof cb === 'function') +    throw new TypeError('callback only supported with file option') + +  return opt.file && opt.sync ? createFileSync(opt, files) +    : opt.file ? createFile(opt, files, cb) +    : opt.sync ? createSync(opt, files) +    : create(opt, files) +} + +const createFileSync = (opt, files) => { +  const p = new Pack.Sync(opt) +  const stream = new fsm.WriteStreamSync(opt.file, { +    mode: opt.mode || 0o666, +  }) +  p.pipe(stream) +  addFilesSync(p, files) +} + +const createFile = (opt, files, cb) => { +  const p = new Pack(opt) +  const stream = new fsm.WriteStream(opt.file, { +    mode: opt.mode || 0o666, +  }) +  p.pipe(stream) + +  const promise = new Promise((res, rej) => { +    stream.on('error', rej) +    stream.on('close', res) +    p.on('error', rej) +  }) + +  addFilesAsync(p, files) + +  return cb ? promise.then(cb, cb) : promise +} + +const addFilesSync = (p, files) => { +  files.forEach(file => { +    if (file.charAt(0) === '@') { +      t({ +        file: path.resolve(p.cwd, file.substr(1)), +        sync: true, +        noResume: true, +        onentry: entry => p.add(entry), +      }) +    } else +      p.add(file) +  }) +  p.end() +} + +const addFilesAsync = (p, files) => { +  while (files.length) { +    const file = files.shift() +    if (file.charAt(0) === '@') { +      return t({ +        file: path.resolve(p.cwd, file.substr(1)), +        noResume: true, +        onentry: entry => p.add(entry), +      }).then(_ => addFilesAsync(p, files)) +    } else +      p.add(file) +  } +  p.end() +} + +const createSync = (opt, files) => { +  const p = new Pack.Sync(opt) +  addFilesSync(p, files) +  return p +} + +const create = (opt, files) => { +  const p = new Pack(opt) +  addFilesAsync(p, files) +  return p +}  | 
