jist 0.6 → 0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/jist +18 -9
- data/lib/jist.rb +28 -9
- metadata +2 -2
data/bin/jist
CHANGED
@@ -6,14 +6,14 @@ require 'jist'
|
|
6
6
|
|
7
7
|
# For the holdings of options.
|
8
8
|
options = {}
|
9
|
-
|
9
|
+
filenames = []
|
10
10
|
|
11
11
|
opts = OptionParser.new do |opts|
|
12
12
|
executable_name = File.split($0)[1]
|
13
13
|
opts.banner = <<-EOS
|
14
14
|
Jist (v#{Jist::VERSION}) lets you upload to https://gist.github.com/
|
15
15
|
|
16
|
-
Usage: #{executable_name} [-p] [-d DESC] [-t TOKEN] [-f
|
16
|
+
Usage: #{executable_name} [-p] [-d DESC] [-t TOKEN] [-u URL] [-f NAME]* [FILE]*
|
17
17
|
#{executable_name} --login
|
18
18
|
|
19
19
|
When used with no arguments, jist creates an anonymous, private, gist, with
|
@@ -27,10 +27,11 @@ an Oauth2 access token. This is stored and used for all future uses of jist.
|
|
27
27
|
If you're calling jist from another program that already has an access_token
|
28
28
|
with the "gist" scope, then pass it using `jist -t`.
|
29
29
|
|
30
|
-
If you specify
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
If you specify FILEs on the command line, then jist will use the names of the
|
31
|
+
files you specify as the filenames for the gist. If you'd rather override the
|
32
|
+
name you can specify the -f parameter once per file. If you don't specify any
|
33
|
+
files, then the -f parameter will be used to name the contents of STDIN. If you
|
34
|
+
don't specify the -f parameter at all when using STDIN, "a.rb" will be used.
|
34
35
|
|
35
36
|
Making a gist public causes it to have a prettier, guessable url. And adding
|
36
37
|
a description can provide useful context to people who stumble across your
|
@@ -44,6 +45,7 @@ gist.
|
|
44
45
|
end
|
45
46
|
|
46
47
|
opts.on("-f", "--filename [NAME.EXTENSION]", "Sets the filename and syntax type.") do |filename|
|
48
|
+
filenames << filename
|
47
49
|
options[:filename] = filename
|
48
50
|
end
|
49
51
|
|
@@ -55,6 +57,10 @@ gist.
|
|
55
57
|
options[:description] = description
|
56
58
|
end
|
57
59
|
|
60
|
+
opts.on("-u", "--update [ URL | ID ]", "Update an existing gist.") do |update|
|
61
|
+
options[:update] = update
|
62
|
+
end
|
63
|
+
|
58
64
|
opts.on("-t", "--token OAUTH_TOKEN", "The OAuth2 access_token to use.") do |token|
|
59
65
|
options[:access_token] = token
|
60
66
|
end
|
@@ -75,8 +81,11 @@ opts.parse!
|
|
75
81
|
if ARGV.size == 0
|
76
82
|
$stderr.puts "(type a gist. <ctrl-c> to cancel, <ctrl-d> when done)" if $stdin.tty?
|
77
83
|
puts Jist.gist(ARGF.read, options)['html_url']
|
78
|
-
elsif ARGV.size == 1
|
79
|
-
puts Jist.gist(File.read(File.expand_path(ARGV[0])), {:filename => File.basename(ARGV[0])}.merge(options))['html_url']
|
80
84
|
else
|
81
|
-
|
85
|
+
files = {}
|
86
|
+
ARGV.zip(filenames).each do |(file, name)|
|
87
|
+
files[name || file] = File.read(File.expand_path(file))
|
88
|
+
end
|
89
|
+
|
90
|
+
puts Jist.multi_gist(files, options)['html_url']
|
82
91
|
end
|
data/lib/jist.rb
CHANGED
@@ -5,7 +5,7 @@ require 'json'
|
|
5
5
|
# It just gists.
|
6
6
|
module Jist
|
7
7
|
|
8
|
-
VERSION = '0.
|
8
|
+
VERSION = '0.7'
|
9
9
|
|
10
10
|
module_function
|
11
11
|
# Upload a gist to https://gist.github.com
|
@@ -17,28 +17,47 @@ module Jist
|
|
17
17
|
# @option options [String] :filename ('a.rb') the filename
|
18
18
|
# @option options [Boolean] :public (false) is this gist public
|
19
19
|
# @option options [String] :access_token (`File.read("~/.jist")`) The OAuth2 access token.
|
20
|
+
# @option options [String] :update the URL or id of a gist to update
|
20
21
|
#
|
21
22
|
# @return [Hash] the decoded JSON response from the server
|
22
23
|
# @raise [Exception] if something went wrong
|
23
24
|
#
|
24
25
|
# @see http://developer.github.com/v3/gists/
|
25
26
|
def gist(content, options={})
|
27
|
+
filename = options[:filename] || "a.rb"
|
28
|
+
multi_gist({filename => content}, options)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Upload a gist to https://gist.github.com
|
32
|
+
#
|
33
|
+
# @param [Hash] files the code you'd like to gist {filename => content}
|
34
|
+
# @param [Hash] options more detailed options
|
35
|
+
#
|
36
|
+
# @option options [String] :description the description
|
37
|
+
# @option options [Boolean] :public (false) is this gist public
|
38
|
+
# @option options [String] :access_token (`File.read("~/.jist")`) The OAuth2 access token.
|
39
|
+
# @option options [String] :update the URL or id of a gist to update
|
40
|
+
#
|
41
|
+
# @return [Hash] the decoded JSON response from the server
|
42
|
+
# @raise [Exception] if something went wrong
|
43
|
+
#
|
44
|
+
# @see http://developer.github.com/v3/gists/
|
45
|
+
def multi_gist(files, options={})
|
26
46
|
json = {}
|
27
47
|
|
28
48
|
json[:description] = options[:description] if options[:description]
|
29
49
|
json[:public] = !!options[:public]
|
50
|
+
json[:files] = {}
|
30
51
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
filename => {
|
35
|
-
:content => content
|
36
|
-
}
|
37
|
-
}
|
52
|
+
files.each_pair do |(name, content)|
|
53
|
+
json[:files][File.basename(name)] = {:content => content}
|
54
|
+
end
|
38
55
|
|
56
|
+
existing_gist = options[:update].to_s.split("/").last
|
39
57
|
access_token = (options[:access_token] || File.read(File.expand_path("~/.jist")) rescue nil)
|
40
58
|
|
41
59
|
url = "/gists"
|
60
|
+
url << "/" << CGI.escape(existing_gist) if existing_gist.to_s != ''
|
42
61
|
url << "?access_token=" << CGI.escape(access_token) if access_token.to_s != ''
|
43
62
|
|
44
63
|
request = Net::HTTP::Post.new(url)
|
@@ -46,7 +65,7 @@ module Jist
|
|
46
65
|
|
47
66
|
response = http(request)
|
48
67
|
|
49
|
-
if Net::
|
68
|
+
if Net::HTTPSuccess === response
|
50
69
|
JSON.parse(response.body)
|
51
70
|
else
|
52
71
|
raise RuntimeError.new "Got #{response.class} from gist: #{response.body}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.7'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|