Загрузите файл в Gist с помощью bash
Я обычно вставляю отчеты об ошибках и журналы в Gist в Github, чтобы обменяться информацией о соответствующей отладочной информации. У Gist нет кнопки для загрузки файла. Поэтому иногда не так удобно копировать и вставлять большие сообщения об ошибках в gists textarea для ввода.
Есть ли способ загрузить файл из командной строки в новый Gist в вашей учетной записи Gist?
также создание временного хранилища git для загружаемого файла помогло бы, тогда я бы автоматизировал это в скрипте.
В конце я хотел бы автоматизировать отправку отладочной информации моего проекта программирования на github с одним скриптом bash
Ответы
Ответ 1
Вот решение, которое работает для меня на Bash/Dash для создания анонимного суждения (возможно, не пуленепробиваемого):
# 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($0 "\\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"
Если вам необходимо создать сущность, связанную с вашей учетной записью github (для базовой проверки подлинности), замените последнюю строку на:
curl -u "${GITHUB_USERNAME}" -X POST -d "${DESC}" "https://api.github.com/gists"
Для более сложных схем аутентификации см. Https://developer.github.com/v3/#authentication
Ответ 2
См. https://github.com/defunkt/gist
Это Ruby script, который можно использовать из командной строки.
Ответ 3
Вы должны создать новый Gist, используя API GitHub для создания Gist:
POST /gists
Вы найдете различные script, используя этот API, например:
Даже редактор GitHub Atom.io имеет gist- это функция.
![https://raw.githubusercontent.com/rpowelll/gist-it/master/media/screencast.gif]()
Ответ 4
Основываясь на ответе Сильвэна Леру, мы можем заменить шаги санитарии и 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"
Ответ 5
Вот сценарий Python, чтобы сделать то же самое. Он активно развивается мной. README довольно прост в деталях использования. Некоторые examples-
Получить список сущностей
gifc get 5
Создать сущность
- Создать интерактивно из редактора, такого как nano, vim или gedit
-
gifc create create.md -d "How to create a gist from cli" -i nano
- Непосредственно вводить содержимое из cli
-
gifc create create.md -d "How to create a gist from cli" -m '''If you want to create a gist from an existing file then you do the following- 'gifc create create.md -d "How to create a gist from cli" -f file.md''''
- Возьмите содержимое из файла
-
gifc create create.md -d "How to create a gist from cli" -f file.md
Обновите суть
-
Редактировать все (или некоторые) файлы итеративно
-
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -i vi
Вы можете получить идентификатор gist из метода get
из более раннего
-
Изменить описание
-
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -cd "New description"
Вы можете получить идентификатор gist из метода get
из более раннего
-
Редактировать содержимое файла в интерактивном режиме в редакторе, таком как nano, vim или gedit
-
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -f file_to_update.md
- Сделайте оба
-
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -f file_to_update.md -cd "New description"
Удалить файл из строки
gifc remove ffd2f4a482684f56bf33c8726cc6ae63 -r file1.md script.py readme.txt
Вы можете получить идентификатор gist из метода get
из более раннего
Удалить весь смысл
gifc delete ffd2f4a482684f56bf33c8726cc6ae63
Вы можете получить идентификатор gist из метода get
из более раннего
Ответ 6
Для роутеров с ограниченными ящиками ящиков busybox я создал этот пост сценария оболочки и патч-гитарист. Использование: $ pgist my_file_to_post_or_patch_to_gist.extension
Не нужно запоминать длинные идентификаторы. Этот gister закодирован для автоматического поиска соответствующего знака gist. Ограничения:
- до 30 (может быть, 100) в вашем аккаунте
- до 300 файлов за каждый
- уникальные имена файлов для всех ваших файлов размером 30 × 300
- он не смог опубликовать/исправить себя из-за "Разбора проблем 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 token
-
jq
-
sed
-
awk
-
curl
и ca-certificates
для создания действующей цепочки сертификатов вместо
(60) Проблема сертификата SSL: не удалось получить сертификат локального эмитента