create-esmx
Version:
A scaffold tool for creating Esmx projects
43 lines (42 loc) • 1.01 kB
JavaScript
import { basename, isAbsolute, normalize, resolve } from "node:path";
export function formatProjectName(input, cwd) {
const workingDir = cwd || process.cwd();
let cleanInput = input;
if (input !== "/" && input !== "\\" && input.length > 1) {
cleanInput = input.replace(/[\\/]+$/, "");
}
if (cleanInput === ".") {
return {
name: basename(workingDir),
root: workingDir
};
}
if (cleanInput === "" || cleanInput === "/" || cleanInput === "\\") {
if (cleanInput === "/") {
return {
name: "esmx-project",
root: "/"
};
}
return {
name: "esmx-project",
root: resolve(workingDir, "esmx-project")
};
}
let root;
if (isAbsolute(cleanInput)) {
root = normalize(cleanInput);
} else {
root = resolve(workingDir, cleanInput);
}
let name;
if (cleanInput.startsWith("@")) {
name = cleanInput;
} else {
name = basename(normalize(cleanInput)) || "esmx-project";
}
return {
name,
root
};
}