@@ -42,6 +42,7 @@ def execute(*args)
42
42
gist_filename = nil
43
43
gist_extension = defaults [ "extension" ]
44
44
browse_enabled = defaults [ "browse" ]
45
+ description = nil
45
46
46
47
opts = OptionParser . new do |opts |
47
48
opts . banner = "Usage: gist [options] [filename or stdin] [filename] ...\n " +
@@ -56,6 +57,10 @@ def execute(*args)
56
57
gist_extension = '.' + extension
57
58
end
58
59
60
+ opts . on ( '-d' , '--description DESCRIPTION' , 'Set description of the new gist' ) do |d |
61
+ description = d
62
+ end
63
+
59
64
opts . on ( '-o' , '--[no-]open' , 'Open gist in browser' ) do |o |
60
65
browse_enabled = o
61
66
end
@@ -104,7 +109,7 @@ def execute(*args)
104
109
files = [ { :input => input , :extension => gist_extension } ]
105
110
end
106
111
107
- url = write ( files , private_gist )
112
+ url = write ( files , private_gist , description )
108
113
browse ( url ) if browse_enabled
109
114
puts copy ( url )
110
115
rescue => e
@@ -114,7 +119,7 @@ def execute(*args)
114
119
end
115
120
116
121
# Create a gist on gist.github.com
117
- def write ( files , private_gist = false )
122
+ def write ( files , private_gist = false , description = nil )
118
123
url = URI . parse ( CREATE_URL )
119
124
120
125
if PROXY_HOST
@@ -129,7 +134,7 @@ def write(files, private_gist = false)
129
134
http . ca_file = ca_cert
130
135
131
136
req = Net ::HTTP ::Post . new ( url . path )
132
- req . form_data = data ( files , private_gist )
137
+ req . form_data = data ( files , private_gist , description )
133
138
134
139
response = http . start { |h | h . request ( req ) }
135
140
case response
@@ -180,14 +185,15 @@ def copy(content)
180
185
private
181
186
# Give an array of file information and private boolean, returns
182
187
# an appropriate payload for POSTing to gist.github.com
183
- def data ( files , private_gist )
188
+ def data ( files , private_gist , description )
184
189
data = { }
185
190
files . each do |file |
186
191
i = data . size + 1
187
192
data [ "file_ext[gistfile#{ i } ]" ] = file [ :extension ] ? file [ :extension ] : '.txt'
188
193
data [ "file_name[gistfile#{ i } ]" ] = file [ :filename ]
189
194
data [ "file_contents[gistfile#{ i } ]" ] = file [ :input ]
190
195
end
196
+ data . merge! ( { 'description' => description } ) unless description . nil?
191
197
data . merge ( private_gist ? { 'action_button' => 'private' } : { } ) . merge ( auth )
192
198
end
193
199
0 commit comments