create-farm-rs 0.1.0

Create Farm cli tool
Documentation
#!/usr/bin/env node

const cli = require("./index");
const path = require("path");

const [bin, script, ...args] = process.argv;
const binStem = path.parse(bin).name.toLowerCase();

let binName;
if (binStem.match(/(nodejs|node|bun)-*([0-9]*)*$/g)) {
  const managerStem = process.env.npm_execpath
    ? path.parse(process.env.npm_execpath).name.toLowerCase()
    : null;
  if (managerStem) {
    let manager;
    switch (managerStem) {
      // Only supported package manager that has a different filename is npm.
      case "npm-cli":
        manager = "npm";
        break;

      // Yarn, pnpm, and Bun have the same stem name as their bin.
      // We assume all unknown package managers do as well.
      default:
        manager = managerStem;
        break;
    }

    binName = `${manager} run ${process.env.npm_lifecycle_event}`;
  } else {
    // Assume running NodeJS if we didn't detect a manager from the env.
    // We normalize the path to prevent the script's absolute path being used.
    const scriptNormal = path.normalize(path.relative(process.cwd(), script));
    binName = `${binStem} ${scriptNormal}`;
  }
} else {
  args.unshift(bin);
}

function pkgManagerFromUserAgent(userAgent) {
  if (!userAgent) return undefined;
  return userAgent.split(" ")[0]?.split("/")[0];
}

const pkgManager = pkgManagerFromUserAgent(process.env.npm_config_user_agent);
cli.run(args, binName, pkgManager);