Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@kymmt90

GitHub上のリポジトリからファイルをダウンロードするワンライナー

More than 1 year has passed since last update.

Contents APIを使う

REST API v3のContents APIを使う。

Get contents
Gets the contents of a file or directory in a repository.

前提

  • jqをインストールする
  • GitHubのリポジトリ操作権限を持ったpersonal access tokenを取得する

リポジトリのファイルをダウンロードするワンライナー

次のワンライナーでGitHub上のファイルをダウンロードできる:

curl -sSL -H "Accept: application/vnd.github.v3+json" -u <user name>:<token> \
     https://api.github.com/repos/<owner>/<repo>/contents/<file_path> \
    | jq -r .content \
    | base64 --decode > <output file name>

このワンライナーは次の順番で処理を実行している:

  • Contents APIを呼び出してファイルの内容をJSONで取得する
  • JSONからBase64エンコードされたファイルの内容を表わすフィールド content を取得する
    • このとき、raw-output (-r) オプションでJSON文字列ではない生の文字列としてstdoutに出力することで、" などを取り除く
  • Base64デコードして、標準出力の内容をファイルへリダイレクトする

例として、rails/railsのactiverecord/lib/active_record.rbをダウンロードするときは次のようになる:

REPOS=rails/rails
FILE_PATH=activerecord/lib/active_record.rb

curl -sSL -H "Accept: application/vnd.github.v3+json" -u <user name>:<token> \
     https://api.github.com/repos/${REPOS}/contents/${FILE_PATH} \
    | jq -r .content \
    | base64 --decode > <output file name>
2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
pepabo
「いるだけで成長できる環境」を標榜し、エンジニアが楽しく開発できるWebサービス企業を目指しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?