Загрузите файл в Gist с помощью bash
Я обычно вставляю отчеты об ошибках и журналы на Gist в Github для обмена соответствующей отладочной информацией программирования. У Gist нет кнопки для загрузки файла. Поэтому иногда не так удобно копировать и вставлять ваши большие errorreports в gists textarea для ввода.
есть ли способ загрузить файл из командной строки в новый Gist в вашей учетной записи Gist?
также создание временного репозитория git для файла для загрузки поможет, я автоматизировал бы это в скрипте.
в конце концов, я хотел бы автоматизировать публикацию отладочной информации моего проекта программирования на github с одним скриптом bash
5 ответов
здесь это решение, которое работает для меня на Bash / Dash для создания аноним gist (очень вероятно, не пуленепробиваемый):
# 0. Your file name
FNAME=some.file
# 1. Somehow sanitize the file content
# Remove \r (from Windows end-of-lines),
# Replace tabs by \t
# Replace " by \"
# Replace EOL by \n
CONTENT=$(sed -e 's/\r//' -e's/\t/\t/g' -e 's/"/\"/g' "${FNAME}" | awk '{ printf( "\n") }')
# 2. Build the JSON request
read -r -d '' DESC <<EOF
{
"description": "some description",
"public": true,
"files": {
"${FNAME}": {
"content": "${CONTENT}"
}
}
}
EOF
# 3. Use curl to send a POST request
curl -X POST -d "${DESC}" "https://api.github.com/gists"
Если вам нужно создать gist, связанный с вашей учетной записью github, (для базовой аутентификации) замените последнюю строку на:
curl -u "${GITHUB_USERNAME}" -X POST -d "${DESC}" "https://api.github.com/gists"
для более продвинутых схем аутентификации см. https://developer.github.com/v3/#authentication
см.https://github.com/defunkt/gist
Это рубиновый скрипт, который можно использовать из командной строки.
вы должны иметь возможность создать новый Gist, используя GitHub API для создания Gist:
POST /gists
вы найдете различные сценарии, использующие этот API, например:
- этой суть.el функция emacs.
- этой PHP скрипт
- этой
curl
команда
даже редактор GitHub Атом.Ио имеет суть-это функция.
основываясь на ответе Сильвена Леру, мы можем заменить шаги по дезинфекции и строительству json, используя jq не инструмент командной строки:
$ jq -Rs '{"description": "some description", "public": true, "files": {"'$FNAME'": {"content": .}}}' $FNAME | curl -X POST -d @- "https://api.github.com/gists"
или, с проверкой подлинности:
$ jq -Rs '{"description": "some description", "public": true, "files": {"'$FNAME'": {"content": .}}}' $FNAME | curl -u "${GITHUB_USERNAME}" -X POST -d @- "https://api.github.com/gists"
для маршрутизаторов с ограниченными оболочками busybox ash я создал это shell скрипт post и патч gister. Использование:$ pgist my_file_to_post_or_patch_to_gist.extension
нет необходимости запоминать длинные идентификаторы gist. Этот gister закодирован для автоматического поиска соответствующего идентификатора gist. Ограничения:
- до 30 (может быть, 100) gists в вашем аккаунте
- до 300 файлов на gist
- уникальные имена файлов для всех ваших файлов 30×300 gist
- это не в состоянии сообщение / патч из-за "проблемы с разбором JSON"
пример установки
curl -O https://gist.githubusercontent.com/ProBackup-nl/3971a45b21749cfff6c0069d3dad1dde/raw/pgist.sh && chmod 755 pgist.sh && mv pgist.sh /opt/usr/sbin/pgist
зависимости
- на GitHub OAuth-токен
jq
sed
awk
-
curl
иca-certificates
чтобы создать допустимую цепочку сертификатов вместо
(60) проблема с сертификатом SSL: невозможно получить локальный сертификат эмитента