gist 1.0.3 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -16,6 +16,7 @@ Old school:
16
16
  chmod 755 gist &&
17
17
  mv gist /usr/local/bin/gist
18
18
 
19
+
19
20
  Use
20
21
  ---
21
22
 
@@ -24,6 +25,7 @@ Use
24
25
  echo "puts :hi" | gist -t rb
25
26
  gist script.py
26
27
 
28
+
27
29
  Authentication
28
30
  --------------
29
31
 
@@ -34,6 +36,26 @@ Just have your git config set up with your GitHub username and token.
34
36
 
35
37
  You can find your token under [your account](https://github.com/account).
36
38
 
39
+ You can also define github.token to be a command which returns the
40
+ actual token on stdout by setting the variable to a command string
41
+ prefixed with `!`. For example, the following command fetches the
42
+ token from a password item named "github.token" on the Mac OS
43
+ Keychain:
44
+
45
+ token = !security 2>&1 >/dev/null find-generic-password -gs github.token | ruby -e 'print $1 if STDIN.gets =~ /^password: \\\"(.*)\\\"$/'
46
+
47
+
48
+ Defaults
49
+ --------
50
+
51
+ You can set a few options in your git config (using git-config(1)) to
52
+ control the default behavior of gist(1).
53
+
54
+ * gist.private - boolean (yes or no) - Determines whether to make a gist
55
+ private by default
56
+
57
+ * gist.extension - string - Default extension for gists you create.
58
+
37
59
 
38
60
  Proxies
39
61
  -------
@@ -42,14 +64,15 @@ Set the HTTP_PROXY env variable to use a proxy.
42
64
 
43
65
  $ HTTP_PROXY=host:port gist file.rb
44
66
 
67
+
45
68
  Manual
46
69
  ------
47
70
 
48
-
49
71
  Visit <http://defunkt.github.com/gist/> or use:
50
72
 
51
73
  $ gist -m
52
74
 
75
+
53
76
  Ninja vs Shark
54
77
  --------------
55
78
 
data/lib/gist.rb CHANGED
@@ -32,14 +32,15 @@ module Gist
32
32
 
33
33
  # Parses command line arguments and does what needs to be done.
34
34
  def execute(*args)
35
- private_gist = false
36
- gist_extension = nil
35
+ private_gist = defaults["private"]
36
+ gist_filename = nil
37
+ gist_extension = defaults["extension"]
37
38
 
38
39
  opts = OptionParser.new do |opts|
39
40
  opts.banner = "Usage: gist [options] [filename or stdin]"
40
41
 
41
- opts.on('-p', '--private', 'Make the gist private') do
42
- private_gist = true
42
+ opts.on('-p', '--[no-]private', 'Make the gist private') do |priv|
43
+ private_gist = priv
43
44
  end
44
45
 
45
46
  t_desc = 'Set syntax highlighting of the Gist by file extension'
@@ -51,6 +52,11 @@ module Gist
51
52
  Gist::Manpage.display("gist")
52
53
  end
53
54
 
55
+ opts.on('-v', '--version', 'Print version') do
56
+ puts Gist::Version
57
+ exit
58
+ end
59
+
54
60
  opts.on('-h', '--help', 'Display this screen') do
55
61
  puts opts
56
62
  exit
@@ -72,6 +78,7 @@ module Gist
72
78
  # Check if arg is a file. If so, grab the content.
73
79
  if File.exists?(file = args[0])
74
80
  input = File.read(file)
81
+ gist_filename = file
75
82
  gist_extension = File.extname(file) if file.include?('.')
76
83
  else
77
84
  abort "Can't find #{file}"
@@ -81,7 +88,7 @@ module Gist
81
88
  input = $stdin.read
82
89
  end
83
90
 
84
- url = write(input, private_gist, gist_extension)
91
+ url = write(input, private_gist, gist_extension, gist_filename)
85
92
  browse(url)
86
93
  puts copy(url)
87
94
  rescue => e
@@ -91,12 +98,13 @@ module Gist
91
98
  end
92
99
 
93
100
  # Create a gist on gist.github.com
94
- def write(content, private_gist = false, gist_extension = nil)
101
+ def write(content, private_gist = false, gist_extension = nil, gist_filename = nil)
95
102
  url = URI.parse(CREATE_URL)
96
103
 
97
104
  # Net::HTTP::Proxy returns Net::HTTP if PROXY_HOST is nil
98
105
  proxy = Net::HTTP::Proxy(PROXY_HOST, PROXY_PORT)
99
- req = proxy.post_form(url, data(nil, gist_extension, content, private_gist))
106
+ req = proxy.post_form(url,
107
+ data(gist_filename, gist_extension, content, private_gist))
100
108
 
101
109
  req['Location']
102
110
  end
@@ -117,11 +125,11 @@ module Gist
117
125
  # Tries to copy passed content to the clipboard.
118
126
  def copy(content)
119
127
  cmd = case true
120
- when system("which pbcopy &> /dev/null")
128
+ when system("type pbcopy > /dev/null")
121
129
  :pbcopy
122
- when system("which xclip &> /dev/null")
130
+ when system("type xclip > /dev/null")
123
131
  :xclip
124
- when system("which putclip &> /dev/null")
132
+ when system("type putclip > /dev/null")
125
133
  :putclip
126
134
  end
127
135
 
@@ -143,12 +151,56 @@ private
143
151
  }.merge(private_gist ? { 'action_button' => 'private' } : {}).merge(auth)
144
152
  end
145
153
 
146
- # Returns a hash of the user's GitHub credentials if see.
154
+ # Returns a hash of the user's GitHub credentials if set.
147
155
  # http://github.com/guides/local-github-config
148
156
  def auth
149
- user = `git config --global github.user`.strip
150
- token = `git config --global github.token`.strip
157
+ user = config("github.user")
158
+ token = config("github.token")
151
159
 
152
160
  user.empty? ? {} : { :login => user, :token => token }
153
161
  end
162
+
163
+ # Returns default values based on settings in your gitconfig. See
164
+ # git-config(1) for more information.
165
+ #
166
+ # Settings applicable to gist.rb are:
167
+ #
168
+ # gist.private - boolean
169
+ # gist.extension - string
170
+ def defaults
171
+ priv = config("gist.private")
172
+ extension = config("gist.extension")
173
+ extension = nil if extension && extension.empty?
174
+
175
+ return {
176
+ "private" => priv,
177
+ "extension" => extension
178
+ }
179
+ end
180
+
181
+ # Reads a config value using git-config(1), returning something
182
+ # useful or nil.
183
+ def config(key)
184
+ str_to_bool `git config --global #{key}`.strip
185
+ end
186
+
187
+ # Parses a value that might appear in a .gitconfig file into
188
+ # something useful in a Ruby script.
189
+ def str_to_bool(str)
190
+ if str.size > 0 and str[0].chr == '!'
191
+ command = str[1, str.length]
192
+ value = `#{command}`
193
+ else
194
+ value = str
195
+ end
196
+
197
+ case value.downcase.strip
198
+ when "false", "0", "nil", "", "no", "off"
199
+ nil
200
+ when "true", "1", "yes", "on"
201
+ true
202
+ else
203
+ value
204
+ end
205
+ end
154
206
  end
data/lib/gist/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gist
2
- VERSION = Version = '1.0.3'
2
+ VERSION = Version = '1.1.1'
3
3
  end
data/man/gist.1 CHANGED
@@ -1,5 +1,5 @@
1
- .\" generated with Ron/v0.3
2
- .\" http://github.com/rtomayko/ron/
1
+ .\" generated with Ronn/v0.4.1
2
+ .\" http://github.com/rtomayko/ronn/
3
3
  .
4
4
  .TH "GIST" "1" "February 2010" "GITHUB" "Gist Manual"
5
5
  .
@@ -32,11 +32,11 @@ account if you user and token are provided (see \fBCONFIGURATION\fR).
32
32
  These options can be used to change this behavior:
33
33
  .
34
34
  .TP
35
- \fB\-p\fR, \fB\-\-private\fR
35
+ \fB\-p\fR, \fB\-\-private\fR
36
36
  Create a private gist instead of a public gist.
37
37
  .
38
38
  .TP
39
- \fB\-t\fR, \fB\-\-type\fR
39
+ \fB\-t\fR, \fB\-\-type\fR
40
40
  Set the file extension explicitly. Passing a type of \fBrb\fR ensure
41
41
  the gist is created as a Ruby file.
42
42
  .
@@ -44,11 +44,11 @@ the gist is created as a Ruby file.
44
44
  You may additionally ask for help:
45
45
  .
46
46
  .TP
47
- \fB\-h\fR, \fB\-\-help\fR
47
+ \fB\-h\fR, \fB\-\-help\fR
48
48
  Print help.
49
49
  .
50
50
  .TP
51
- \fB\-m\fR, \fB\-\-man\fR
51
+ \fB\-m\fR, \fB\-\-man\fR
52
52
  Display this man page.
53
53
  .
54
54
  .SH "CONFIGURATION"
@@ -57,8 +57,7 @@ Use git\-config(1) to display the currently configured GitHub username:
57
57
  .IP "" 4
58
58
  .
59
59
  .nf
60
-
61
- $ git config \-\-global github.user
60
+ $ git config \-\-global github.user
62
61
  .
63
62
  .fi
64
63
  .
@@ -70,8 +69,7 @@ Or, set the GitHub username with:
70
69
  .IP "" 4
71
70
  .
72
71
  .nf
73
-
74
- $ git config \-\-global github.user <username>
72
+ $ git config \-\-global github.user <username>
75
73
  .
76
74
  .fi
77
75
  .
@@ -87,8 +85,7 @@ information.
87
85
  .IP "" 4
88
86
  .
89
87
  .nf
90
-
91
- $ HTTP_PROXY=http://host:port/ gist script.py
88
+ $ HTTP_PROXY=http://host:port/ gist script.py
92
89
  .
93
90
  .fi
94
91
  .
@@ -97,11 +94,10 @@ $ HTTP_PROXY=http://host:port/ gist script.py
97
94
  .SH "EXAMPLES"
98
95
  .
99
96
  .nf
100
-
101
97
  $ gist < file.txt
102
98
  $ echo secret | gist \-\-private
103
99
  $ echo "puts :hi" | gist \-t rb
104
- $ gist script.py
100
+ $ gist script.py
105
101
  .
106
102
  .fi
107
103
  .
data/man/gist.1.html CHANGED
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
5
- <meta name='generator' value='Ron/v0.3'>
5
+ <meta name='generator' value='Ronn/v0.4.1'>
6
6
  <title>gist(1) -- gist on the command line</title>
7
7
  <style type='text/css'>
8
8
  body {margin:0}
@@ -64,6 +64,7 @@
64
64
 
65
65
  <h2 id='NAME'>NAME</h2>
66
66
  <p><code>gist</code> -- gist on the command line</p>
67
+
67
68
  <h2>SYNOPSIS</h2>
68
69
 
69
70
  <p><code>gist</code> [<code>-p</code>] [<code>-t extension</code>] <var>FILE</var></p>
@@ -90,14 +91,8 @@ account if you user and token are provided (see <code>CONFIGURATION</code>).</p>
90
91
  <p>These options can be used to change this behavior:</p>
91
92
 
92
93
  <dl>
93
- <dt>
94
- <code>-p</code>, <code>--private</code>
95
- </dt>
96
- <dd><p>Create a private gist instead of a public gist.</p></dd>
97
- <dt>
98
- <code>-t</code>, <code>--type</code>
99
- </dt>
100
- <dd><p>Set the file extension explicitly. Passing a type of <code>rb</code> ensure
94
+ <dt><code>-p</code>, <code>--private</code></dt><dd><p>Create a private gist instead of a public gist.</p></dd>
95
+ <dt><code>-t</code>, <code>--type</code></dt><dd><p>Set the file extension explicitly. Passing a type of <code>rb</code> ensure
101
96
  the gist is created as a Ruby file.</p></dd>
102
97
  </dl>
103
98
 
@@ -105,14 +100,8 @@ the gist is created as a Ruby file.</p></dd>
105
100
  <p>You may additionally ask for help:</p>
106
101
 
107
102
  <dl>
108
- <dt>
109
- <code>-h</code>, <code>--help</code>
110
- </dt>
111
- <dd><p>Print help.</p></dd>
112
- <dt>
113
- <code>-m</code>, <code>--man</code>
114
- </dt>
115
- <dd><p>Display this man page.</p></dd>
103
+ <dt><code>-h</code>, <code>--help</code></dt><dd><p>Print help.</p></dd>
104
+ <dt><code>-m</code>, <code>--man</code></dt><dd><p>Display this man page.</p></dd>
116
105
  </dl>
117
106
 
118
107
 
@@ -125,7 +114,7 @@ the gist is created as a Ruby file.</p></dd>
125
114
 
126
115
  <p>Or, set the GitHub username with:</p>
127
116
 
128
- <pre><code>$ git config --global github.user &lt;username&gt;
117
+ <pre><code>$ git config --global github.user &lt;username>
129
118
  </code></pre>
130
119
 
131
120
  <p>See <a href="http://github.com/guides/local-github-config">http://github.com/guides/local-github-config</a> for more
@@ -158,6 +147,7 @@ $ gist script.py
158
147
  <a href="http://github.com">http://github.com</a>,
159
148
  <a href="http://github.com/defunkt/gist">http://github.com/defunkt/gist</a></p>
160
149
 
150
+
161
151
  <ol class='foot man'>
162
152
  <li class='tl'>GITHUB</li>
163
153
  <li class='tc'>February 2010</li>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-28 00:00:00 -08:00
12
+ date: 2010-04-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15