File: upload-to-github.rb

package info (click to toggle)
mariadb 1%3A11.8.2-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 765,428 kB
  • sloc: ansic: 2,382,827; cpp: 1,803,532; asm: 378,315; perl: 63,176; sh: 46,496; pascal: 40,776; java: 39,363; yacc: 20,428; python: 19,506; sql: 17,864; xml: 12,463; ruby: 8,544; makefile: 6,059; cs: 5,855; ada: 1,700; lex: 1,193; javascript: 1,039; objc: 80; tcl: 73; awk: 46; php: 22
file content (42 lines) | stat: -rwxr-xr-x 1,234 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env ruby

if ARGV.size < 1
  puts "Usage: #{$0} USER FILE ..."
  puts " e.g.: #{$0} kou mroonga-1.10.tar.gz ..."
  exit false
end

require "rubygems"
require "github_api"
require "mime/types"

user, *files = *ARGV

print "password[#{user}]: "
system("stty -echo")
password = STDIN.gets.chomp
system("stty echo")
puts

github = Github.new(:login => user, :password => password)
files.each do |file|
  content_type = MIME::Types.type_for(file)[0].to_s
  resource = github.repos.downloads.create("mroonga", "mroonga",
                                           :name => File.basename(file),
                                           :size => File.size(file),
                                           :description => File.basename(file),
                                           :content_type => content_type)
  p resource

  system("curl",
    "-F", "key=#{resource.path}",
    "-F", "acl=#{resource.acl}",
    "-F", "success_action_status=201",
    "-F", "Filename=#{resource.name}",
    "-F", "AWSAccessKeyId=#{resource.accesskeyid}",
    "-F", "Policy=#{resource.policy}",
    "-F", "Signature=#{resource.signature}",
    "-F", "Content-Type=#{resource.mime_type}",
    "-F", "file=@#{file}",
    resource.s3_url)
end