105 lines
2.5 KiB
JavaScript
Executable File
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();
|