cu

module
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 18, 2026 License: MIT

README

CU - Central University CLI Tool

Go Version License

CU - это инструмент командной строки для взаимодействия с API Central University. Утилита позволяет получать информацию о курсах, управлять аутентификацией и синхронизировать данные.

Установка

Одной командой (macOS, Linux: Ubuntu/Fedora, amd64/arm64)
curl -fsSL https://raw.githubusercontent.com/EgorTarasov/cu/main/install.sh | sh

Скрипт скачивает последний релиз с GitHub, проверяет sha256, ставит бинарь в ~/.local/bin/cu и снимает quarantine-атрибут на macOS. Опции:

# Конкретная версия
curl -fsSL https://raw.githubusercontent.com/EgorTarasov/cu/main/install.sh | CU_VERSION=v0.1.5 sh

# Системная установка
curl -fsSL https://raw.githubusercontent.com/EgorTarasov/cu/main/install.sh | CU_INSTALL_DIR=/usr/local/bin sh
Бинарь вручную

Скачайте подходящий архив со страницы Releases, сверьте sha256 по checksums.txt, распакуйте cu куда-то в PATH (~/.local/bin или /usr/local/bin), сделайте исполняемым.

Через go install

Если в системе уже есть Go ≥ 1.26:

go install github.com/EgorTarasov/cu/cmd/cu@latest

Бинарь окажется в $(go env GOPATH)/bin/cu.

Из исходного кода
git clone https://github.com/EgorTarasov/cu.git
cd cu
make install         # собирает в bin/cu и копирует в $GOPATH/bin
# или просто:
make build           # bin/cu
Проверка
cu --version
cu --help

Аутентификация

Для работы утилиты необходимо пройти аутентификацию. Есть два способа:

Способ 1 — Авторизация через браузер (рекомендуется)
cu login

Команда откроет Chrome, перенаправит на страницу входа Keycloak. После успешного логина cookie будет автоматически сохранён в ~/.cu-cli/cookie и подхвачен всеми последующими командами.

Если cookie истёк — просто выполните cu login ещё раз.

Дополнительные флаги:

Флаг По умолчанию Описание
--timeout 5m Таймаут ожидания завершения входа

Требование: необходим установленный Google Chrome или Chromium. Если Chrome установлен в нестандартном месте, укажите путь через переменную CHROME_PATH.

  1. Откройте браузер и войдите в Central University
  2. Откройте Developer Tools (F12) -> вкладка Network
  3. Обновите страницу и найдите любой запрос к API
  4. Скопируйте значение bff.cookie из заголовков
export CU_BFF_COOKIE="ваше-значение-cookie"

Переменная окружения CU_BFF_COOKIE имеет приоритет над сохранённым файлом.

Команды

Команда Описание Документация
cu login Авторизация через браузер docs/login.md
cu courses Список курсов с ID docs/courses.md
cu deadlines [course] Ближайшие дедлайны docs/deadlines.md
cu grades [course] Оценки и ведомость docs/grades.md
cu materials <course> Скачать PDF и ссылки на материалы docs/materials.md
cu task <id> Детали задания docs/task.md

Курс можно указать по ID (901) или по названию (go, sql, алгоритмы) — поиск регистронезависимый.

Дополнительные команды fetch

fetch помогает получить данные напрямую из API:

  • cu fetch student — профиль текущего студента
  • cu fetch course-summary <course-id> — краткая информация о курсе
  • cu fetch theme <theme-id> — краткая информация о теме
  • cu fetch longread <longread-id> — краткая информация о лонгриде
Обновление MCP-сервера

После make install запущенные хосты (Claude Code, IDE) продолжают держать старый процесс — новые тулы и фиксы не подхватятся. После переустановки перезапустите сервер в хосте:

claude mcp restart cu   # или /mcp reconnect в Claude Code
Быстрый пример
# Что горит?
cu deadlines

# Оценки по Go
cu grades go

# Скачать все лекции и семинары
cu materials алгоритмы --path ./downloads

# Подробности по заданию
cu task 1536681

Переменные окружения

Переменная Описание Обязательная
CU_BFF_COOKIE Cookie аутентификации (приоритет над файлом) Нет
CHROME_PATH Путь к Chrome/Chromium (если не стандартный) Нет

Устранение неполадок

Cookie validation failed: bff.cookie is invalid or expired: 403

Решение: Выполните cu login для получения нового cookie.

Аутентификация не найдена
No authentication found.

Option 1 — login via browser:
  cu login

Option 2 — set cookie manually:
  export CU_BFF_COOKIE='your-cookie-value-here'

Решение: Выполните cu login или установите переменную окружения CU_BFF_COOKIE.

Chrome не найден
Chrome not found. Install Google Chrome or set CHROME_PATH environment variable

Решение: Установите Google Chrome или укажите путь через CHROME_PATH.

Ошибки сети

Убедитесь, что у вас есть доступ к интернету и серверы Central University доступны.

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

# Запуск всех тестов
go test ./...

# Запуск тестов с подробным выводом
go test -v ./internal/cu

Разработка

Структура проекта
.
├── .github/workflows/ # GitHub Actions для CI/CD
├── cmd/cu/           # Основное приложение CLI
├── internal/
│   ├── cli/          # Команды CLI (Cobra)
│   └── cu/           # Клиент API Central University
├── integration_tests/ # Интеграционные тесты
├── build/            # Собранные бинарные файлы
├── Makefile          # Задачи для разработки
├── go.mod
├── go.sum
└── README.md
Разработка с Makefile
# Показать все доступные команды
make help

# Запустить тесты
make test

# Собрать для текущей платформы
make build

# Собрать для всех платформ
make build-all

# Запустить приложение
make run ARGS='fetch courses'
Ручная сборка
# Сборка для текущей платформы
go build -o cu ./cmd/cu

# Кросс-компиляция
GOOS=windows GOARCH=amd64 go build -o cu.exe ./cmd/cu
GOOS=linux GOARCH=amd64 go build -o cu-linux ./cmd/cu
GOOS=darwin GOARCH=amd64 go build -o cu-macos ./cmd/cu
CI/CD

Проект использует GitHub Actions:

  • test.yml — тесты на Go 1.25, покрытие кода, go vet
  • build.yml — сборка для 6 платформ, контрольные суммы SHA256, релизы по тегам
  • pr.yml — форматирование, тесты, Gosec, golangci-lint

Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для фичи (git checkout -b feature/amazing-feature)
  3. Сделайте коммит изменений (git commit -m 'Add amazing feature')
  4. Запушьте ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для деталей.

Roadmap

  • Авторизация через браузер (chromedp)
  • Получение списка курсов
  • Скачивание PDF-материалов
  • Просмотр дедлайнов
  • Просмотр оценок и ведомости
  • Поиск курса по названию
  • Скачивание лонгридов с GitLab
  • Интерактивный режим
  • Уведомления о приближающихся дедлайнах

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL