51 lines
1.2 KiB
JavaScript
Executable File
51 lines
1.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
// this script searches for a local install of shadow-cljs
|
|
// so it uses the version installed in the project over a globally installed version
|
|
// but the global still works standalone if no package.json exists
|
|
// so CLJS-only projects don't have to have a package.json present
|
|
// but can still use the CLI script
|
|
|
|
var fs = require("fs");
|
|
var path = require("path");
|
|
|
|
var localLib = null;
|
|
|
|
var root = process.cwd();
|
|
|
|
// replicate default node resolve which looks in parent directories as well
|
|
// so you can run it from $PROJECT/src/foo and have it pick up $PROJECT/node_modules
|
|
for (;;) {
|
|
var test = path.resolve(root, "node_modules", "shadow-cljs", "cli", "dist.js")
|
|
|
|
if (fs.existsSync(test)) {
|
|
localLib = test;
|
|
break;
|
|
}
|
|
|
|
var nextRoot = path.resolve(root, "..");
|
|
if (nextRoot == root) {
|
|
break;
|
|
} else {
|
|
root = nextRoot;
|
|
}
|
|
}
|
|
|
|
var lib = null;
|
|
if (localLib != null) {
|
|
// console.log("shadow-cljs - using project version");
|
|
lib = require(localLib);
|
|
} else {
|
|
// console.log("shadow-cljs - using global version")
|
|
|
|
// this throws if not found right?
|
|
lib = require("./dist.js");
|
|
}
|
|
|
|
if (lib == null) {
|
|
console.log("failed to require CLI lib", localLib);
|
|
} else {
|
|
lib.main(process.argv.slice(2));
|
|
}
|
|
|