Обновление файла для быстрого извлечения с помощью интерфейса командной строки github

#github-api #github-cli

Вопрос:

В настоящее время в пользовательском интерфейсе github пользователь может редактировать файл и создавать новую ветвь одним действием. Это также можно сделать через api github, используя что-то вроде этого:

 curl 'https://github.com/lt;my_orggt;/lt;my_repogt;/tree-save/master/lt;path_to_filegt;'   -H 'content-type: application/x-www-form-urlencoded'   --data-raw 'authenticity_token=lt;generated_tokengt;amp;filename=lt;filenamegt;amp;new_filename=lt;filenamegt;amp;content_changed=trueamp;value=lt;new_contents_of_filegt;amp;message=Updated file in my repoamp;placeholder_message=Update lt;filenamegt;amp;description=amp;commit-choice=quick-pullamp;target_branch=lt;new_branch_namegt;amp;quick_pull=masteramp;guidance_task=amp;commit=lt;target_commit_checksumgt;amp;same_repo=1amp;pr='  

То, что я хотел бы иметь возможность сделать, — это выполнить то же действие с помощью github cli* (gh). Я попытался использовать следующие команды:

 gh api lt;my_orggt;/lt;my_repogt;/tree-save/master/lt;path_to_filegt; -F "filename=lt;filenamegt;" -F ...  

и

 gh api repos/lt;my_orggt;/lt;my_repogt;/contents/lt;path_to_filegt; -F "filename=lt;filenamegt;" -F ...  

В обоих случаях (и во многих вариантах этих вариантов) я получаю 404** обратно. Есть идеи, что я делаю не так? Позволяет ли cli github даже использовать функции, разрешенные в приведенном выше завитке?

* Для тех, кому интересно, я хочу использовать CLI из-за того, как он обрабатывает аутентификацию, и это безгражданство. Я не могу сгенерировать токен для использования, как в завитке выше. И, из-за множества проблем, я также не могу клонировать репо локально.

** Я могу получить файл просто отлично, используя простую команду GET (вторая команда выше без флагов «- F»).

Ответ №1:

После прочтения документации, а затем проверки путем изменения учетных данных, похоже, возникла проблема с разрешениями. Очевидно, что по соображениям безопасности, если используется токен, который не соответствует требуемым разрешениям, вместо 403 возвращается 404.

Интересно, что я все еще могу использовать завиток выше через браузер. Итак, теперь мне нужно выяснить, почему токен gh cli не имеет тех же разрешений, что и мой пользователь.