webstatus/bin/webstatus-manifest-generato...

105 lines
2.5 KiB
JavaScript
Executable File

#!/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>', '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();