dependent-path-update
Version:
A tool to update dependent paths when renaming a file.
70 lines (59 loc) • 1.88 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _fs = _interopRequireDefault(require("mz/fs"));
var _path = _interopRequireDefault(require("path"));
var _argly = _interopRequireDefault(require("argly"));
var _ = _interopRequireDefault(require("./"));
const options = _argly.default.createParser({
"*": {
type: "string[]",
description: "The files to rename"
},
"--help -h": {
type: "boolean",
description: "Show this help message"
},
"--include -i": {
type: "string[]",
description: "File patterns to update"
},
"--exclude -e": {
type: "string[]",
description: "File patterns to ignore"
},
"--project-dir -d": {
type: "string",
description: "Directory in which dependents will be updated (defaults to CWD)"
}
}).usage("Usage: $0 <from> <to> [options]").example("Move a file and update dependents", "$0 ./file-a.js ./files/a.js").validate(function (result) {
if (result.help) {
this.printUsage();
process.exit(0);
}
if (!result["*"] || result["*"].length !== 4) {
this.printUsage();
process.exit(1);
}
const [,, from, to] = result["*"];
delete result["*"];
result.projectDir = result.projectDir || process.cwd();
result.from = _path.default.resolve(result.projectDir, from);
result.to = _path.default.resolve(result.projectDir, to);
}).onError(function (err) {
this.printUsage();
if (err) {
console.log();
console.log(err);
}
process.exit(1);
}).parse(process.argv);
(async () => {
try {
const output = await (0, _.default)(options);
await Promise.all(Object.entries(output).map(([file, source]) => _fs.default.writeFile(file, source, "utf-8")).concat(_fs.default.rename(options.from, options.to)));
} catch (err) {
console.error(err);
process.exit(1);
}
})();