boxen 1.1.2 → 1.2.0
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/boxen.gemspec +1 -1
- data/lib/boxen/config.rb +47 -11
- data/lib/boxen/hook/github_issue.rb +1 -1
- data/lib/boxen/puppeteer.rb +14 -6
- data/test/boxen_config_test.rb +85 -0
- data/test/boxen_hook_github_issue_test.rb +10 -0
- metadata +3 -3
data/boxen.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "boxen"
|
5
|
-
gem.version = "1.
|
5
|
+
gem.version = "1.2.0"
|
6
6
|
gem.authors = ["John Barnette", "Will Farrington"]
|
7
7
|
gem.email = ["jbarnette@github.com", "wfarr@github.com"]
|
8
8
|
gem.description = "Manage Mac development boxes with love (and Puppet)."
|
data/lib/boxen/config.rb
CHANGED
@@ -29,6 +29,14 @@ module Boxen
|
|
29
29
|
config.password = keychain.password
|
30
30
|
config.token = keychain.token
|
31
31
|
|
32
|
+
if config.enterprise?
|
33
|
+
# configure to talk to GitHub Enterprise
|
34
|
+
Octokit.configure do |c|
|
35
|
+
c.api_endpoint = "#{config.ghurl}/api/v3"
|
36
|
+
c.web_endpoint = config.ghurl
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
32
40
|
yield config if block_given?
|
33
41
|
end
|
34
42
|
end
|
@@ -39,16 +47,18 @@ module Boxen
|
|
39
47
|
|
40
48
|
def self.save(config)
|
41
49
|
attrs = {
|
42
|
-
:email
|
43
|
-
:fde
|
44
|
-
:homedir
|
45
|
-
:login
|
46
|
-
:name
|
47
|
-
:puppetdir
|
48
|
-
:repodir
|
49
|
-
:reponame
|
50
|
-
:
|
51
|
-
:
|
50
|
+
:email => config.email,
|
51
|
+
:fde => config.fde?,
|
52
|
+
:homedir => config.homedir,
|
53
|
+
:login => config.login,
|
54
|
+
:name => config.name,
|
55
|
+
:puppetdir => config.puppetdir,
|
56
|
+
:repodir => config.repodir,
|
57
|
+
:reponame => config.reponame,
|
58
|
+
:ghurl => config.ghurl,
|
59
|
+
:srcdir => config.srcdir,
|
60
|
+
:user => config.user,
|
61
|
+
:repotemplate => config.repotemplate
|
52
62
|
}
|
53
63
|
|
54
64
|
file = "#{config.homedir}/config/boxen/defaults.json"
|
@@ -220,9 +230,12 @@ module Boxen
|
|
220
230
|
return override unless override.nil?
|
221
231
|
|
222
232
|
if File.directory? repodir
|
233
|
+
ghuri = URI(ghurl)
|
223
234
|
url = Dir.chdir(repodir) { `git config remote.origin.url`.strip }
|
224
235
|
|
225
|
-
|
236
|
+
# find the path and strip off the .git suffix
|
237
|
+
repo_exp = Regexp.new Regexp.escape(ghuri.host) + "[/:]([^/]+/[^/]+)"
|
238
|
+
if $?.success? && repo_exp.match(url)
|
226
239
|
@reponame = $1.sub /\.git$/, ""
|
227
240
|
end
|
228
241
|
end
|
@@ -230,6 +243,29 @@ module Boxen
|
|
230
243
|
|
231
244
|
attr_writer :reponame
|
232
245
|
|
246
|
+
# GitHub location (public or GitHub Enterprise)
|
247
|
+
|
248
|
+
def ghurl
|
249
|
+
@ghurl || ENV["BOXEN_GITHUB_ENTERPRISE_URL"] || "https://github.com"
|
250
|
+
end
|
251
|
+
|
252
|
+
attr_writer :ghurl
|
253
|
+
|
254
|
+
# Repository URL template (required for GitHub Enterprise)
|
255
|
+
|
256
|
+
def repotemplate
|
257
|
+
default = 'https://github.com/%s'
|
258
|
+
@repotemplate || ENV["BOXEN_REPO_URL_TEMPLATE"] || default
|
259
|
+
end
|
260
|
+
|
261
|
+
attr_writer :repotemplate
|
262
|
+
|
263
|
+
# Does this Boxen use a GitHub Enterprise instance?
|
264
|
+
|
265
|
+
def enterprise?
|
266
|
+
ghurl != "https://github.com"
|
267
|
+
end
|
268
|
+
|
233
269
|
# The directory where repos live. Default is
|
234
270
|
# `"/Users/#{user}/src"`.
|
235
271
|
|
data/lib/boxen/puppeteer.rb
CHANGED
@@ -27,6 +27,14 @@ module Boxen
|
|
27
27
|
[puppet, "apply", flags, manifest].flatten
|
28
28
|
end
|
29
29
|
|
30
|
+
def hiera_config
|
31
|
+
if File.exist? "#{config.repodir}/config/hiera.yaml"
|
32
|
+
"#{config.repodir}/config/hiera.yaml"
|
33
|
+
else
|
34
|
+
"/dev/null"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
30
38
|
def flags
|
31
39
|
flags = []
|
32
40
|
root = File.expand_path "../../..", __FILE__
|
@@ -40,8 +48,7 @@ module Boxen
|
|
40
48
|
flags << ["--modulepath", "#{config.repodir}/modules:#{config.repodir}/shared"]
|
41
49
|
|
42
50
|
# Don't ever complain about Hiera to me
|
43
|
-
|
44
|
-
flags << ["--hiera_config", "/dev/null"]
|
51
|
+
flags << ["--hiera_config", hiera_config]
|
45
52
|
|
46
53
|
# Log to both the console and a file.
|
47
54
|
|
@@ -82,10 +89,11 @@ module Boxen
|
|
82
89
|
if File.file? "Puppetfile"
|
83
90
|
librarian = "#{config.repodir}/bin/librarian-puppet"
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
92
|
+
unless config.enterprise?
|
93
|
+
# Set an environment variable for librarian-puppet's
|
94
|
+
# github_tarball source strategy.
|
95
|
+
ENV["GITHUB_API_TOKEN"] = config.token
|
96
|
+
end
|
89
97
|
|
90
98
|
librarian_command = [librarian, "install", "--path=#{config.repodir}/shared"]
|
91
99
|
librarian_command << "--verbose" if config.debug?
|
data/test/boxen_config_test.rb
CHANGED
@@ -135,6 +135,51 @@ class BoxenConfigTest < Boxen::Test
|
|
135
135
|
ENV["BOXEN_PUPPET_DIR"] = val
|
136
136
|
end
|
137
137
|
|
138
|
+
def test_ghurl
|
139
|
+
@config.ghurl = "https://git.foo.com"
|
140
|
+
assert_equal "https://git.foo.com", @config.ghurl
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_ghurl_blank
|
144
|
+
assert_equal "https://github.com", @config.ghurl
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_gheurl_env_var
|
148
|
+
val = ENV['BOXEN_GITHUB_ENTERPRISE_URL']
|
149
|
+
|
150
|
+
ENV['BOXEN_GITHUB_ENTERPRISE_URL'] = 'https://git.foo.com'
|
151
|
+
assert_equal "https://git.foo.com", @config.ghurl
|
152
|
+
|
153
|
+
ENV['BOXEN_GITHUB_ENTERPRISE_URL'] = val
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_enterprise_true
|
157
|
+
@config.ghurl = "https://git.foo.com"
|
158
|
+
assert @config.enterprise?
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_enterprise_false
|
162
|
+
assert @config.enterprise? == false
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_repotemplate
|
166
|
+
@config.repotemplate = 'https://git.foo.com/%s'
|
167
|
+
assert_equal 'https://git.foo.com/%s', @config.repotemplate
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_repotemplate_blank
|
171
|
+
assert_equal 'https://github.com/%s', @config.repotemplate
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_repotemplate_env_var
|
175
|
+
val = ENV['BOXEN_REPO_URL_TEMPLATE']
|
176
|
+
|
177
|
+
ENV['BOXEN_REPO_URL_TEMPLATE'] = 'https://git.foo.com/%s'
|
178
|
+
assert_equal 'https://git.foo.com/%s', @config.repotemplate
|
179
|
+
|
180
|
+
ENV['BOXEN_REPO_URL_TEMPLATE'] = val
|
181
|
+
end
|
182
|
+
|
138
183
|
def test_repodir
|
139
184
|
@config.repodir = nil
|
140
185
|
assert_equal Dir.pwd, @config.repodir
|
@@ -175,6 +220,29 @@ class BoxenConfigTest < Boxen::Test
|
|
175
220
|
assert_equal "some-org/our-boxen", @config.reponame
|
176
221
|
end
|
177
222
|
|
223
|
+
def test_reponame_git_config_ghurl
|
224
|
+
@config.ghurl = 'https://git.foo.com'
|
225
|
+
@config.expects(:"`").with("git config remote.origin.url").
|
226
|
+
returns "https://git.foo.com/some-org/our-boxen\n"
|
227
|
+
|
228
|
+
assert_equal "some-org/our-boxen", @config.reponame
|
229
|
+
end
|
230
|
+
|
231
|
+
def test_reponame_git_config_git_protocol
|
232
|
+
@config.expects(:"`").with("git config remote.origin.url").
|
233
|
+
returns "git@github.com:some-org/our-boxen.git\n"
|
234
|
+
|
235
|
+
assert_equal "some-org/our-boxen", @config.reponame
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_reponame_git_config_git_protocol_ghurl
|
239
|
+
@config.ghurl = 'https://git.foo.com'
|
240
|
+
@config.expects(:"`").with("git config remote.origin.url").
|
241
|
+
returns "git@git.foo.com:some-org/our-boxen.git\n"
|
242
|
+
|
243
|
+
assert_equal "some-org/our-boxen", @config.reponame
|
244
|
+
end
|
245
|
+
|
178
246
|
def test_reponame_git_config_bad_exit
|
179
247
|
@config.expects(:"`").with("git config remote.origin.url").returns ""
|
180
248
|
$?.expects(:success?).returns false
|
@@ -190,6 +258,14 @@ class BoxenConfigTest < Boxen::Test
|
|
190
258
|
assert_nil @config.reponame
|
191
259
|
end
|
192
260
|
|
261
|
+
def test_reponame_git_config_bad_url_git_protocol
|
262
|
+
@config.expects(:"`").with("git config remote.origin.url").
|
263
|
+
returns "git@spumco.com:some-org/our-boxen.git\n"
|
264
|
+
$?.expects(:success?).returns true
|
265
|
+
|
266
|
+
assert_nil @config.reponame
|
267
|
+
end
|
268
|
+
|
193
269
|
def test_reponame_git_config_git_extension
|
194
270
|
@config.expects(:"`").with("git config remote.origin.url").
|
195
271
|
returns "https://github.com/some-org/our-boxen.git\n"
|
@@ -198,6 +274,15 @@ class BoxenConfigTest < Boxen::Test
|
|
198
274
|
assert_equal "some-org/our-boxen", @config.reponame
|
199
275
|
end
|
200
276
|
|
277
|
+
def test_reponame_git_config_git_extension_ghurl
|
278
|
+
@config.ghurl = 'https://git.foo.com'
|
279
|
+
@config.expects(:"`").with("git config remote.origin.url").
|
280
|
+
returns "https://git.foo.com/some-org/our-boxen.git\n"
|
281
|
+
$?.expects(:success?).returns true
|
282
|
+
|
283
|
+
assert_equal "some-org/our-boxen", @config.reponame
|
284
|
+
end
|
285
|
+
|
201
286
|
def test_srcdir
|
202
287
|
val = ENV["BOXEN_SRC_DIR"]
|
203
288
|
ENV["BOXEN_SRC_DIR"] = nil
|
@@ -56,6 +56,16 @@ class BoxenHookGitHubIssueTest < Boxen::Test
|
|
56
56
|
assert_equal expected, @hook.compare_url
|
57
57
|
end
|
58
58
|
|
59
|
+
def test_compare_url_ghurl
|
60
|
+
@config.reponame = repo = 'org/repo'
|
61
|
+
@config.ghurl = 'https://git.foo.com'
|
62
|
+
sha = 'deadbeef'
|
63
|
+
@checkout.expects(:sha).returns(sha)
|
64
|
+
|
65
|
+
expected = "https://git.foo.com/#{repo}/compare/#{sha}...master"
|
66
|
+
assert_equal expected, @hook.compare_url
|
67
|
+
end
|
68
|
+
|
59
69
|
def test_hostname
|
60
70
|
@hook.expects(:"`").with("hostname").returns "whatevs.local\n"
|
61
71
|
assert_equal "whatevs.local", @hook.hostname
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
- 1
|
8
7
|
- 2
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 1.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- John Barnette
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-
|
18
|
+
date: 2013-05-11 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|