gist 3.1.1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -0
- data/.rspec +3 -0
- data/Gemfile +3 -0
- data/LICENSE.MIT +7 -0
- data/README.md +149 -0
- data/Rakefile +13 -45
- data/bin/gist +156 -19
- data/gist.gemspec +21 -0
- data/lib/gist.rb +291 -232
- data/spec/clipboard_spec.rb +40 -0
- data/spec/ghe_spec.rb +80 -0
- data/spec/gist_spec.rb +23 -0
- data/spec/proxy_spec.rb +21 -0
- data/spec/shorten_spec.rb +11 -0
- data/spec/spec_helper.rb +15 -0
- metadata +108 -25
- data/LICENSE +0 -19
- data/README.markdown +0 -121
- data/lib/gist/cacert.pem +0 -105
- data/lib/gist/json.rb +0 -1304
- data/lib/gist/manpage.rb +0 -90
- data/lib/gist/standalone.rb +0 -55
- data/lib/gist/version.rb +0 -3
- data/man/gist.1 +0 -146
- data/man/gist.1.html +0 -209
- data/man/gist.1.ron +0 -117
@@ -0,0 +1,40 @@
|
|
1
|
+
describe '...' do
|
2
|
+
before do
|
3
|
+
@saved_path = ENV['PATH']
|
4
|
+
@bobo_url = 'http://example.com'
|
5
|
+
end
|
6
|
+
|
7
|
+
after do
|
8
|
+
ENV['PATH'] = @saved_path
|
9
|
+
end
|
10
|
+
|
11
|
+
def ask_for_copy
|
12
|
+
Gist.on_success({'html_url' => @bobo_url}.to_json, :copy => true, :output => :html_url)
|
13
|
+
end
|
14
|
+
def gist_but_dont_ask_for_copy
|
15
|
+
Gist.on_success({'html_url' => 'http://example.com/'}.to_json, :output => :html_url)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should try to copy the url when the clipboard option is passed' do
|
19
|
+
Gist.should_receive(:copy).with(@bobo_url)
|
20
|
+
ask_for_copy
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should try to copy the embed url when the clipboard-js option is passed' do
|
24
|
+
js_link = %Q{<script src="#{@bobo_url}.js"></script>}
|
25
|
+
Gist.should_receive(:copy).with(js_link)
|
26
|
+
Gist.on_success({'html_url' => @bobo_url}.to_json, :copy => true, :output => :javascript)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not copy when not asked to" do
|
30
|
+
Gist.should_not_receive(:copy).with(@bobo_url)
|
31
|
+
gist_but_dont_ask_for_copy
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should raise an error if no copying mechanisms are available" do
|
35
|
+
ENV['PATH'] = ''
|
36
|
+
lambda{
|
37
|
+
ask_for_copy
|
38
|
+
}.should raise_error(/Could not find copy command.*http/m)
|
39
|
+
end
|
40
|
+
end
|
data/spec/ghe_spec.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
describe '...' do
|
2
|
+
|
3
|
+
MOCK_GHE_HOST = 'ghe.example.com'
|
4
|
+
MOCK_GHE_PROTOCOL = 'http'
|
5
|
+
MOCK_USER = 'foo'
|
6
|
+
MOCK_PASSWORD = 'bar'
|
7
|
+
|
8
|
+
MOCK_AUTHZ_GHE_URL = "#{MOCK_GHE_PROTOCOL}://#{MOCK_USER}:#{MOCK_PASSWORD}@#{MOCK_GHE_HOST}/api/v3/"
|
9
|
+
MOCK_GHE_URL = "#{MOCK_GHE_PROTOCOL}://#{MOCK_GHE_HOST}/api/v3/"
|
10
|
+
MOCK_AUTHZ_GITHUB_URL = "https://#{MOCK_USER}:#{MOCK_PASSWORD}@api.github.com/"
|
11
|
+
MOCK_GITHUB_URL = "https://api.github.com/"
|
12
|
+
|
13
|
+
before do
|
14
|
+
@saved_env = ENV[Gist::URL_ENV_NAME]
|
15
|
+
|
16
|
+
# stub requests for /gists
|
17
|
+
stub_request(:post, /#{MOCK_GHE_URL}gists/).to_return(:body => %[{"html_url": "http://#{MOCK_GHE_HOST}"}])
|
18
|
+
stub_request(:post, /#{MOCK_GITHUB_URL}gists/).to_return(:body => '{"html_url": "http://github.com/"}')
|
19
|
+
|
20
|
+
# stub requests for /authorizations
|
21
|
+
stub_request(:post, /#{MOCK_AUTHZ_GHE_URL}authorizations/).
|
22
|
+
to_return(:status => 201, :body => '{"token": "asdf"}')
|
23
|
+
stub_request(:post, /#{MOCK_AUTHZ_GITHUB_URL}authorizations/).
|
24
|
+
to_return(:status => 201, :body => '{"token": "asdf"}')
|
25
|
+
end
|
26
|
+
|
27
|
+
after do
|
28
|
+
ENV[Gist::URL_ENV_NAME] = @saved_env
|
29
|
+
end
|
30
|
+
|
31
|
+
describe :login! do
|
32
|
+
before do
|
33
|
+
@saved_stdin = $stdin
|
34
|
+
|
35
|
+
# stdin emulation
|
36
|
+
$stdin = StringIO.new "#{MOCK_USER}\n#{MOCK_PASSWORD}\n"
|
37
|
+
|
38
|
+
# intercept for updating ~/.gist
|
39
|
+
File.stub(:open)
|
40
|
+
end
|
41
|
+
|
42
|
+
after do
|
43
|
+
$stdin = @saved_stdin
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should access to api.github.com when $#{Gist::URL_ENV_NAME} wasn't set" do
|
47
|
+
ENV.delete Gist::URL_ENV_NAME
|
48
|
+
|
49
|
+
Gist.login!
|
50
|
+
|
51
|
+
assert_requested(:post, /#{MOCK_AUTHZ_GITHUB_URL}authorizations/)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should access to #{MOCK_GHE_HOST} when $#{Gist::URL_ENV_NAME} was set" do
|
55
|
+
ENV[Gist::URL_ENV_NAME] = MOCK_GHE_URL
|
56
|
+
|
57
|
+
Gist.login!
|
58
|
+
|
59
|
+
assert_requested(:post, /#{MOCK_AUTHZ_GHE_URL}authorizations/)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe :gist do
|
64
|
+
it "should access to api.github.com when $#{Gist::URL_ENV_NAME} wasn't set" do
|
65
|
+
ENV.delete Gist::URL_ENV_NAME
|
66
|
+
|
67
|
+
Gist.gist "test gist"
|
68
|
+
|
69
|
+
assert_requested(:post, /#{MOCK_GITHUB_URL}gists/)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should access to #{MOCK_GHE_HOST} when $#{Gist::URL_ENV_NAME} was set" do
|
73
|
+
ENV[Gist::URL_ENV_NAME] = MOCK_GHE_URL
|
74
|
+
|
75
|
+
Gist.gist "test gist"
|
76
|
+
|
77
|
+
assert_requested(:post, /#{MOCK_GHE_URL}gists/)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/spec/gist_spec.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
describe Gist do
|
2
|
+
|
3
|
+
describe "should_be_public?" do
|
4
|
+
it "should return false if -p is specified" do
|
5
|
+
Gist.should_be_public?(private: true).should be_false
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should return false if legacy_private_gister?" do
|
9
|
+
Gist.should_receive(:legacy_private_gister?).and_return(true)
|
10
|
+
Gist.should_be_public?.should be_false
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return true if --no-private is specified" do
|
14
|
+
Gist.stub(:legacy_private_gister?).and_return(true)
|
15
|
+
Gist.should_be_public?(private: false).should be_true
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return true by default" do
|
19
|
+
Gist.should_be_public?.should be_true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/spec/proxy_spec.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
describe '...' do
|
2
|
+
before do
|
3
|
+
@saved_env = ENV['HTTP_PROXY']
|
4
|
+
end
|
5
|
+
|
6
|
+
after do
|
7
|
+
ENV['HTTP_PROXY'] = @saved_env
|
8
|
+
end
|
9
|
+
|
10
|
+
FOO_URL = URI('http://ddg.gg/')
|
11
|
+
|
12
|
+
it "should be Net::HTTP when $HTTP_PROXY wasn't set" do
|
13
|
+
ENV['HTTP_PROXY'] = ''
|
14
|
+
Gist.http_connection(FOO_URL).should be_an_instance_of(Net::HTTP)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should be Net::HTTP::Proxy when $HTTP_PROXY was set" do
|
18
|
+
ENV['HTTP_PROXY'] = 'http://proxy.example.com:8080'
|
19
|
+
Gist.http_connection(FOO_URL).should_not be_an_instance_of(Net::HTTP)
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
describe '...' do
|
2
|
+
before do
|
3
|
+
stub_request(:post, /api\.github.com\/gists/).to_return(:body => '{"html_url": "http://github.com/"}')
|
4
|
+
stub_request(:post, "http://git.io/").to_return(:status => 201, :headers => { 'Location' => 'http://git.io/XXXXXX' })
|
5
|
+
end
|
6
|
+
|
7
|
+
it "should return a shortened version of the URL" do
|
8
|
+
Gist.gist("Test gist", :output => :short_url, :anonymous => true).should == "http://git.io/XXXXXX"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper.rb"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'webmock/rspec'
|
14
|
+
require_relative '../lib/gist'
|
15
|
+
|
metadata
CHANGED
@@ -1,41 +1,124 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
9
|
-
-
|
8
|
+
- Conrad Irwin
|
9
|
+
- ☈king
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
date: 2013-05-03 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: json
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: rake
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: webmock
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: ronn
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
description: Provides a single function (Gist.gist) that uploads a gist.
|
96
|
+
email:
|
97
|
+
- conrad.irwin@gmail.com
|
98
|
+
- rkingist@sharpsaw.org
|
19
99
|
executables:
|
20
100
|
- gist
|
21
101
|
extensions: []
|
22
102
|
extra_rdoc_files: []
|
23
103
|
files:
|
24
|
-
-
|
104
|
+
- .gitignore
|
105
|
+
- .rspec
|
106
|
+
- Gemfile
|
107
|
+
- LICENSE.MIT
|
108
|
+
- README.md
|
25
109
|
- Rakefile
|
26
|
-
- LICENSE
|
27
|
-
- lib/gist/cacert.pem
|
28
|
-
- lib/gist/json.rb
|
29
|
-
- lib/gist/manpage.rb
|
30
|
-
- lib/gist/standalone.rb
|
31
|
-
- lib/gist/version.rb
|
32
|
-
- lib/gist.rb
|
33
110
|
- bin/gist
|
34
|
-
-
|
35
|
-
-
|
36
|
-
-
|
37
|
-
|
38
|
-
|
111
|
+
- gist.gemspec
|
112
|
+
- lib/gist.rb
|
113
|
+
- spec/clipboard_spec.rb
|
114
|
+
- spec/ghe_spec.rb
|
115
|
+
- spec/gist_spec.rb
|
116
|
+
- spec/proxy_spec.rb
|
117
|
+
- spec/shorten_spec.rb
|
118
|
+
- spec/spec_helper.rb
|
119
|
+
homepage: https://github.com/defunkt/gist
|
120
|
+
licenses:
|
121
|
+
- MIT
|
39
122
|
post_install_message:
|
40
123
|
rdoc_options: []
|
41
124
|
require_paths:
|
@@ -54,9 +137,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
137
|
version: '0'
|
55
138
|
requirements: []
|
56
139
|
rubyforge_project:
|
57
|
-
rubygems_version: 1.8.
|
140
|
+
rubygems_version: 1.8.23
|
58
141
|
signing_key:
|
59
142
|
specification_version: 3
|
60
|
-
summary:
|
143
|
+
summary: Just allows you to upload gists
|
61
144
|
test_files: []
|
62
|
-
has_rdoc:
|
145
|
+
has_rdoc:
|
data/LICENSE
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
Copyright (c) 2008 Chris Wanstrath
|
2
|
-
json-pure Copyright Genki Takiuchi
|
3
|
-
|
4
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
5
|
-
this software and associated documentation files (the "Software"), to deal in
|
6
|
-
the Software without restriction, including without limitation the rights to
|
7
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
8
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
9
|
-
subject to the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be included in all
|
12
|
-
copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
16
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
17
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
18
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
19
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
Gist: The Script
|
2
|
-
================
|
3
|
-
|
4
|
-
Works great with Gist: The Website.
|
5
|
-
|
6
|
-
Installation
|
7
|
-
------------
|
8
|
-
|
9
|
-
[homebrew](http://mxcl.github.com/homebrew/):
|
10
|
-
|
11
|
-
```bash
|
12
|
-
$ brew install gist
|
13
|
-
$ gist -h
|
14
|
-
```
|
15
|
-
|
16
|
-
RubyGems:
|
17
|
-
|
18
|
-
```bash
|
19
|
-
$ gem install gist
|
20
|
-
$ gist -h
|
21
|
-
```
|
22
|
-
|
23
|
-
Old school:
|
24
|
-
|
25
|
-
```bash
|
26
|
-
$ curl -s https://raw.github.com/defunkt/gist/master/gist > gist &&
|
27
|
-
$ chmod 755 gist &&
|
28
|
-
$ mv gist /usr/local/bin/gist
|
29
|
-
```
|
30
|
-
|
31
|
-
Ubuntu:
|
32
|
-
|
33
|
-
```bash
|
34
|
-
$ sudo apt-get install ruby
|
35
|
-
$ sudo apt-get install rubygems
|
36
|
-
$ sudo apt-get install libopenssl-ruby
|
37
|
-
$ sudo gem install gist
|
38
|
-
$ sudo cp /var/lib/gems/1.8/bin/gist /usr/local/bin/
|
39
|
-
$ gist -h
|
40
|
-
```
|
41
|
-
|
42
|
-
Use
|
43
|
-
---
|
44
|
-
|
45
|
-
```bash
|
46
|
-
$ gist < file.txt
|
47
|
-
$ echo secret | gist --private # or -p
|
48
|
-
$ echo "puts :hi" | gist -t rb
|
49
|
-
$ gist script.py
|
50
|
-
$ gist script.js notes.txt
|
51
|
-
$ pbpaste | gist -p # Copy from clipboard - OSX Only
|
52
|
-
$ gist -
|
53
|
-
the quick brown fox jumps over the lazy dog
|
54
|
-
^D
|
55
|
-
```
|
56
|
-
|
57
|
-
Authentication
|
58
|
-
--------------
|
59
|
-
There are two ways to set GitHub user and password info:
|
60
|
-
|
61
|
-
Using env vars GITHUB_USER and GITHUB_PASSWORD:
|
62
|
-
|
63
|
-
```bash
|
64
|
-
$ export GITHUB_USER="your-github-username"
|
65
|
-
$ export GITHUB_PASSWORD="your-github-password"
|
66
|
-
$ gist ~/example
|
67
|
-
```
|
68
|
-
|
69
|
-
Or by having your git config set up with your GitHub username and password.
|
70
|
-
|
71
|
-
```bash
|
72
|
-
git config --global github.user "your-github-username"
|
73
|
-
git config --global github.password "your-github-password"
|
74
|
-
```
|
75
|
-
|
76
|
-
You can also define github.password to be a command which returns the
|
77
|
-
actual password on stdout by setting the variable to a command string
|
78
|
-
prefixed with `!`. For example, the following command fetches the
|
79
|
-
password from an item named "github.password" on the Mac OS
|
80
|
-
Keychain:
|
81
|
-
|
82
|
-
```bash
|
83
|
-
password = !security find-generic-password -gs github.password -w | tr -d '\n'
|
84
|
-
```
|
85
|
-
|
86
|
-
Defaults
|
87
|
-
--------
|
88
|
-
|
89
|
-
You can set a few options in your git config (using git-config(1)) to
|
90
|
-
control the default behavior of gist(1).
|
91
|
-
|
92
|
-
* gist.private - boolean (yes or no) - Determines whether to make a gist
|
93
|
-
private by default
|
94
|
-
|
95
|
-
* gist.extension - string - Default extension for gists you create.
|
96
|
-
|
97
|
-
* gist.browse - boolean (yes or no) - Whether to open the gist in your
|
98
|
-
browser after creation. Default: yes
|
99
|
-
|
100
|
-
Proxies
|
101
|
-
-------
|
102
|
-
|
103
|
-
Set the HTTP_PROXY env variable to use a proxy.
|
104
|
-
|
105
|
-
```bash
|
106
|
-
$ HTTP_PROXY=host:port gist file.rb
|
107
|
-
```
|
108
|
-
|
109
|
-
Manual
|
110
|
-
------
|
111
|
-
|
112
|
-
Visit <http://defunkt.github.com/gist/> or use:
|
113
|
-
|
114
|
-
```bash
|
115
|
-
$ gist -m
|
116
|
-
```
|
117
|
-
|
118
|
-
Bugs
|
119
|
-
----
|
120
|
-
|
121
|
-
<https://github.com/defunkt/gist/issues>
|