/hexlet-assignments

Hexlet assignments

Primary LanguageJava

Домашние задания

Работа над домашними заданиями происходит на компьютере студента.

Для каждого домашнего задания мы подготовили отдельный набор файлов. Обычно в нем содержится:

  • Текст задачи (файл README)
  • Тесты кода
  • Линтер
  • Описание зависимостей
  • Пустой файл, в который студент запишет свое решение

Все эти файлы хранятся на нашем Gitlab, а утилита Hexlet CLI выступает интерфейсом для работы с этой системой.

Команды в утилите Hexlet CLI

Утилита вызывается по имени hexlet, и содержит несколько команд:

  • assignments init — создает репозиторий с именем hexlet-assignments в профиле студента на Github

    В этот репозиторий будут отправляться все домашние задания, которые вы выполняете на Хекслете, независимо от учебной программы. Для всех учебных программ репозиторий будет один. Имя hexlet-assignments для репозитория должно быть свободно.

    Одновременно с созданием репозитория команда assignments init совершает еще два действия:

    • Создает конфигурационный файл
    • Создает директорию Hexlet/hexlet-assignments в домашней директории на компьютере студента
  • assignment download — скачивает домашнее задание

    Эта команда обращается к общей директории Hexlet/hexlet-assignments и создает там новые файлы:

    • Поддиректорию с именем курса
    • Поддиректорию с домашним заданием

    Теперь там будет храниться все необходимое для домашнего задания: файлы для решения, текст задачи, тесты, линтер и прочее. То же самое можно сделать и без команды: надо зайти на страницу домашней работы, найти ссылку на нужное задание и скачать его.

  • assignment submit — отправляет текущее домашнее задание в репозиторий на GitHub

    Выполненное задание нужно отправить на проверку — именно это и делает команда submit. Она выполняется из локальной директории домашней работы и пушит в ваш удаленный репозиторий все файлы, связанные с текущим заданием. Когда решение студента готово, тесты и линтер локально пройдены, то можно выполнить submit. На GitHub также подключены тесты и линтер.

  • assignment reset — скачивает новую версию домашнего задания.

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

Команды assignment download и assignment reset создают резервную копию домашнего задания, над которым идет работа. Если выполнить команду assignment reset или assignment download, то проделанная работа не потеряется. Старая версия с вашими наработками сохранится в новой директории с текущими датой и временем в названии.

Аргументы

У команд assignment download и assignment reset есть аргумент lesson-url. Ниже мы покажем, как он используется и где взять нужные значения:

  • lesson-url — адрес урока с домашним заданием. Можно взять его из адресной строки урока или скопировать уже готовую команду для скачивания на странице домашнего задания

Опции

  • --github-tokenPersonal access token из GitHub
  • --hexlet-token – Ваш персональный токен Хекслета

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

Перед тем, как начать работу с домашним заданием, нужно выполнить инициализацию проекта. Это можно сделать с помощью команды hexlet assignments init. У нее есть несколько опций:

  • --github-token – Обязательная. Personal access token из GitHub. Создайте свой Personal access token здесь. При создании токена сделайте его бессрочным и проставьте разрешения на repo и workflow
  • --hexlet-token – Обязательная. Ваш персональный токен Хекслета. Этот токен автоматически подставлен в команду на странице домашнего задания
  • --hexlet-dir – Необязательная. Директория, в которую будут скачиваться домашние задания. По умолчанию это будет директория Hexlet в вашей домашней директории

Перейдите на страницу домашней работы, которую нужно скачать. На странице по ссылке «Инициализация утилиты» идентификатор hexlet-token уже подставлен в команду для инициализации:

hexlet assignments init --github-token=<token from github> --hexlet-token=<your hexlet token>

Для инициализации проекта остаётся скопировать команду, вставить свой Personal access token из GitHub и выполнить ее:

# Можно вызывать из любого каталога

hexlet assignments init --github-token=<token from github> --hexlet-token=<your hexlet token>

Инициализацию нужно выполнить один раз перед скачиванием первой домашней работы. Если потребуется изменить расположение локальной директории с домашними работами или восстановить настройки и конфиг локального репозитория, инициализацию нужно выполнить повторно.

Далее можно переходить к выполнению домашней работы. Для команд assignment download и assignment reset аргументом нужно указать адрес урока с домашним заданием. Адрес урока можно скопировать из адресной строки. Также вы можете взять уже готовую команду на скачивание со страницы домашнего задания:

# Эта команда скачивает на компьютер домашнее задание с указанным lesson-url
hexlet assignment download https://ru.hexlet.io/courses/java-collections/lessons/lists/assignment_unit
# Если во время выполнения появилась новая версия
# Эта команда скачивает новую версию домашнего задания
# Предыдущую версию и ваши наработки она скопирует в новую директорию
hexlet assignment reset https://ru.hexlet.io/courses/java-collections/lessons/lists/assignment_unit

Команда assignment submit выполняется без аргументов из директории выполненного домашнего задания или любой его поддиректории:

# Отправляет выполненное домашнее задание на GitHub
# Выполняются команды git add, commit, push
hexlet assignment submit

Если вы хотите вспомнить весь список актуальных команд, можно вывести справочную информацию:

hexlet assignments --help
hexlet assignment --help