[Дополнительное] Реализовать автоматическое подключение репозитория к github
Основы работы с терминалом / подсказка к 5 задачке
Чтобы создать репозиторий автоматически нам потребуется установить утилиту для работы с вебом
sudo apt install curl
теперь можно общаться с гитхабом, например, запросить список репозиториев
curl -u "ИМЯ_ВАШЕГО_GITHUB_АККАУНТА" https://api.github.com/repositories
Правда надо будет правда ввести пароль от юзера, чтобы увидеть данные.
Чтобы бы получить возможность создавать репозитории надо создать токен для авторизации
затем скролим вниз и находим там Developer Settings
вводим имя и ставим галку
ну и тыкаем внизу
откроется новое окно с токеном, который надо скопировать, сделать это можно ровно один раз, посмотреть его второй раз не выйдет
теперь можно создать репозиторий, для этого пишем
curl -X POST -u "ИМЯ_ВАШЕГО_GITHUB_АККАУНТА:ВАШ_ТОКЕН" \
https://api.github.com/user/repos \
-d '{"name":"test124"}' > repo.json
результат сохранится в файлик repo.json, там будет что-то такое
{
"id": 458448401,
"node_id": "R_kgDOG1NeEQ",
"name": "test124",
"full_name": "SevenLines/test124",
"private": false,
"owner": {
"login": "SevenLines",
"id": 5500999,
"node_id": "MDQ6VXNlcjU1MDA5OTk=",
"avatar_url": "https://avatars.githubusercontent.com/u/5500999?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/SevenLines",
"html_url": "https://github.com/SevenLines",
"followers_url": "https://api.github.com/users/SevenLines/followers",
"following_url": "https://api.github.com/users/SevenLines/following{/other_user}",
"gists_url": "https://api.github.com/users/SevenLines/gists{/gist_id}",
"starred_url": "https://api.github.com/users/SevenLines/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/SevenLines/subscriptions",
"organizations_url": "https://api.github.com/users/SevenLines/orgs",
"repos_url": "https://api.github.com/users/SevenLines/repos",
"events_url": "https://api.github.com/users/SevenLines/events{/privacy}",
"received_events_url": "https://api.github.com/users/SevenLines/received_events",
"type": "User",
"site_admin": false
},
// ...
}
чтобы вытащить конкретное поле то можно поставить еще одну утилиту для работы с json форматом json
sudo apt install jq
можно, например, вывести ssh_url, который потом можно использовать при привязке репозитория вот так:
jq ".ssh_url" -r repo.json
А имя пользователя например вот так:
jq ". owner.login" -r repo.json
Как правило хочется результат сохранить в переменную для этого вызывайте функцию вот так:
SSH_URL=$(jq ".ssh_url" -r repo.json)
Ну а чтобы подключить ключик надо использовать следующий запрос к серверу github
KEY=$(cat ~/.ssh/path_to_key.pub)
curl -u "$USER:$TOKEN" -X POST https://api.github.com/repos/$USER/$REPO_NAME/keys -d "{\"key\":\"$KEY\"}"
В принципе, зная это, можно собрать полностью автоматизированный генератор репозиториев =)