codetainer
Version:
A clean and simple CLI to manage and store code snippets with ease.
41 lines (34 loc) • 1.41 kB
JavaScript
import fs from "fs";
import path from "path";
import chalk from "chalk";
import { loadSnippets, saveSnippets } from "../utils/snippetStore.js";
import { fileExtensions } from "../data/extension.js";
export function registerImportCommand(program) {
program
.command("import <file>")
.description("Import a code file as a snippet")
.option("-n, --name <name>", "Snippet name (defaults to filename)")
.option("-a, --as <name>", "Alias for snippet name")
.option("-t, --tags <tags>", "Comma-separated tags")
.action((file, options) => {
if (!fs.existsSync(file)) {
console.log(chalk.red(`❌ File "${file}" not found.`));
return;
}
const extMap = fileExtensions;
const code = fs.readFileSync(file, "utf-8");
const ext = path.extname(file).slice(1);
const language = extMap[ext] || "other";
const name =
options.as || options.name || path.basename(file, path.extname(file));
const tags = options.tags?.split(",").map((t) => t.trim()) || [];
const snippets = loadSnippets();
if (snippets[name]) {
console.log(chalk.red(`❌ Snippet "${name}" already exists.`));
return;
}
snippets[name] = { code, language, tags };
saveSnippets(snippets);
console.log(chalk.green(`✅ Snippet "${name}" imported from ${file}`));
});
}