mix/cmd/init.ts
2025-06-24 16:10:50 +01:00

32 lines
No EOL
1.2 KiB
TypeScript

import type { Command } from "commander";
import { existsSync, mkdirSync, readdirSync, writeFileSync } from "fs";
import * as h from "hjson";
import { homedir } from "os";
import path from "path";
import { isDev } from "../lib";
export const registerInitCommand = (p: Command) => {
p
.command("init")
.action(() => {
const dir = readdirSync(process.cwd(), { withFileTypes: true })
.filter((dirent) => dirent.isFile() && (dirent.name.endsWith("mix.hjson") || dirent.name === "mix.lock") && !dirent.name.startsWith("_"));
if (dir.length > 0) {
console.error("Error: Mix project already initialized. Please remove existing .mix.hjson or mix.lock files.");
process.exit(1);
}
const mixDir = isDev ? "" : path.join(homedir(), ".mix");
if (mixDir && !existsSync(mixDir)) {
mkdirSync(mixDir, { recursive: true });
}
writeFileSync(path.join(mixDir, "mix.hjson"), h.stringify({
default: {
packages: []
}
}));
writeFileSync(path.join(mixDir, "mix.lock"), "[]");
});
}