gemplate 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/gemplate +4 -0
- data/circle.yml +12 -0
- data/gemplate.gemspec +5 -1
- data/lib/gemplate.rb +17 -1
- data/spec/creds.yml +2 -0
- data/spec/fixtures/cassettes/bad_license.yml +52 -0
- data/spec/fixtures/cassettes/subject_create.yml +149 -0
- data/spec/fixtures/cassettes/subject_create_twice.yml +143 -0
- data/spec/gemplate_spec.rb +52 -28
- data/spec/spec_helper.rb +12 -0
- data/template/circle.yml +12 -0
- metadata +69 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 098b930c9f8f6688744e981e5595be09eb086d74
|
4
|
+
data.tar.gz: 3ebc02d9741640163c69b5810150a253378290bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c65c1d2306082769408c83ee8d4bd48fa619998a42df8642cdb7b1081242769da0f648ea5976d8e30d0f9a08467e3974309f831cb01d3cd7ec2b9bf19678bd5
|
7
|
+
data.tar.gz: ba4e2d0b933e146736799b1c3b9e91a90ae7a5f9ae8264635c7e814da15c100b7d3c66d8fb3886aabb4e326895f2ec985ba3835472811730a3345a86c468502e
|
data/bin/gemplate
CHANGED
@@ -11,6 +11,9 @@ name = UserInput.new(message: 'Gem name', default: name).ask
|
|
11
11
|
user = Rugged::Config.global['github.user'] || ENV['USER']
|
12
12
|
user = UserInput.new(message: 'GitHub username', default: user).ask
|
13
13
|
|
14
|
+
org = user
|
15
|
+
org = UserInput.new(message: 'GitHub organization', default: org).ask
|
16
|
+
|
14
17
|
full_name = Rugged::Config.global['user.name']
|
15
18
|
full_name = UserInput.new(message: 'Full name', default: full_name).ask
|
16
19
|
|
@@ -32,6 +35,7 @@ license = UserInput.new(
|
|
32
35
|
Gemplate.new(
|
33
36
|
name: name,
|
34
37
|
user: user,
|
38
|
+
org: org,
|
35
39
|
full_name: full_name,
|
36
40
|
email: email,
|
37
41
|
license: license
|
data/circle.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
dependencies:
|
2
|
+
override:
|
3
|
+
- 'rvm-exec 1.9.3-p551 bundle install'
|
4
|
+
- 'rvm-exec 2.0.0-p645 bundle install'
|
5
|
+
- 'rvm-exec 2.1.6 bundle install'
|
6
|
+
- 'rvm-exec 2.2.2 bundle install'
|
7
|
+
test:
|
8
|
+
override:
|
9
|
+
- 'rvm-exec 1.9.3-p551 bundle exec rake'
|
10
|
+
- 'rvm-exec 2.0.0-p645 bundle exec rake'
|
11
|
+
- 'rvm-exec 2.1.6 bundle exec rake'
|
12
|
+
- 'rvm-exec 2.2.2 bundle exec rake'
|
data/gemplate.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'gemplate'
|
3
|
-
s.version = '1.1.
|
3
|
+
s.version = '1.1.1'
|
4
4
|
s.date = Time.now.strftime('%Y-%m-%d')
|
5
5
|
|
6
6
|
s.summary = 'Bootstrap tool for making gems'
|
@@ -16,6 +16,8 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency 'rugged', '~> 0.23.0'
|
18
18
|
s.add_dependency 'userinput', '~> 1.0.0'
|
19
|
+
s.add_dependency 'octoauth', '~> 1.3.0'
|
20
|
+
s.add_dependency 'octokit', '~> 4.1.0'
|
19
21
|
s.add_dependency 'curb', '~> 0.8.6'
|
20
22
|
|
21
23
|
s.add_development_dependency 'rubocop', '~> 0.34.0'
|
@@ -23,4 +25,6 @@ Gem::Specification.new do |s|
|
|
23
25
|
s.add_development_dependency 'codecov', '~> 0.1.1'
|
24
26
|
s.add_development_dependency 'rspec', '~> 3.3.0'
|
25
27
|
s.add_development_dependency 'fuubar', '~> 2.0.0'
|
28
|
+
s.add_development_dependency 'webmock', '~> 1.22.0'
|
29
|
+
s.add_development_dependency 'vcr', '~> 2.9.2'
|
26
30
|
end
|
data/lib/gemplate.rb
CHANGED
@@ -2,6 +2,8 @@ require 'rugged'
|
|
2
2
|
require 'pathname'
|
3
3
|
require 'fileutils'
|
4
4
|
require 'curb'
|
5
|
+
require 'octoauth'
|
6
|
+
require 'octokit'
|
5
7
|
|
6
8
|
##
|
7
9
|
# Bootstrap tool for new gems
|
@@ -24,9 +26,11 @@ module Gemplate
|
|
24
26
|
def initialize(params = {})
|
25
27
|
@name = params[:name]
|
26
28
|
@user = params[:user]
|
29
|
+
@org = params[:org]
|
27
30
|
@full_name = params[:full_name]
|
28
31
|
@email = params[:email]
|
29
32
|
@license = params[:license]
|
33
|
+
@authfile = params[:authfile] || :default
|
30
34
|
end
|
31
35
|
|
32
36
|
def create
|
@@ -92,9 +96,21 @@ module Gemplate
|
|
92
96
|
|
93
97
|
def make_repo
|
94
98
|
Rugged::Repository.init_at '.'
|
95
|
-
`git remote add origin "git@github.com:#{@
|
99
|
+
`git remote add origin "git@github.com:#{org || @name}/#{@name}"`
|
96
100
|
`git config branch.master.remote origin`
|
97
101
|
`git config branch.master.merge refs/heads/master`
|
102
|
+
github_api.create_repo(@name, organization: org, has_wiki: false)
|
103
|
+
end
|
104
|
+
|
105
|
+
def org
|
106
|
+
@org == @name ? nil : @org
|
107
|
+
end
|
108
|
+
|
109
|
+
def github_api
|
110
|
+
return @api_client if @api_client
|
111
|
+
auth = Octoauth.new note: 'gemplate', scopes: ['repo'], file: @authfile
|
112
|
+
auth.save
|
113
|
+
@api_client = Octokit::Client.new(access_token: auth.token)
|
98
114
|
end
|
99
115
|
end
|
100
116
|
end
|
data/spec/creds.yml
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://raw.githubusercontent.com/akerl/licenses/master/MIT-3.txt
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 404
|
13
|
+
message: Not Found
|
14
|
+
headers:
|
15
|
+
Content-Security-Policy:
|
16
|
+
- default-src 'none'
|
17
|
+
X-Xss-Protection:
|
18
|
+
- 1; mode=block
|
19
|
+
X-Frame-Options:
|
20
|
+
- deny
|
21
|
+
X-Content-Type-Options:
|
22
|
+
- nosniff
|
23
|
+
Strict-Transport-Security:
|
24
|
+
- max-age=31536000
|
25
|
+
Content-Length:
|
26
|
+
- '9'
|
27
|
+
Accept-Ranges:
|
28
|
+
- bytes
|
29
|
+
Date:
|
30
|
+
- Sun, 25 Oct 2015 22:52:58 GMT
|
31
|
+
Via:
|
32
|
+
- 1.1 varnish
|
33
|
+
Connection:
|
34
|
+
- keep-alive
|
35
|
+
X-Cache:
|
36
|
+
- MISS
|
37
|
+
X-Cache-Hits:
|
38
|
+
- '0'
|
39
|
+
Vary:
|
40
|
+
- Authorization,Accept-Encoding
|
41
|
+
Access-Control-Allow-Origin:
|
42
|
+
- "*"
|
43
|
+
Expires:
|
44
|
+
- Sun, 25 Oct 2015 22:57:58 GMT
|
45
|
+
Source-Age:
|
46
|
+
- '0'
|
47
|
+
body:
|
48
|
+
encoding: ASCII-8BIT
|
49
|
+
string: Not Found
|
50
|
+
http_version:
|
51
|
+
recorded_at: Sun, 25 Oct 2015 22:52:59 GMT
|
52
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,149 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://raw.githubusercontent.com/akerl/licenses/master/MIT.txt
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Security-Policy:
|
16
|
+
- default-src 'none'
|
17
|
+
X-Xss-Protection:
|
18
|
+
- 1; mode=block
|
19
|
+
X-Frame-Options:
|
20
|
+
- deny
|
21
|
+
X-Content-Type-Options:
|
22
|
+
- nosniff
|
23
|
+
Strict-Transport-Security:
|
24
|
+
- max-age=31536000
|
25
|
+
Content-Type:
|
26
|
+
- text/plain; charset=utf-8
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=300
|
29
|
+
Content-Length:
|
30
|
+
- '1085'
|
31
|
+
Accept-Ranges:
|
32
|
+
- bytes
|
33
|
+
Date:
|
34
|
+
- Sun, 25 Oct 2015 22:47:58 GMT
|
35
|
+
Via:
|
36
|
+
- 1.1 varnish
|
37
|
+
Connection:
|
38
|
+
- keep-alive
|
39
|
+
X-Cache:
|
40
|
+
- HIT
|
41
|
+
X-Cache-Hits:
|
42
|
+
- '1'
|
43
|
+
Vary:
|
44
|
+
- Authorization,Accept-Encoding
|
45
|
+
Access-Control-Allow-Origin:
|
46
|
+
- "*"
|
47
|
+
Expires:
|
48
|
+
- Sun, 25 Oct 2015 22:52:58 GMT
|
49
|
+
Source-Age:
|
50
|
+
- '161'
|
51
|
+
body:
|
52
|
+
encoding: ASCII-8BIT
|
53
|
+
string: |+
|
54
|
+
The MIT License (MIT)
|
55
|
+
|
56
|
+
Copyright (c) CURRENT_YEAR FULL_NAME
|
57
|
+
|
58
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
59
|
+
of this software and associated documentation files (the "Software"), to deal
|
60
|
+
in the Software without restriction, including without limitation the rights
|
61
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
62
|
+
copies of the Software, and to permit persons to whom the Software is
|
63
|
+
furnished to do so, subject to the following conditions:
|
64
|
+
|
65
|
+
The above copyright notice and this permission notice shall be included in
|
66
|
+
all copies or substantial portions of the Software.
|
67
|
+
|
68
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
69
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
70
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
71
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
72
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
73
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
74
|
+
THE SOFTWARE.
|
75
|
+
|
76
|
+
http_version:
|
77
|
+
recorded_at: Sun, 25 Oct 2015 22:47:59 GMT
|
78
|
+
- request:
|
79
|
+
method: post
|
80
|
+
uri: https://api.github.com/user/repos
|
81
|
+
body:
|
82
|
+
encoding: UTF-8
|
83
|
+
string: '{"has_wiki":false,"name":"gemplate-test"}'
|
84
|
+
headers:
|
85
|
+
Accept:
|
86
|
+
- application/vnd.github.v3+json
|
87
|
+
User-Agent:
|
88
|
+
- Octokit Ruby Gem 4.1.1
|
89
|
+
Content-Type:
|
90
|
+
- application/json
|
91
|
+
Accept-Encoding:
|
92
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
93
|
+
response:
|
94
|
+
status:
|
95
|
+
code: 201
|
96
|
+
message: Created
|
97
|
+
headers:
|
98
|
+
Server:
|
99
|
+
- GitHub.com
|
100
|
+
Date:
|
101
|
+
- Sun, 25 Oct 2015 22:47:59 GMT
|
102
|
+
Content-Type:
|
103
|
+
- application/json; charset=utf-8
|
104
|
+
Content-Length:
|
105
|
+
- '4615'
|
106
|
+
Status:
|
107
|
+
- 201 Created
|
108
|
+
X-Ratelimit-Limit:
|
109
|
+
- '5000'
|
110
|
+
X-Ratelimit-Remaining:
|
111
|
+
- '4874'
|
112
|
+
X-Ratelimit-Reset:
|
113
|
+
- '1445813888'
|
114
|
+
Cache-Control:
|
115
|
+
- private, max-age=60, s-maxage=60
|
116
|
+
X-Oauth-Scopes:
|
117
|
+
- gist, repo, user
|
118
|
+
X-Accepted-Oauth-Scopes:
|
119
|
+
- public_repo, repo
|
120
|
+
Location:
|
121
|
+
- https://api.github.com/repos/akerl/gemplate-test
|
122
|
+
Vary:
|
123
|
+
- Accept, Authorization, Cookie, X-GitHub-OTP
|
124
|
+
- Accept-Encoding
|
125
|
+
X-Github-Media-Type:
|
126
|
+
- github.v3; format=json
|
127
|
+
X-Xss-Protection:
|
128
|
+
- 1; mode=block
|
129
|
+
X-Frame-Options:
|
130
|
+
- deny
|
131
|
+
Content-Security-Policy:
|
132
|
+
- default-src 'none'
|
133
|
+
Access-Control-Allow-Credentials:
|
134
|
+
- 'true'
|
135
|
+
Access-Control-Expose-Headers:
|
136
|
+
- ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
|
137
|
+
X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
|
138
|
+
Access-Control-Allow-Origin:
|
139
|
+
- "*"
|
140
|
+
Strict-Transport-Security:
|
141
|
+
- max-age=31536000; includeSubdomains; preload
|
142
|
+
X-Content-Type-Options:
|
143
|
+
- nosniff
|
144
|
+
body:
|
145
|
+
encoding: UTF-8
|
146
|
+
string: '{"id":44933642,"name":"gemplate-test","full_name":"akerl/gemplate-test","owner":{"login":"akerl","id":491209,"avatar_url":"https://avatars.githubusercontent.com/u/491209?v=3","gravatar_id":"","url":"https://api.github.com/users/akerl","html_url":"https://github.com/akerl","followers_url":"https://api.github.com/users/akerl/followers","following_url":"https://api.github.com/users/akerl/following{/other_user}","gists_url":"https://api.github.com/users/akerl/gists{/gist_id}","starred_url":"https://api.github.com/users/akerl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akerl/subscriptions","organizations_url":"https://api.github.com/users/akerl/orgs","repos_url":"https://api.github.com/users/akerl/repos","events_url":"https://api.github.com/users/akerl/events{/privacy}","received_events_url":"https://api.github.com/users/akerl/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/akerl/gemplate-test","description":null,"fork":false,"url":"https://api.github.com/repos/akerl/gemplate-test","forks_url":"https://api.github.com/repos/akerl/gemplate-test/forks","keys_url":"https://api.github.com/repos/akerl/gemplate-test/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akerl/gemplate-test/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akerl/gemplate-test/teams","hooks_url":"https://api.github.com/repos/akerl/gemplate-test/hooks","issue_events_url":"https://api.github.com/repos/akerl/gemplate-test/issues/events{/number}","events_url":"https://api.github.com/repos/akerl/gemplate-test/events","assignees_url":"https://api.github.com/repos/akerl/gemplate-test/assignees{/user}","branches_url":"https://api.github.com/repos/akerl/gemplate-test/branches{/branch}","tags_url":"https://api.github.com/repos/akerl/gemplate-test/tags","blobs_url":"https://api.github.com/repos/akerl/gemplate-test/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akerl/gemplate-test/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akerl/gemplate-test/git/refs{/sha}","trees_url":"https://api.github.com/repos/akerl/gemplate-test/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akerl/gemplate-test/statuses/{sha}","languages_url":"https://api.github.com/repos/akerl/gemplate-test/languages","stargazers_url":"https://api.github.com/repos/akerl/gemplate-test/stargazers","contributors_url":"https://api.github.com/repos/akerl/gemplate-test/contributors","subscribers_url":"https://api.github.com/repos/akerl/gemplate-test/subscribers","subscription_url":"https://api.github.com/repos/akerl/gemplate-test/subscription","commits_url":"https://api.github.com/repos/akerl/gemplate-test/commits{/sha}","git_commits_url":"https://api.github.com/repos/akerl/gemplate-test/git/commits{/sha}","comments_url":"https://api.github.com/repos/akerl/gemplate-test/comments{/number}","issue_comment_url":"https://api.github.com/repos/akerl/gemplate-test/issues/comments{/number}","contents_url":"https://api.github.com/repos/akerl/gemplate-test/contents/{+path}","compare_url":"https://api.github.com/repos/akerl/gemplate-test/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akerl/gemplate-test/merges","archive_url":"https://api.github.com/repos/akerl/gemplate-test/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akerl/gemplate-test/downloads","issues_url":"https://api.github.com/repos/akerl/gemplate-test/issues{/number}","pulls_url":"https://api.github.com/repos/akerl/gemplate-test/pulls{/number}","milestones_url":"https://api.github.com/repos/akerl/gemplate-test/milestones{/number}","notifications_url":"https://api.github.com/repos/akerl/gemplate-test/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akerl/gemplate-test/labels{/name}","releases_url":"https://api.github.com/repos/akerl/gemplate-test/releases{/id}","created_at":"2015-10-25T22:47:59Z","updated_at":"2015-10-25T22:47:59Z","pushed_at":"2015-10-25T22:47:59Z","git_url":"git://github.com/akerl/gemplate-test.git","ssh_url":"git@github.com:akerl/gemplate-test.git","clone_url":"https://github.com/akerl/gemplate-test.git","svn_url":"https://github.com/akerl/gemplate-test","homepage":null,"size":0,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master","permissions":{"admin":true,"push":true,"pull":true},"network_count":0,"subscribers_count":1}'
|
147
|
+
http_version:
|
148
|
+
recorded_at: Sun, 25 Oct 2015 22:47:59 GMT
|
149
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,143 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://raw.githubusercontent.com/akerl/licenses/master/MIT.txt
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Security-Policy:
|
16
|
+
- default-src 'none'
|
17
|
+
X-Xss-Protection:
|
18
|
+
- 1; mode=block
|
19
|
+
X-Frame-Options:
|
20
|
+
- deny
|
21
|
+
X-Content-Type-Options:
|
22
|
+
- nosniff
|
23
|
+
Strict-Transport-Security:
|
24
|
+
- max-age=31536000
|
25
|
+
Content-Type:
|
26
|
+
- text/plain; charset=utf-8
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=300
|
29
|
+
Content-Length:
|
30
|
+
- '1085'
|
31
|
+
Accept-Ranges:
|
32
|
+
- bytes
|
33
|
+
Date:
|
34
|
+
- Sun, 25 Oct 2015 22:50:44 GMT
|
35
|
+
Via:
|
36
|
+
- 1.1 varnish
|
37
|
+
Connection:
|
38
|
+
- keep-alive
|
39
|
+
X-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Cache-Hits:
|
42
|
+
- '0'
|
43
|
+
Vary:
|
44
|
+
- Authorization,Accept-Encoding
|
45
|
+
Access-Control-Allow-Origin:
|
46
|
+
- "*"
|
47
|
+
Expires:
|
48
|
+
- Sun, 25 Oct 2015 22:55:44 GMT
|
49
|
+
Source-Age:
|
50
|
+
- '0'
|
51
|
+
body:
|
52
|
+
encoding: ASCII-8BIT
|
53
|
+
string: |+
|
54
|
+
The MIT License (MIT)
|
55
|
+
|
56
|
+
Copyright (c) CURRENT_YEAR FULL_NAME
|
57
|
+
|
58
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
59
|
+
of this software and associated documentation files (the "Software"), to deal
|
60
|
+
in the Software without restriction, including without limitation the rights
|
61
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
62
|
+
copies of the Software, and to permit persons to whom the Software is
|
63
|
+
furnished to do so, subject to the following conditions:
|
64
|
+
|
65
|
+
The above copyright notice and this permission notice shall be included in
|
66
|
+
all copies or substantial portions of the Software.
|
67
|
+
|
68
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
69
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
70
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
71
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
72
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
73
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
74
|
+
THE SOFTWARE.
|
75
|
+
|
76
|
+
http_version:
|
77
|
+
recorded_at: Sun, 25 Oct 2015 22:50:45 GMT
|
78
|
+
- request:
|
79
|
+
method: post
|
80
|
+
uri: https://api.github.com/user/repos
|
81
|
+
body:
|
82
|
+
encoding: UTF-8
|
83
|
+
string: '{"has_wiki":false,"name":"gemplate-test"}'
|
84
|
+
headers:
|
85
|
+
Accept:
|
86
|
+
- application/vnd.github.v3+json
|
87
|
+
User-Agent:
|
88
|
+
- Octokit Ruby Gem 4.1.1
|
89
|
+
Content-Type:
|
90
|
+
- application/json
|
91
|
+
Accept-Encoding:
|
92
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
93
|
+
response:
|
94
|
+
status:
|
95
|
+
code: 422
|
96
|
+
message: Unprocessable Entity
|
97
|
+
headers:
|
98
|
+
Server:
|
99
|
+
- GitHub.com
|
100
|
+
Date:
|
101
|
+
- Sun, 25 Oct 2015 22:50:44 GMT
|
102
|
+
Content-Type:
|
103
|
+
- application/json; charset=utf-8
|
104
|
+
Content-Length:
|
105
|
+
- '215'
|
106
|
+
Status:
|
107
|
+
- 422 Unprocessable Entity
|
108
|
+
X-Ratelimit-Limit:
|
109
|
+
- '5000'
|
110
|
+
X-Ratelimit-Remaining:
|
111
|
+
- '4873'
|
112
|
+
X-Ratelimit-Reset:
|
113
|
+
- '1445813888'
|
114
|
+
X-Oauth-Scopes:
|
115
|
+
- gist, repo, user
|
116
|
+
X-Accepted-Oauth-Scopes:
|
117
|
+
- public_repo, repo
|
118
|
+
X-Github-Media-Type:
|
119
|
+
- github.v3; format=json
|
120
|
+
X-Xss-Protection:
|
121
|
+
- 1; mode=block
|
122
|
+
X-Frame-Options:
|
123
|
+
- deny
|
124
|
+
Content-Security-Policy:
|
125
|
+
- default-src 'none'
|
126
|
+
Access-Control-Allow-Credentials:
|
127
|
+
- 'true'
|
128
|
+
Access-Control-Expose-Headers:
|
129
|
+
- ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset,
|
130
|
+
X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
|
131
|
+
Access-Control-Allow-Origin:
|
132
|
+
- "*"
|
133
|
+
Strict-Transport-Security:
|
134
|
+
- max-age=31536000; includeSubdomains; preload
|
135
|
+
X-Content-Type-Options:
|
136
|
+
- nosniff
|
137
|
+
body:
|
138
|
+
encoding: UTF-8
|
139
|
+
string: '{"message":"Validation Failed","errors":[{"resource":"Repository","code":"custom","field":"name","message":"name
|
140
|
+
already exists on this account"}],"documentation_url":"https://developer.github.com/v3/repos/#create"}'
|
141
|
+
http_version:
|
142
|
+
recorded_at: Sun, 25 Oct 2015 22:50:45 GMT
|
143
|
+
recorded_with: VCR 2.9.3
|
data/spec/gemplate_spec.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
|
+
ROOT = Dir.pwd
|
5
|
+
TEST_GEM_NAME = 'gemplate-test'
|
6
|
+
|
4
7
|
describe Gemplate do
|
5
8
|
describe '#new' do
|
6
9
|
it 'creates gem objects' do
|
@@ -11,67 +14,88 @@ describe Gemplate do
|
|
11
14
|
describe Gem do
|
12
15
|
let(:subject) do
|
13
16
|
Gemplate::Gem.new(
|
14
|
-
name:
|
17
|
+
name: TEST_GEM_NAME,
|
15
18
|
user: 'akerl',
|
16
19
|
full_name: 'my_full_name',
|
17
20
|
email: 'my_email@example.org',
|
18
|
-
license: 'MIT'
|
21
|
+
license: 'MIT',
|
22
|
+
authfile: '../../spec/creds.yml'
|
19
23
|
)
|
20
24
|
end
|
21
25
|
|
22
|
-
before(:
|
23
|
-
Dir.chdir
|
24
|
-
FileUtils.rm_rf
|
26
|
+
before(:each) do
|
27
|
+
Dir.chdir "#{ROOT}/.test"
|
28
|
+
FileUtils.rm_rf TEST_GEM_NAME
|
25
29
|
end
|
26
|
-
after(:each) { FileUtils.rm_rf 'gemplate' }
|
27
30
|
|
28
31
|
describe '#create' do
|
29
32
|
it 'makes a directory from the template' do
|
30
|
-
|
31
|
-
|
33
|
+
VCR.use_cassette('subject_create') do
|
34
|
+
subject.create
|
35
|
+
end
|
36
|
+
expect(Dir.exist? TEST_GEM_NAME).to be_truthy
|
32
37
|
end
|
33
38
|
|
34
39
|
it 'raises an error if the directory already exists' do
|
35
|
-
|
36
|
-
|
40
|
+
VCR.use_cassette('subject_create') do
|
41
|
+
subject.create
|
42
|
+
expect { subject.create }.to raise_error RuntimeError
|
43
|
+
end
|
37
44
|
end
|
38
45
|
|
39
46
|
it 'adds a license file' do
|
40
|
-
|
41
|
-
|
47
|
+
VCR.use_cassette('subject_create') do
|
48
|
+
subject.create
|
49
|
+
end
|
50
|
+
expect(File.exist? "#{TEST_GEM_NAME}/LICENSE").to be_truthy
|
42
51
|
end
|
43
52
|
|
44
53
|
it 'fails if you try to pull a non-existent license' do
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
54
|
+
VCR.use_cassette('bad_license') do
|
55
|
+
gem = Gemplate::Gem.new(
|
56
|
+
name: TEST_GEM_NAME,
|
57
|
+
user: 'akerl',
|
58
|
+
full_name: 'my_full_name',
|
59
|
+
email: 'my_email@example.org',
|
60
|
+
license: 'MIT-3',
|
61
|
+
authfile: '../../spec/creds.yml'
|
62
|
+
)
|
63
|
+
expect { gem.create }.to raise_error ArgumentError
|
64
|
+
end
|
53
65
|
end
|
54
66
|
|
55
67
|
it 'replaces placeholders in files' do
|
56
|
-
|
57
|
-
|
68
|
+
VCR.use_cassette('subject_create') do
|
69
|
+
subject.create
|
70
|
+
end
|
71
|
+
expect(
|
72
|
+
File.read "#{TEST_GEM_NAME}/README.md"
|
73
|
+
).to_not match(/^REPO_NAME/)
|
58
74
|
end
|
59
75
|
|
60
76
|
it 'adjusts file names' do
|
61
|
-
|
62
|
-
|
63
|
-
|
77
|
+
VCR.use_cassette('subject_create') do
|
78
|
+
subject.create
|
79
|
+
end
|
80
|
+
expect(
|
81
|
+
File.exist? "#{TEST_GEM_NAME}/#{TEST_GEM_NAME}.gemspec"
|
82
|
+
).to be_truthy
|
83
|
+
expect(File.exist? "#{TEST_GEM_NAME}/REPO_NAME.gemspec").to be_falsey
|
64
84
|
end
|
65
85
|
|
66
86
|
it 'makes the git repo' do
|
67
|
-
|
68
|
-
|
87
|
+
VCR.use_cassette('subject_create') do
|
88
|
+
subject.create
|
89
|
+
end
|
90
|
+
expect(Dir.exist? "#{TEST_GEM_NAME}/.git").to be_truthy
|
69
91
|
[
|
70
92
|
/remote\.origin\.url/,
|
71
93
|
/branch\.master\.remote=origin/,
|
72
94
|
%r{branch\.master\.merge=refs\/heads\/master}
|
73
95
|
].each do |regex|
|
74
|
-
expect(
|
96
|
+
expect(
|
97
|
+
`git config -f #{TEST_GEM_NAME}/.git/config -l`
|
98
|
+
).to match(regex)
|
75
99
|
end
|
76
100
|
end
|
77
101
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,3 +9,15 @@ end
|
|
9
9
|
|
10
10
|
require 'rspec'
|
11
11
|
require 'gemplate'
|
12
|
+
|
13
|
+
require 'vcr'
|
14
|
+
VCR.configure do |c|
|
15
|
+
c.cassette_library_dir = 'spec/fixtures/cassettes'
|
16
|
+
c.hook_into :webmock
|
17
|
+
c.before_record do |i|
|
18
|
+
i.request.headers.delete 'Authorization'
|
19
|
+
%w(Etag X-Github-Request-Id X-Served-By).each do |header|
|
20
|
+
i.response.headers.delete header
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/template/circle.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
dependencies:
|
2
|
+
override:
|
3
|
+
- 'rvm-exec 1.9.3-p551 bundle install'
|
4
|
+
- 'rvm-exec 2.0.0-p645 bundle install'
|
5
|
+
- 'rvm-exec 2.1.6 bundle install'
|
6
|
+
- 'rvm-exec 2.2.2 bundle install'
|
7
|
+
test:
|
8
|
+
override:
|
9
|
+
- 'rvm-exec 1.9.3-p551 bundle exec rake'
|
10
|
+
- 'rvm-exec 2.0.0-p645 bundle exec rake'
|
11
|
+
- 'rvm-exec 2.1.6 bundle exec rake'
|
12
|
+
- 'rvm-exec 2.2.2 bundle exec rake'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemplate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rugged
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: octoauth
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.3.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: octokit
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 4.1.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 4.1.0
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: curb
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +150,34 @@ dependencies:
|
|
122
150
|
- - "~>"
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: 2.0.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: webmock
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 1.22.0
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.22.0
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: vcr
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 2.9.2
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 2.9.2
|
125
181
|
description: Creates a basic repository layout for a new gem
|
126
182
|
email: me@lesaker.org
|
127
183
|
executables:
|
@@ -139,8 +195,13 @@ files:
|
|
139
195
|
- README.md
|
140
196
|
- Rakefile
|
141
197
|
- bin/gemplate
|
198
|
+
- circle.yml
|
142
199
|
- gemplate.gemspec
|
143
200
|
- lib/gemplate.rb
|
201
|
+
- spec/creds.yml
|
202
|
+
- spec/fixtures/cassettes/bad_license.yml
|
203
|
+
- spec/fixtures/cassettes/subject_create.yml
|
204
|
+
- spec/fixtures/cassettes/subject_create_twice.yml
|
144
205
|
- spec/gemplate_spec.rb
|
145
206
|
- spec/spec_helper.rb
|
146
207
|
- template/.gitignore
|
@@ -150,6 +211,7 @@ files:
|
|
150
211
|
- template/README.md
|
151
212
|
- template/REPO_NAME.gemspec
|
152
213
|
- template/Rakefile
|
214
|
+
- template/circle.yml
|
153
215
|
- template/lib/REPO_NAME.rb
|
154
216
|
- template/spec/REPO_NAME_spec.rb
|
155
217
|
- template/spec/spec_helper.rb
|
@@ -173,10 +235,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
235
|
version: '0'
|
174
236
|
requirements: []
|
175
237
|
rubyforge_project:
|
176
|
-
rubygems_version: 2.4.5
|
238
|
+
rubygems_version: 2.4.5.1
|
177
239
|
signing_key:
|
178
240
|
specification_version: 4
|
179
241
|
summary: Bootstrap tool for making gems
|
180
242
|
test_files:
|
243
|
+
- spec/creds.yml
|
244
|
+
- spec/fixtures/cassettes/bad_license.yml
|
245
|
+
- spec/fixtures/cassettes/subject_create.yml
|
246
|
+
- spec/fixtures/cassettes/subject_create_twice.yml
|
181
247
|
- spec/gemplate_spec.rb
|
182
248
|
- spec/spec_helper.rb
|