web-dev-qa-db-ja.com

bashを使用してGistにファイルをアップロードする

私は通常、Githubでエラーレポートとログ Gist を貼り付けて、プログラミング関連のデバッグ情報を交換します。 Gistには、ファイルをアップロードするためのボタンがありません。そのため、大きなエラーレポートをコピーして入力用の要旨テキストエリアに貼り付けるのはそれほど便利ではない場合があります。

コマンドラインからGistアカウントの新しいGistにファイルをアップロードする方法はありますか?

アップロードするファイルの一時的なgitリポジトリを作成することも役立ちます。これをスクリプトで自動化します。

最後に、私のプログラミングプロジェクトのデバッグ情報を1つのbashスクリプトでgithubに自動投稿したいと思います。

21
rubo77

ここ は、Bash/DashでanonymousGistを作成するために私のために機能するソリューションです(おそらく弾丸ではありません):

# 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アカウントに関連付けられたGistを作成する必要がある場合は、(基本認証の場合)最後の行を次のように置き換えます。

curl -u "${GITHUB_USERNAME}" -X POST -d "${DESC}" "https://api.github.com/gists"

より高度な認証スキームについては、 https://developer.github.com/v3/#authentication を参照してください

11
Sylvain Leroux

https://github.com/defunkt/Gist を参照してください

これは、コマンドラインから使用できるRubyスクリプトです。

9
Andreas

GitHub API for Gistを作成する を使用して、新しいGistを作成できるはずです。

POST /gists

このAPIを使用して、次のようなさまざまなスクリプトが見つかります。

GitHubエディター Atom.io にも Gist-it機能 があります。

https://raw.githubusercontent.com/rpowelll/Gist-it/master/media/screencast.gif

3
VonC

Sylvain Lerouxの答えに基づいて、 jq コマンドラインツールを使用して、サニタイズとjsonのビルドステップを置き換えることができます。

$ 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"

3
Tim Rakowski

ここ はPython同じことを行うスクリプトです。これは私が積極的に開発しています。README詳細。いくつかの例-

要点のリストを取得

gifc get 5

要旨を作成

  • nanovimまたは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
      以前のgetメソッドからGist idを取得できます
  • 説明を変更

    • gifc update ffd2f4a482684f56bf33c8726cc6ae63 -cd "New description"
      以前のgetメソッドからGist idを取得できます
  • nanovimまたは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
以前のgetメソッドからGist idを取得できます

要点全体を削除

gifc delete ffd2f4a482684f56bf33c8726cc6ae63
以前のgetメソッドからGist idを取得できます

2
jar

限られたbusybox ashシェルを持つルーターの場合、私はこれを作成しました シェルスクリプトポストおよびパッチジスター 。使用法: $ pgist my_file_to_post_or_patch_to_Gist.extension

長い要旨IDを覚えておく必要はありません。このgisterは、対応するGist IDを自動的に検索するようにコーディングされています。制限は次のとおりです。

  1. アカウントに最大30(多分100)の要旨
  2. 要点ごとに最大300ファイル
  3. 30×300 Gistファイルすべてに固有のファイル名
  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トークン
  • jq
  • sed
  • awk
  • curlおよびca-certificatesではなく、有効な証明書チェーンを作成します

(60)SSL証明書の問題:ローカル発行者証明書を取得できません

0
Pro Backup