#!/usr/bin/env node 'use strict'; const figlet = require('figlet'); const chalk = require('chalk'); const fs = require('fs'); function recFindByExt(base, ext, files, result) { files = files || fs.readdirSync(base) result = result || [] files.forEach( function (file) { var newbase = path.join(base,file) if ( fs.statSync(newbase).isDirectory() ) { result = recFindByExt(newbase,ext,fs.readdirSync(newbase),result) } else { if ( file.substr(-1*(ext.length+1)) == '.' + ext ) { result.push(newbase) } } } ) return result } function pprint(obj) { console.log("%o", obj) } function outputManifest (path, fileList) { if(!fileList) { l = [] } const output = { version: 1, '$id': 'berlin.sneak.ns.webstatus.manifest-v1', manifest: fileList } fs.writeFileSync(path + ".tmp", JSON.stringify(output)) fs.renameSync(path + ".tmp", path) } function main() { const commander = require('commander'); const program = new commander.Command(); program.version('0.0.1', '-v --version', 'output current version'); program .option('-s --source ', 'directory to scan/write', '.') .option('-v --verbose', 'verbose output', false) .option('-q --quiet', 'no output', false) program.parse(process.argv); const print = (x) => { if(program.quiet) { return } console.log(x) } const log = {} log.info = (x) => { print(chalk.blue(x)) } log.die = (x) => { print(chalk.bold.red('error: ' + x)) print(chalk.bold.red('exiting.')) process.exit(-1) } log.huge = (x) => { var f = figlet.textSync(x, { font: 'Red Phoenix', horizontalLayout: 'default', verticalLayout: 'default' }) print(chalk.red(f)) } log.huge('webstatus') //const dir = program.source //pprint(program) if(!fs.lstatSync(program.source).isDirectory()) { log.die(`${program.source} is not a directory`) } else { log.info(`scanning ${program.source} for images...`) } var fileList = [] var manifestFilename = program.source + '/webstatus.manifest.json' //FIXME scan for files // log.info(`writing ${fileList.length} entries to manifest ${manifestFilename}`) outputManifest(manifestFilename, fileList) log.die("unimplemented") } main();