Skip to content

s21toolkit/s21cli

Repository files navigation

s21cli 🗿👍

Консольный интерфейс для работы с платформой школы 21.

Установка

Пакет через npm (необходим Node.js >=20 версии):

npm install --global @s21toolkit/cli

Независимый исполняемый файл через скрипт (доступны не для всех платформ):

curl -fsSL https://raw.githubusercontent.com/s21toolkit/s21cli/master/scripts/install_binary.sh | sh

Important

По умолчанию устанавливает s21cli в $HOME/.s21. Задать свой путь установки можно через переменную окружения S21_HOME. Эта переменная так же будет использоваться для обновления, поэтому рекомендуется сделать её постоянной.

Независимый исполняемый файл вручную: [Релизы]

Настройка

Поддерживаемые настройки:

параметр: <тип_данных> # Описание [значение по умолчанию]

username: <string> # Логин (с почтой) от платформы
password: <string> # Пароль от платформы

token: <string> # Токен API (используется вместо логина и пароля)

prDirectory: <string> # Папка для клонирования репозиториев пир ревью

debugRawErrors: <boolean> # Включает отображение детальной информации об ошибках [false]

cache:
  enabled: <boolean> # Выключает кеширование в значении `false` [true]
  local: <boolean> # Использует кеш из рабочей директории вместо глобального [false]
  flat: <boolean> # Запрещает создавать подпапки для кешей [false]
  zip: <boolean> # Архивирует кеш для уменьшения использования памяти [false]

Note

Аутентификация производится либо через логин/пароль, либо через токен (дополнительно можно указать SchoolID).

Если в конфигурации указан токен, использоваться будет он. При использовании готового токена он не будет обновляться автоматически. Если при аутентификации через токен не указан SchoolID, он будет запрошен.

Если токен не указан, будет использоваться логин/пароль. Если не указано ничего из вышеперечисленного произойдёт ошибка.

s21cli загружает настройки через из локального/глобального файлов конфигурации и из окружения. Локальный конфиг берётся из рабочей директории, глобальный из $HOME.

Файлы конфигурации являются скриптами на JS и должны именоваться .s21.js (либо .cjs/.mjs).

Пример заполнения .s21.mjs:

export default {
  username: "example@student.21-school.ru",
  password: "qwerty123",
  prDirectory: `${process.env.HOME}/school21/peer_reviews`
}

Переменные окружения должны иметь формат S21_<настройка>, например:

export S21_prDirectory=$HOME/school21/peer_reviews

Приоритет загрузки: Глобальные настройки < Локальные настройки < Окружение

То есть настройки из окружения перезаписывают настройки из файлов и тд.

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

s21 <...commands> [...args]

Команды

Для всех команд доступен флаг -h для получения справки.

  • s21
    • pr
      • link - Получает ссылки на репозиторий текущего пир ревью
      • clone - Клонирует проект текущего пир ревью в новую папку
      • list - Отображает список текущих пир ревью
    • wfs - Автоматическая запись на проверку для выбранного проекта (пока не работает для интенсивов)
    • project
      • info - Отображает информацию о выбранном проекте
    • test - Отправляет тестовый запрос к платформе
    • api - Выполняет указанный метод API, возвращает данные в формате JSON (см. s21docs/api-operations)
    • gql - Выполняет указанный GQL запрос, возвращает данные в формате JSON
    • auth - Выполняет аутентификацию по логину и паролю, возвращает токен и schoolId
    • update - Обновляет s21cli до последней версии (для бинарных релизов)
    • cache
      • clean - Очищает кеш