@reliverse/rse-sdk
Version:
@reliverse/rse-sdk allows you to create new plugins for @reliverse/rse CLI, interact with reliverse.org, and even extend your own CLI functionality (you may also try @reliverse/dler-sdk for this case).
58 lines (57 loc) • 1.61 kB
JavaScript
import path from "@reliverse/pathkit";
import { ensuredir } from "@reliverse/relifso";
import { defineCommand } from "@reliverse/rempts";
import os from "os";
import { showRulesMenu, handleDirectRules } from "./add-rule-impl.js";
export default defineCommand({
meta: {
name: "rule",
description: "Download and manage AI IDE rules"
},
args: {
dev: {
type: "boolean",
description: "Run in development mode",
required: false,
default: false
},
source: {
type: "string",
description: "Source of the rules | Accepted: `official`, `community`, `prompt`",
default: "prompt"
},
get: {
type: "string",
// TODO: support array
description: "Specify rule files by name or pass `all` to install everything without prompt",
required: false
}
},
async run({ args }) {
const { dev: isDev, source, get } = args;
const effectiveGet = get ? [get] : [];
if (source !== "prompt" && source !== "official" && source !== "community") {
throw new Error(
"Invalid source. Accepted values: `prompt`, `official`, `community`"
);
}
const homeDir = os.homedir();
const rulesBaseDir = path.join(homeDir, ".reliverse", "rules");
await ensuredir(rulesBaseDir);
if (effectiveGet && effectiveGet.length > 0) {
await handleDirectRules({
cwd: process.cwd(),
isDev,
source,
ruleNames: effectiveGet
});
} else {
await showRulesMenu({
cwd: process.cwd(),
isDev,
source
});
}
process.exit(0);
}
});