codetainer
Version:
A clean and simple CLI to manage and store code snippets with ease.
37 lines (32 loc) • 1.21 kB
JavaScript
import chalk from "chalk";
import { loadSnippets } from "../utils/snippetStore.js";
export function registerListCommand(program) {
program
.command("list")
.option("--tag <tag>", "Filter by tag")
.option("--language <lang>", "Filter by language")
.description("List saved snippets")
.action((options) => {
const snippets = loadSnippets();
const entries = Object.entries(snippets);
const filtered = entries.filter(([_, data]) => {
const tagMatch = options.tag
? (data.tags || []).includes(options.tag)
: true;
const langMatch = options.language
? (data.language || "").toLowerCase() ===
options.language.toLowerCase()
: true;
return tagMatch && langMatch;
});
if (filtered.length === 0) {
console.log(chalk.yellow("No snippets found."));
return;
}
filtered.forEach(([name, data], i) => {
const tags = data.tags?.length ? ` [${data.tags.join(", ")}]` : "";
const lang = data.language ? ` (${data.language})` : "";
console.log(`${i + 1}. ${chalk.blue(name)}${lang}${tags}`);
});
});
}