UNPKG

simple-task-master

Version:
82 lines 2.89 kB
"use strict"; /** * List tasks command */ Object.defineProperty(exports, "__esModule", { value: true }); exports.listCommand = void 0; const commander_1 = require("commander"); const task_manager_1 = require("../lib/task-manager"); const output_1 = require("../lib/output"); const errors_1 = require("../lib/errors"); /** * Parse tags filter from string */ function parseTagsFilter(tagsStr) { return tagsStr .split(',') .map((tag) => tag.trim()) .filter((tag) => tag.length > 0); } /** * List tasks with optional filtering */ async function listTasks(options) { try { const taskManager = await task_manager_1.TaskManager.create(); // Build filters const filters = {}; if (options.status) { if (!['pending', 'in-progress', 'done'].includes(options.status)) { throw new errors_1.ValidationError('Status must be one of: pending, in-progress, done'); } filters.status = options.status; } if (options.tags) { filters.tags = parseTagsFilter(options.tags); } if (options.search) { filters.search = options.search; } // Get tasks const tasks = await taskManager.list(filters); // Determine output format let format = 'ndjson'; // default if (options.pretty) { format = 'table'; } else if (options.format) { const validFormats = ['ndjson', 'json', 'table', 'csv', 'yaml']; if (!validFormats.includes(options.format)) { throw new errors_1.ValidationError(`Invalid format: ${options.format}. Valid formats: ${validFormats.join(', ')}`); } format = options.format; } // Format and output const output = (0, output_1.formatTasks)(tasks, format); (0, output_1.printOutput)(output); } catch (error) { if (error instanceof errors_1.ValidationError || error instanceof errors_1.FileSystemError || error instanceof errors_1.ConfigurationError || error instanceof Error) { (0, output_1.printError)(error.message); process.exit(1); } throw error; } } /** * Create the list command */ exports.listCommand = new commander_1.Command('list') .description('List tasks with optional filtering') .option('-s, --status <status>', 'Filter by status (pending, in-progress, done)') .option('-t, --tags <tags>', 'Filter by tags (comma-separated)') .option('--search <query>', 'Search in task titles and content') .option('-p, --pretty', 'Pretty table output format') .option('-f, --format <format>', 'Output format (ndjson, json, table, csv, yaml)') .action(async (options) => { await listTasks(options); }); //# sourceMappingURL=list.js.map