need to push to test in ci
This commit is contained in:
104
bin/webstatus-manifest-generator.js
Executable file
104
bin/webstatus-manifest-generator.js
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/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();
|
||||
Reference in New Issue
Block a user