#! /usr/bin/env node import * as glob from "multiple-glob"; import * as fs from "fs"; import * as touch from "touch"; import * as shell from "shelljs"; let checksum: number; if (fs.existsSync(process.argv[2])) { checksum = fs.lstatSync(process.argv[2]).mtimeMs; } else { checksum = 0; } if (process.env.NODE_ENV === "debug") { console.log( "CHECK " + JSON.stringify(process.argv.slice(3, -1), undefined, 2) ); } glob(process.argv.slice(3, -1), (err, files: string[]) => { if (err) { console.log("ERR", err); } else { let stime = files .map(f => { if (process.env.NODE_ENV === "debug") { console.log("FILE ", f); } return { f: f, mttime: fs.lstatSync(f).mtimeMs }; }) .reduce( (prev, v) => { if (prev) { if (prev.mttime > v.mttime) { return prev; } } return v; }, { f: "", mttime: 0 } ).mttime; if (process.env.NODE_ENV === "debug") { console.log(`STIME ${stime} > ${checksum}`); } if (stime > checksum && stime > 0) { if (shell.exec(process.argv.slice(-1)[0]).code === 0) { touch(process.argv[2]); } else { shell.exit(1); } } } });