Skip to content

Repository files navigation

LIT: Logging Integrated Timekeeper

Python Version License Coverage

Консольная утилита для удобного управления рабочими логами с интеграцией Jira и GitLab

┌LIT>────────┐
│ TSK 8h ─○─ │ 
└─────────\\─┘

LIT — это консольная утилита для удобного управления ворклогами с интеграцией Jira и GitLab, вдохновлённая поведением Git.

Она помогает быстро и удобно вносить записи рабочего времени, предварительно сохраняя их в локальном файле, а затем отправлять в Jira. Помимо основных возможностей логирования, LIT поддерживает автодополнение команд, для быстрой и комфортной работы.

⏩ Простой старт

CLI вариант:

lit add TASK-1752 4 "Убрал из меню ссылку О компании"
lit push

Интерактивный вариант:

lit init   # Настраиваем доступы к Jira и GitLab 
lit pull   # Загружаем справочники для подсказок
lit        # Заходим в интерактивный режим 

Установить или скачать

🐧 Linux Download

curl -LO https://github.com/LIT-Tools/lit/releases/latest/download/lit-linux.tar.gz \
&& tar -xzf lit-linux.tar.gz \
&& chmod +x lit \
&& sudo mkdir -p /usr/local/bin \
&& sudo mv lit /usr/local/bin/ \
&& rm lit-linux.tar.gz

🍏 Mac Download

curl -LO https://github.com/LIT-Tools/lit/releases/latest/download/lit-macos.tar.gz \
&& tar -xzf lit-macos.tar.gz \
&& chmod +x lit \
&& (xattr -d com.apple.quarantine lit 2>/dev/null || true) \
&& sudo mkdir -p /usr/local/bin \
&& sudo mv lit /usr/local/bin/ \
&& rm lit-macos.tar.gz

🪟 Windows Download

irm https://github.com/LIT-Tools/lit/releases/latest/download/lit-windows.zip -OutFile lit-windows.zip
Expand-Archive -Path lit-windows.zip -DestinationPath . -Force
$installPath = "$env:USERPROFILE\lit"
New-Item -Path $installPath -ItemType Directory -Force
Move-Item -Path .\lit.exe -Destination $installPath -Force
$env:PATH += ";$installPath"
[Environment]::SetEnvironmentVariable("PATH", $env:PATH, "User")
rm lit-windows.zip

🚀 Основные команды

Добавление записи

lit add <код_задачи> <время> "<сообщение>" [опции]

# Поддерживаемые форматы времени:
# 1h (1 час) | 30m (30 минут) | 1d (8 часов) | 1h 15m | 4 (4 часа)

# Примеры:
lit add TASK-1752 4 "Убрал из меню ссылку О компании"
lit add TASK-15 "1h 30m" "Исправление крэша" -d 25.12.2023 -t 10:00
lit add BUG-404 2d "Рефакторинг модуля"

Параметры:

  • код_задачи - код задачи в Jira (формат: XXX-123)
  • время - продолжительность работы (форматы: 1h, 30m, 2d, '1h 30m')
  • сообщение - описание выполненной работы

Опции:

  • -d --date - дата (по умолчанию: текущая)
  • -t --time - время начала (по умолчанию: текущее)

Интерактивный режим с автодополением

lit
# lit>

Просмотр статуса

lit status

Выводит список всех подготовленных записей с группировкой по датам.

Отправка логов

lit push

Отправляет все подготовленные записи в Jira после подтверждения.

Редактирование записей

lit edit

Открывает файл .litstore в системном редакторе для ручного редактирования.

Синхронизация данных

lit pull [--jira] [--gitlab]
  • -j --jira - загрузить задачи из Jira
  • -g --gitlab - загрузить коммиты из GitLab

Вспомогательные команды

-v --version - версия приложения
-h --help - описание команд

⚙️ Конфигурация

lit init - вызывает интерактивное создание конфигурационного файла

Пример ~/.lit/.litconfig:

[user]
login = user
email = user@domain.com

[jira]
login = user
email = user@domain.com
pass = password
url = https://jira.com
days = 30

[gitlab]
login = user
email = user@domain.com
url = https://gitlab.com
token = ваш_личный_токен
days = 30

📂 Формат хранения данных

Подготовленные записи хранятся в текстовом файле .litstore:

12.02.2025 [10:00 - 14:00] TASK-1752 4h `Убрал из меню ссылку О компании`
25.12.2023 [14:30 - 15:00] TASK-15 30m `Исправление крэша при загрузке`

Отправленные логи сохраняются в .lithistory с ID ворклога:

12.02.2025 [10:00 - 14:00] TASK-1752 4h `...` # 779121

📦 Установка из исходников

🍏 Mac

# Установка Poetry (рекомендуется через Homebrew)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install poetry

#  Для управления версиями Python (опционально, но рекомендуется)
brew install pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

# Установка нужной версии Python (пример для 3.12)
pyenv install 3.12
pyenv global 3.12

git clone https://github.com/LIT-Tools/lit.git
cd lit

poetry install
source .venv/bin/activate  # Для bash/zsh

🐧 Linux

  1. Установите системные зависимости
# Для Debian/Ubuntu:
sudo apt-get update && sudo apt-get install -y \
    python3 python3-pip python3-venv git curl \
    build-essential libssl-dev zlib1g-dev

# Для Fedora/RHEL:
sudo dnf install -y python3 python3-pip python3-virtualenv git curl \
    gcc openssl-devel bzip2-devel libffi-devel zlib-devel
  1. Установите Poetry
curl -sSL https://install.python-poetry.org | python3 -
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
  1. Установите pyenv (опционально, для управления версиями Python)
curl https://pyenv.run | bash

# Добавьте в ~/.bashrc:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

# Установите нужную версию Python (пример):
pyenv install 3.12
pyenv global 3.12
  1. Клонируйте репозиторий и установите зависимости
git clone https://github.com/LIT-Tools/lit.git
cd lit
poetry install
poetry shell  # или source .venv/bin/activate

🪟 Windows

PowerShell:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

* В PS может потребоваться разрешение на запуск локальных скриптов

git clone https://github.com/LIT-Tools/lit.git
cd lit
poetry install
.\.venv\Scripts\activate
# or
poetry env activate 

🔨 Сборка

Windows / Linux / macOS

poetry run pyinstaller lit.spec

🛠 Тестирование

  1. Установите dev-зависимости:
poetry install --with dev
  1. Запустите тесты:
coverage run -m unittest discover
coverage report -m
  1. Откройте отчёт:

Windows

coverage html; Start-Process "htmlcov/index.html"

Linux / Mac

coverage html && open htmlcov/index.html

🔮 Планы развития

  • Исправить подсказки ключей для команды add, убрать ложные срабатывания
  • Настроить сборку бинарника
  • Опубликовать в интернете для установки
  • Настроить версионирование
  • Добавить проверку свежей версии и обновление
  • Рефакторинг дублирующего кода
  • Рефакторинг архитектуры под классический питонячий формат
  • Повысить покрытие тестами 80+%
  • Рефакторинг тестов
  • Понизить версию питона
  • Добавить мульти профили что бы подключаться к разным контурам

🤔 Возможное функции, но под вопросом:

  • Настройка конфигурации из консоли lit config показывает конфиг lit config add <key> <value> добавляет запись

  • В кофиге есть поле start_time с непустым значением и пользователь не предал значение через ключ -h то используем start_time как начальное время лога. Это защита если спец будет вносить логи поздно ночью

  • Предупреждение если не была произведение конфигурация, файлй ~/.lit/.litconfig нет.

  • Сохронять историю команд в интерактивном режиме

⚠️ Особенности работы валидации

  • Время начала позже 19:00 или раньше 5:00 вызывает предупреждение
  • При указании несуществующей задачи в автодополнении, появится подтверждение
  • Поддержка сложных временных форматов (1d = 8h, 1h 15m и т.д.)

❓ Частые вопросы

Q: Как указать время больше 24 часов?
A: Используйте дни (d):

lit add TASK-777 3d "Марафон разработки"

Разработано с ❤️ для упрощения рутинных задач
Лицензия: MIT

About

LIT is a CLI utility for easy worklog management with Jira and GitLab integration, inspired by Git behavior.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages