CLI-приложение для управления задачами (todo list) с поддержкой сессий. Позволяет создавать, редактировать, отмечать как выполненные/невыполненные и удалять задачи, а также переключаться между разными сессиями задач.
- Поддержка нескольких сессий задач (например, "работа", "личные", "домашние").
- Сохранение задач в формате TOML в локальном каталоге данных.
- Простой CLI с алиасами команд.
- Локализация пути: использует каталог данных пользователя (via
dirscrate).
- Rust (рекомендуется версия 1.70+)
- Cargo (пакетный менеджер Rust)
-
Клонируйте репозиторий:
git clone https://github.com/zornfeuer/td cd https://github.com/zornfeuer/td -
Соберите релизную версию:
cargo build --release
Бинарный файл будет находиться в target/release/td.
- Если у вас установлен Rust toolchain, проект можно запустить напрямую:
cargo run -- <command>
После сборки запускайте приложение с помощью:
./target/release/td [COMMANDS] [ARGS...]
session <name>(алиас:s) - Переключиться на сессию<name>(создаёт её, если не существует).add "text"(алиас:a) - Добавить новую задачу с текстом "text".edit <index> "new text"(алиас:e) - Редактировать задачу с номером<index>(индексы начинаются с 1).done <index>(алиас:d) - Отметить задачу<index>как выполненную.undone <index>(алиас:u) - Отметить задачу<index>как невыполненную.rm <index>(алиас:r) - Удалить задачу<index>.ls(алиас:l) - Показать список задач в текущей сессии (это команда по умолчанию, если не указать аргументы).
-
Установить текущую сессию "работа":
td session работа -
Добавить задачу в текущей сессии:
td add "Завершить отчёт" -
Показать все задачи (текущей сессии по умолчанию):
tdВывод:
Session: default 1 [ ] Завершить отчёт -
Отметить задачу как выполненную:
td done 1Затем повторный список покажет:
Session: default 1 [✓] Завершить отчёт
- Задачи сохраняются в файле
tasks.tomlвнутри каталога сессии. - Каталог сессий:
<data_local_dir>/td/<session_name>(например,~/.local/share/td/default/на Linux). - Текущая сессия сохраняется в
<data_local_dir>/td/current_session.
Если каталог данных не найден, используется текущая директория (.).
clap(для CLI)serdeиserde_derive(для сериализации)toml(для работы с TOML)dirs(для получения системных каталогов)
Зависимости указаны в Cargo.toml (не предоставлен в коде, но должен быть в корне проекта).
main.rs- Точка входа, парсинг CLI и выполнение команд.lib.rs- Определение модулей.cli.rs- Определение структуры CLI с clap.session.rs- Логика управления сессиями (создание, переключение, пути).tasks.rs- Структура задач и списка задач с методами.
[MIT]
[zornfeuer]
Если нашли баг или хотите предложить функционал, откройте issue в репозитории.
Приятного использования! 📋