run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
void run() {
if (!ContextService.isInitialized()) {
print('ContextForge has not been initialized.\nRun: contextforge init');
return;
}
if (argResults?.rest.isEmpty ?? true) {
print('Error: Task ID is required.\nUsage: contextforge task done <task-id>');
return;
}
final taskId = argResults!.rest[0];
ContextService.ensureDataFilesExist();
final features = ContextService.loadAllFeatures();
final taskIndex = features.indexWhere((f) => f.id == taskId);
if (taskIndex == -1) {
print('Error: Task "$taskId" not found.');
return;
}
final task = features[taskIndex];
if (task.status == 'completed' || task.status == 'done') {
print('Task "${task.title}" is already completed.');
return;
}
features[taskIndex] = Feature(
id: task.id,
title: task.title,
status: 'completed',
description: task.description,
files: task.files,
detailFile: task.detailFile,
);
ContextService.saveFeatures(features);
print('✔ Task "${task.title}" marked as completed');
}