diff --git a/wikizimmer.js b/wikizimmer.js index fc8cb49..24d2853 100755 --- a/wikizimmer.js +++ b/wikizimmer.js @@ -57,9 +57,43 @@ const mimeMagic = new mmmagic.Magic( mmmagic.MAGIC_MIME_TYPE ) const moment = require("moment") require("moment-duration-format") +const cpuCount = os.cpus().length + const startTime = Date.now() -const cpuCount = os.cpus().length +function elapsedStr( from , to = Date.now()) { + return moment.duration( to - from ).format('d[d]hh:mm:ss.SSS',{ stopTrim: "h" }) +} + +function print ( ...args ) { + console.log( ... args ) +} + +const tick = (( slow ) => { + let ping = 0 + return () => { + if (( ping++ ) % slow == 0 ) + osProcess.stdout.write( '.' ) + } +}) ( 100 ) + +function log ( ...args ) { + if ( command.quiet ) + return + else if ( command.verbose ) + console.log( elapsedStr( startTime ), ... args ) + else + tick() +} + +function warning ( ...args ) { + log( elapsedStr( startTime ), ...args ) +} + +function fatal ( ...args ) { + console.trace( elapsedStr( startTime ), ... args ) + osProcess.exit( 1 ) +} const mimeIds = [] @@ -79,23 +113,6 @@ function sanitizeFN ( name ) { // after https://github.com/pillarjs/encodeurl } } -function elapsedStr( from , to = Date.now()) { - return moment.duration( to - from ).format('d[d]hh:mm:ss.SSS',{ stopTrim: "h" }) -} - -function log ( ...args ) { - console.log( elapsedStr( startTime ), ... args ) -} - -function warning ( ...args ) { - log( ...args ) -} - -function fatal ( ...args ) { - console.trace( elapsedStr( startTime ), ... args ) - osProcess.exit( 1 ) -} - function mimeFromData ( data ) { return new Promise(( resolve, reject ) => mimeMagic.detect( data, ( error, mimeType ) => { @@ -1194,7 +1211,7 @@ async function getPages () { await batchPages( nameSpace ) } } - log( '**************** done' ) + log( '**************** download finished' ) } async function loadCss( dom ) { @@ -1205,9 +1222,7 @@ async function loadCss( dom ) { } async function initWikiDb () { - let dbName = osPath.join( wiki.outPath, 'metadata.db' ) - try { await fs.unlink( dbName ) } catch (err) { @@ -1291,7 +1306,7 @@ async function core ( sampleURL, outPath ) { } } -function main () { +async function main () { command .version( packageInfo.version ) .arguments( ' []' ) @@ -1323,11 +1338,14 @@ function main () { return patterns.split( '|' ) } ) .option( '-r, --rmdir', 'delete destination directory before processing the source' ) + .option( '-v, --verbose', 'print processing details on STDOUT' ) + .option( '-q, --quiet', 'do not print on STDOUT' ) .parse( process.argv ) log( command.opts() ) - core( ... command.args ) + await core( ... command.args ) + print( 'Done' ) } main () diff --git a/zimmer.js b/zimmer.js index e46a8b4..c3719ab 100755 --- a/zimmer.js +++ b/zimmer.js @@ -62,9 +62,44 @@ const mimeMagic = new mmmagic.Magic( mmmagic.MAGIC_MIME_TYPE ) const moment = require("moment") require("moment-duration-format") -const startTime = Date.now() const cpuCount = os.cpus().length +const startTime = Date.now() + +function elapsedStr( from , to = Date.now()) { + return moment.duration( to - from ).format('d[d]hh:mm:ss.SSS',{ stopTrim: "h" }) +} + +function print ( ...args ) { + console.log( ... args ) +} + +const tick = (( slow ) => { + let ping = 0 + return () => { + if (( ping++ ) % slow == 0 ) + osProcess.stdout.write( '.' ) + } +}) ( 100 ) + +function log ( ...args ) { + if ( command.quiet ) + return + else if ( command.verbose ) + console.log( elapsedStr( startTime ), ... args ) + else + tick() +} + +function warning ( ...args ) { + log( elapsedStr( startTime ), ...args ) +} + +function fatal ( ...args ) { + console.trace( elapsedStr( startTime ), ... args ) + osProcess.exit( 1 ) +} + var srcPath var outPath var out // output file writer @@ -170,23 +205,6 @@ function getNameSpace ( mimeType ) { return '-' } -function elapsedStr( from , to = Date.now()) { - return moment.duration( to - from ).format('d[d]hh:mm:ss.SSS',{ stopTrim: "h" }) -} - -function log ( ...args ) { - console.log( elapsedStr( startTime ), ... args ) -} - -function warning ( ...args ) { - log( ...args ) -} - -function fatal ( ...args ) { - console.trace( elapsedStr( startTime ), ... args ) - osProcess.exit( 1 ) -} - function mimeFromData ( data ) { return new Promise(( resolve, reject ) => mimeMagic.detect( data, ( error, mimeType ) => { @@ -1615,6 +1633,7 @@ async function main () { .option( '-p, --publisher ', 'creator of the ZIM file itself', '' ) // zimwriterfs "Optional" arguments: .option( '-v, --verbose', 'print processing details on STDOUT' ) + .option( '-q, --quiet', 'do not print on STDOUT' ) .option( '-m, --minChunkSize ', 'number of bytes per ZIM cluster (default: 2048)', parseInt, 2048 ) .option( '-x, --inflateHtml', 'try to inflate HTML files before packing (*.html, *.htm, ...)' ) .option( '-u, --uniqueNamespace', 'put everything in the same namespace "A". Might be necessary to avoid problems with dynamic/javascript data loading' ) @@ -1643,7 +1662,7 @@ async function main () { //~ } await core () - log( 'Done...' ) + print( 'Done' ) } main ()