UNPKG

codetainer

Version:

A clean and simple CLI to manage and store code snippets with ease.

41 lines (34 loc) 1.41 kB
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}`)); }); }