Подтвердить что ты не робот

Загрузите файл в Gist с помощью bash

Я обычно вставляю отчеты об ошибках и журналы в Gist в Github, чтобы обменяться информацией о соответствующей отладочной информации. У Gist нет кнопки для загрузки файла. Поэтому иногда не так удобно копировать и вставлять большие сообщения об ошибках в gists textarea для ввода.

Есть ли способ загрузить файл из командной строки в новый Gist в вашей учетной записи Gist?

также создание временного хранилища git для загружаемого файла помогло бы, тогда я бы автоматизировал это в скрипте.

В конце я хотел бы автоматизировать отправку отладочной информации моего проекта программирования на github с одним скриптом bash

4b9b3361

Ответ 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, который можно использовать из командной строки.

Ответ 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. Ограничения:

  1. до 30 (может быть, 100) в вашем аккаунте
  2. до 300 файлов за каждый
  3. уникальные имена файлов для всех ваших файлов размером 30 × 300
  4. он не смог опубликовать/исправить себя из-за "Разбора проблем 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: не удалось получить сертификат локального эмитента