Ruby
Python
gist

手元のコードをサクッと Gist にアップロードするための Ruby/Python スクリプト

More than 1 year has passed since last update.

Ruby スクリプト

upload_to_gist.rb
require 'json'
require 'net/http'

# 環境変数 GITHUB_USERNAME に GitHub のユーザ名を設定しておく。
username = ENV['GITHUB_USERNAME']
# 環境変数 GITHUB_PASSWORD に GitHub のパスワードを設定しておく。
password = ENV['GITHUB_PASSWORD']
# コマンドライン引数の第 1 引数にアップロードするファイルのパスを指定する。
filepath = ARGV[0]

content = File.read(filepath)
filename = File.basename(filepath)

uri = URI.parse('https://api.github.com/gists')

request = Net::HTTP::Post.new(uri.path, { 'Content-Type' => 'application/json' })
request.basic_auth(username, password)
request.body = {
  # private でアップロードする。public でアップロードしたい場合は true を指定する。
  public: false,
  files: {
    filename => { content: content }
  }
}.to_json

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

response = http.request(request)
body = JSON.parse(response.body)

puts("#{filename}#{body['html_url']} にアップロードしました。")

Python スクリプト

upload_to_gist.py
from requests.auth import HTTPBasicAuth  # pip install requests
import json
import os
import requests
import sys


# 環境変数 GITHUB_USERNAME に GitHub のユーザ名を設定しておく。
username = os.getenv('GITHUB_USERNAME')
# 環境変数 GITHUB_PASSWORD に GitHub のパスワードを設定しておく。
password = os.getenv('GITHUB_PASSWORD')
# コマンドライン引数の第 1 引数にアップロードするファイルのパスを指定する。
filepath = sys.argv[1]

content = open(filepath, 'r').read()
filename = os.path.basename(filepath)

payload = {'files': {filename: {'content': content}}}
response = requests.post('https://api.github.com/gists',
                         data=json.dumps(payload),
                         auth=HTTPBasicAuth(username, password))
body = response.json()
url = body['html_url']

print(f'{filename} を {url} にアップロードしました。')

使用例

上記の Ruby スクリプト自身を Gist にアップロードする。

$ ruby upload_to_gist.rb upload_to_gist.rb
upload_to_gist.rb を https://gist.github.com/f98fdcbf58539da7f2df69be0cb3bb35 にアップロードしました。

表示された URL にアクセスすると

gist.github.com-quanon-f98fdcbf58539da7f2df69be0cb3bb35(Laptop with MDPI screen).png

アップロードできてる :tada:

同様に Python スクリプトも試してみる。

$ python upload_to_gist.py upload_to_gist.py
upload_to_gist.py を https://gist.github.com/bc874dc72d0f9a6f2c92c494fc8e04ed にアップロードしました。

表示された URL にアクセスすると

gist.github.com-quanon-bc874dc72d0f9a6f2c92c494fc8e04ed(Laptop with MDPI screen).png

アップロードできてる :confetti_ball: