taskmanager-ai
Version:
A CLI tool to manage your projects tasks with AI
68 lines (57 loc) • 2.2 kB
JavaScript
import chalk from 'chalk';
import { getProjectMetadata } from '../utils/config.js';
import { getNextTask } from '../utils/tasks.js';
import { formatTask, formatTasksTable } from '../utils/format.js';
/**
* Comando para mostrar a próxima tarefa a ser implementada
*/
export async function showNextTask() {
try {
// Carregar metadados do projeto
const projectMetadata = await getProjectMetadata();
if (!projectMetadata) {
console.error(chalk.red('Projeto não inicializado. Execute taskmanager init primeiro.'));
return;
}
// Obter a próxima tarefa
const nextTask = await getNextTask();
if (!nextTask) {
console.log(chalk.yellow('Não há tarefas pendentes para implementação.'));
return;
}
// Exibir a tarefa formatada
console.log(chalk.bold.cyan('\n=== PRÓXIMA TAREFA ===\n'));
console.log(formatTask(nextTask));
// Se houver subtarefas, encontrar a próxima subtarefa pendente
if (nextTask.subtasks && nextTask.subtasks.length > 0) {
const nextSubtask = nextTask.subtasks.find(st => st.status === 'pending');
if (nextSubtask) {
console.log(chalk.bold.cyan('\nPróxima Subtarefa:'));
console.log(formatTasksTable([{
...nextTask,
subtasks: [nextSubtask]
}], true, true));
// Adicionar comandos úteis específicos para a subtarefa
console.log(chalk.cyan('\nComandos para a subtarefa:'));
console.log(`
${chalk.cyan('Marcar subtarefa como em progresso:')}
taskmanager set status ${nextTask.id}.${nextSubtask.id} in-progress
${chalk.cyan('Marcar subtarefa como concluída:')}
taskmanager set status ${nextTask.id}.${nextSubtask.id} done
`);
}
}
// Exibir comandos úteis
console.log(chalk.bold.blue('\n=== COMANDOS ÚTEIS ==='));
console.log(`
${chalk.cyan('Marcar como em progresso:')}
taskmanager set status ${nextTask.id} in-progress
${chalk.cyan('Marcar como concluída:')}
taskmanager set status ${nextTask.id} done
${chalk.cyan('Ver detalhes completos:')}
taskmanager show ${nextTask.id}
`);
} catch (error) {
console.error(chalk.red(`Erro ao mostrar próxima tarefa: ${error.message}`));
}
}