{"id":22382913,"url":"https://github.com/fey/hexlet-assignments","last_synced_at":"2025-03-26T19:44:20.088Z","repository":{"id":117282296,"uuid":"536912564","full_name":"fey/hexlet-assignments","owner":"fey","description":"Hexlet assignments","archived":false,"fork":false,"pushed_at":"2024-03-15T12:54:00.000Z","size":1126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T01:51:38.685Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-15T07:28:25.000Z","updated_at":"2022-09-19T12:37:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"b6fa95e3-9e7a-4da2-9939-bd4711ad6bb2","html_url":"https://github.com/fey/hexlet-assignments","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fhexlet-assignments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fhexlet-assignments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fhexlet-assignments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fhexlet-assignments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fey","download_url":"https://codeload.github.com/fey/hexlet-assignments/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245727639,"owners_count":20662553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T00:42:19.847Z","updated_at":"2025-03-26T19:44:20.065Z","avatar_url":"https://github.com/fey.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Домашние задания\n\nРабота над домашними заданиями происходит на компьютере студента. \n\nДля каждого домашнего задания мы подготовили отдельный набор файлов. Обычно в нем содержится:\n\n* Текст задачи (файл README) \n* Тесты кода\n* Линтер\n* Описание зависимостей \n* Пустой файл, в который студент запишет свое решение\n\nВсе эти файлы хранятся на нашем Gitlab, а утилита *Hexlet CLI* выступает интерфейсом для работы с этой системой.\n\n## Команды в утилите Hexlet CLI\n\nУтилита вызывается по имени *hexlet*, и содержит несколько команд:\n\n* *assignments init* — создает репозиторий с именем *hexlet-assignments* в профиле студента на Github\n    \n    В этот репозиторий будут отправляться все домашние задания, которые вы выполняете на Хекслете, независимо от учебной программы. Для всех учебных программ репозиторий будет один. Имя *hexlet-assignments* для репозитория должно быть свободно.\n\n    Одновременно с созданием репозитория команда *assignments init* совершает еще два действия: \n    \n    * Создает конфигурационный файл\n    * Создает директорию *Hexlet/hexlet-assignments* в домашней директории на компьютере студента\n\n* *assignment download* — скачивает домашнее задание\n    \n    Эта команда обращается к общей директории *Hexlet/hexlet-assignments* и создает там новые файлы:\n    \n     * Поддиректорию с именем курса\n     * Поддиректорию с домашним заданием\n       \n    Теперь там будет храниться все необходимое для домашнего задания: файлы для решения, текст задачи, тесты, линтер и прочее. \n    То же самое можно сделать и без команды: надо зайти на страницу домашней работы, найти ссылку на нужное задание и скачать его.\n    \n* *assignment submit* — отправляет текущее домашнее задание в репозиторий на GitHub\n\n    Выполненное задание нужно отправить на проверку — именно это и делает команда *submit*.\n    Она выполняется из локальной директории домашней работы и пушит в ваш удаленный репозиторий все файлы, связанные с текущим заданием. Когда решение студента готово, тесты и линтер локально пройдены, то можно выполнить *submit*. На GitHub также подключены тесты и линтер. \n\n* *assignment reset* — скачивает новую версию домашнего задания.\n\n    Если уже во время выполнения домашнего задания появляется новая версия упражнения, нужно выполнить *reset*, чтобы повторно скачать ее.\n\nКоманды *assignment download* и *assignment reset* создают резервную копию домашнего задания, над которым идет работа. Если выполнить команду *assignment reset* или *assignment download*, то проделанная работа не потеряется. Старая версия с вашими наработками сохранится в новой директории с текущими датой и временем в названии.\n\n### Аргументы\n\nУ команд *assignment download* и *assignment reset* есть аргумент *lesson-url*. Ниже мы покажем, как он используется и где взять нужные значения:\n\n* *lesson-url* — адрес урока с домашним заданием. Можно взять его из адресной строки урока или скопировать уже готовую команду для скачивания на странице домашнего задания\n\n### Опции\n\n* *--github-token* – *Personal access token* из GitHub\n* *--hexlet-token* – Ваш персональный токен Хекслета\n\n### Использование\n\nПеред тем, как начать работу с домашним заданием, нужно выполнить инициализацию проекта. Это можно сделать с помощью команды *hexlet assignments init*. У нее есть несколько опций:\n\n* *--github-token* – Обязательная. *Personal access token* из GitHub. [Создайте](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) свой Personal access token [здесь](https://github.com/settings/tokens). При создании токена сделайте его бессрочным и проставьте разрешения на *repo* и *workflow*\n* *--hexlet-token* – Обязательная. Ваш персональный токен Хекслета. Этот токен автоматически подставлен в команду на странице домашнего задания\n* *--hexlet-dir* – Необязательная. Директория, в которую будут скачиваться домашние задания. По умолчанию это будет директория Hexlet в вашей домашней директории\n\nПерейдите на страницу домашней работы, которую нужно скачать. На странице по ссылке «Инициализация утилиты» идентификатор *hexlet-token* уже подставлен в команду для инициализации:\n\n```bash\nhexlet assignments init --github-token=\u003ctoken from github\u003e --hexlet-token=\u003cyour hexlet token\u003e\n```\n\nДля инициализации проекта остаётся скопировать команду, вставить свой Personal access token из GitHub и выполнить ее:\n\n```bash\n# Можно вызывать из любого каталога\n\nhexlet assignments init --github-token=\u003ctoken from github\u003e --hexlet-token=\u003cyour hexlet token\u003e\n```\n\nИнициализацию нужно выполнить один раз перед скачиванием первой домашней работы. Если потребуется изменить расположение локальной директории с домашними работами или восстановить настройки и конфиг локального репозитория, инициализацию нужно выполнить повторно.\n\nДалее можно переходить с выполнению домашней работы. Для команд *assignment download* и *assignment reset* аргументом нужно указать адрес урока с домашним заданием. Адрес урока можно скопировать из адресной строки. Также вы можете взять уже готовую команду на скачивание со страницы домашнего задания:\n\n```bash\n# Эта команда скачивает на компьютер домашнее задание с указанным lesson-url\nhexlet assignment download https://ru.hexlet.io/courses/java-collections/lessons/lists/assignment_unit\n```\n\n```bash\n# Если во время выполнения появилась новая версия\n# Эта команда скачивает новую версию домашнего задания\n# Предыдущую версию и ваши наработки она скопирует в новую директорию\nhexlet assignment reset https://ru.hexlet.io/courses/java-collections/lessons/lists/assignment_unit\n```\n\nКоманда *assignment submit* выполняется без аргументов из директории выполненного домашнего задания или любой его поддиректории:\n\n```bash\n# Отправляет выполненное домашнее задание на GitHub\n# Выполняются команды git add, commit, push\nhexlet assignment submit\n```\n\nЕсли вы хотите вспомнить весь список актуальных команд, можно вывести справочную информацию:\n\n```bash\nhexlet assignments --help\n```\n\n```bash\nhexlet assignment --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffey%2Fhexlet-assignments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffey%2Fhexlet-assignments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffey%2Fhexlet-assignments/lists"}