cli/create.js
#!/usr/bin/env node
'use strict';
/* eslint-disable no-process-exit */
/*
* Dependencies.
*/
import {
createArchive
} from '../lib/index.js';
import minimist from 'minimist';
import {
createRequire
} from 'module';
const require = createRequire(
import.meta.url);
const pack = require('../package.json');
/*
* Arguments.
*/
let argv = minimist(process.argv.slice(2));
/*
* Command.
*/
var command = Object.keys(pack.bin)[1];
/**
* Help.
*
* @return {string}
*/
function help() {
return [
'Adds files to archive.',
'Usage: ' + command + ' [filepath] [files] ...Options',
'',
pack.description,
'',
' [filepath] - Path to the archive.',
' [files] - Files to add.',
'',
'Options:',
'',
' -h, --help output usage information',
' -v, --version output version number',
'',
' Any of these 7zip switches this command accepts:',
'',
' -i (Include filenames)',
' -m (Set compression Method)',
' -p (Set Password)',
' -r (Recurse subdirectories)',
' -sdel (Delete files after compression)',
' -sfx (Create SFX archive)',
' -si (read data from stdin)',
' -sni (Store NT security information)',
' -sns (Store NTFS alternate Streams)',
' -so (write data to stdout)',
' -spf (Use fully qualified file paths)',
' -ssw (Compress files open for writing)',
' -stl (Set archive timestamp from the most recently modified file)',
' -t (set Type of archive)',
' -u (Update options)',
' -v (Create Volumes)',
' -w (set Working directory)',
' -x (Exclude filenames)',
'',
'Example:',
'> ' + command + ' disc/master.7z *.md help.doc -r',
''
].join('\n ') + '\n';
}
/*
* Program.
*/
if (argv.help || argv.h) {
console.log(help());
} else if (argv.version || argv.v) {
console.log(pack.version);
} else if (argv) {
let options = {};
let files = argv._;
let filepath = files.shift();
delete argv._;
if (filepath && files) {
options = Object.assign(options, argv)
console.log("Creating/adding...");
createArchive(filepath, files, options)
.progress((info) => {
console.log(info);
})
.then(() => {
console.log('Creation of archive ' + filepath + ' done!');
})
.catch((error) => {
console.log('--- error:');
console.log(error);
});
} else {
console.log(help());
}
} else {
console.log(help());
}