Skip to content

uncrownedkid/TodoCli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

todo-cli

Небольшой консольный менеджер задач на Python — без сторонних зависимостей. Построен на стандартной библиотеке argparse, задачи хранятся в обычном JSON-файле.

Возможности

  • Добавление, просмотр, завершение и удаление задач прямо из терминала
  • Фильтр списка: показывать только незавершённые задачи
  • Удаление всех задач одной командой
  • Хранение в JSON — файл легко открыть, отредактировать или забэкапить
  • Путь к файлу настраивается через переменную окружения TODO_FILE
  • Покрытие юнит-тестами (pytest)

Структура проекта

todo-cli/
├── todo_cli/
│   ├── __init__.py
│   ├── __main__.py        # запуск через `python -m todo_cli`
│   ├── cli.py             # парсер argparse и обработка команд
│   ├── models.py          # датакласс Task
│   └── storage.py         # слой хранения в JSON
├── tests/
│   ├── test_cli.py
│   └── test_storage.py
├── .env.example
├── .gitignore
├── pyproject.toml
├── requirements.txt
└── README.md

Требования

  • Python 3.10+

Установка

Склонируйте репозиторий и (по желанию) создайте виртуальное окружение:

git clone https://github.com/<your-username>/todo-cli.git
cd todo-cli

python -m venv .venv
source .venv/bin/activate         # Windows: .venv\Scripts\activate

pip install -r requirements.txt

Установите сам CLI в editable-режиме, чтобы команда todo стала доступна в терминале:

pip install -e .

Настройка

Скопируйте пример файла с переменными окружения и при необходимости поправьте путь к хранилищу:

cp .env.example .env
Переменная Описание По умолчанию
TODO_FILE Путь к JSON-файлу со списком задач. ~/.todo-cli/tasks.json

Также путь можно задать на каждый вызов через флаг --file.

Использование

После pip install -e . доступна команда todo. Без установки можно запускать модуль напрямую: python -m todo_cli.

Добавить задачу

todo add "Написать README для портфолио"

Посмотреть список задач

todo list
# показать только незавершённые задачи
todo list --pending

Пример вывода:

  1. [ ] Написать README для портфолио  (2026-04-24T10:21:03)
  2. [x] Купить молоко                  (2026-04-24T10:22:11)

Завершить задачу

todo done 1

Удалить задачу

todo remove 2

Удалить все задачи

todo clear

Использовать свой файл (переопределяет TODO_FILE)

todo --file ./tasks.json add "Попробовать todo-cli"
todo --file ./tasks.json list

Версия и справка

todo --version
todo --help
todo add --help

Запуск тестов

pip install -r requirements.txt
pytest

Все тесты должны пройти:

tests/test_cli.py ......                                                 [ 35%]
tests/test_storage.py ...........                                        [100%]

Как это работает

  • todo_cli/cli.py собирает парсер argparse с подкомандами (add, list, done, remove, clear) и передаёт управление слою хранения.
  • todo_cli/storage.py читает и пишет задачи в JSON. Путь к файлу определяется по приоритету: аргумент --file → переменная окружения TODO_FILE → значение по умолчанию ~/.todo-cli/tasks.json.
  • todo_cli/models.py описывает небольшой датакласс Task с полями id, title, done и created_at.

Лицензия

MIT

About

Консольный менеджер задач(argparse)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages