Добавлена команда добавления задачи. Обновлены методы обработки команд в CLI: заменены example и description на usage, добавлено шаблонное сообщение о… #31

Merged
KamaSK merged 1 commits from feature/cli/create-command into dev 2025-05-28 17:56:18 +03:00
3 changed files with 15 additions and 20 deletions

View File

@ -47,14 +47,9 @@ public class CliEngine {
} }
void handleHelp() { void handleHelp() {
var template = " %-30s // %s"; registry.values().stream().map(handler -> handler.usage()).forEach(System.out::println);
System.out.println("Доступные команды:\n"); System.out.printf(Command.templateUsage, "help", "Вот этот список команд\n");
registry.values().stream() System.out.printf(Command.templateUsage, "exit", "Выход, но лучше не надо)\n");
.map(handler -> String.format(template, handler.example(), handler.description()))
.forEach(System.out::println);
System.out.println();
System.out.printf(template, "help", "Вот этот список команд\n");
System.out.printf(template, "exit", "Выход, но лучше не надо)\n");
} }

View File

@ -5,11 +5,12 @@ import java.util.Optional;
import ru.kamask.pet.todo.service.TaskService; import ru.kamask.pet.todo.service.TaskService;
public interface Command { public interface Command {
String templateUsage = " %-30s // %s";
String errorMessage = "Не корректно введена команда. Введите help для спарвки.";
Optional<String> handle(String[] args, TaskService service); Optional<String> handle(String[] args, TaskService service);
String name(); String name();
String example(); String usage();
String description();
} }

View File

@ -12,17 +12,16 @@ public class CreateCommand implements Command {
@Override @Override
public Optional<String> handle(String[] args, TaskService service) { public Optional<String> handle(String[] args, TaskService service) {
// TODO create new todo if (args.length > 0) {
return Optional.of("Добавление новой задачи"); var title = String.join(" ", args);
service.create(title);
return Optional.of(String.format("Задача \"%s\" успешно добавлена!", title));
}
return Optional.of(Command.errorMessage);
} }
@Override @Override
public String example() { public String usage() {
return name() + " <title>"; return String.format(templateUsage, name() + "азваниеадачи>", "Добавление новой задачи");
}
@Override
public String description() {
return "Добавление новой задачи";
} }
} }