boxen 2.1.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c49e4e86a9f5b48f4e1b3132c9fe255987f2462c
4
- data.tar.gz: 1815fc3e8007ff5f144a02cfeb1c371e9d403de5
3
+ metadata.gz: cffbc20a2321cfcfdca7fe583bd73118486dcc77
4
+ data.tar.gz: 73893a045299bebec51c8d270af6e76c18c37a83
5
5
  SHA512:
6
- metadata.gz: 6744941ef2b242aee8a50b4db4240618d9db566611cea73ed1ef568481743579bda5712f1149e99ee9bdd11834e83564bb5f21082141d593206189aa4efe56a8
7
- data.tar.gz: a920d2c2465f6077b7ef9faa189f1cf521a11b7a80aa180e35bc1f16ca4d16f1f5c8eb5990985a2ae30ac672f17d2b3558bff9a8bdb03e15daa8fdf41db25c43
6
+ metadata.gz: c5f2f13dddcee592cfef053fb6b0a17a2c690d1ed9e8e100e83cd90c4bc525636505051a60b0b9a8cc71b1882ea55f92d346c67f86c4a6d6a9d27fbd88cc8015
7
+ data.tar.gz: fb9d784e16383c1e52a88a05791ffa1c42dbf4a8021259230d97d4bf89a1cf5c8474f5cec03fd8072380eb50d206ae2ff7362bd8f2c8eb7f79961810fc29ea0d
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /log
9
9
  /puppet
10
10
  /script/Boxen.dSYM
11
+ /.ruby-version
@@ -2,9 +2,9 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "boxen"
5
- gem.version = "2.1.0"
6
- gem.authors = ["John Barnette", "Will Farrington"]
7
- gem.email = ["jbarnette@github.com", "wfarr@github.com"]
5
+ gem.version = "2.2.0"
6
+ gem.authors = ["John Barnette", "Will Farrington", "David Goodlad"]
7
+ gem.email = ["jbarnette@github.com", "wfarr@github.com", "dgoodlad@github.com"]
8
8
  gem.description = "Manage Mac development boxes with love (and Puppet)."
9
9
  gem.summary = "You know, for laptops and stuff."
10
10
  gem.homepage = "https://github.com/boxen/boxen"
@@ -65,25 +65,7 @@ class Boxen::Preflight::Creds < Boxen::Preflight
65
65
  end
66
66
 
67
67
  def run
68
- console = HighLine.new
69
-
70
- if ENV['BOXEN_GITHUB_LOGIN'] || ENV['BOXEN_GITHUB_PASSWORD']
71
- warn "Oh, looks like you've provided your username and password as environmental variables..."
72
- config.login = ENV['BOXEN_GITHUB_LOGIN']
73
- @password = ENV['BOXEN_GITHUB_PASSWORD']
74
- else
75
- warn "Hey, I need your current GitHub credentials to continue."
76
-
77
- config.login = console.ask "GitHub login: " do |q|
78
- q.default = config.login || config.user
79
- q.validate = /\A[^@]+\Z/
80
- end
81
-
82
- @password = console.ask "GitHub password: " do |q|
83
- q.echo = "*"
84
- end
85
- end
86
-
68
+ fetch_login_and_password
87
69
  tokens = get_tokens
88
70
 
89
71
  unless auth = tokens.detect { |a| a.note == "Boxen" }
@@ -101,4 +83,26 @@ class Boxen::Preflight::Creds < Boxen::Preflight
101
83
  "I was able to get your OAuth token, but was unable to use it."
102
84
  end
103
85
  end
86
+
87
+ private
88
+
89
+ def fetch_login_and_password
90
+ console = HighLine.new
91
+
92
+ config.login = fetch_from_env("login") || console.ask("GitHub login: ") do |q|
93
+ q.default = config.login || config.user
94
+ q.validate = /\A[^@]+\Z/
95
+ end
96
+
97
+ @password = fetch_from_env("password") || console.ask("GitHub password: ") do |q|
98
+ q.echo = "*"
99
+ end
100
+ end
101
+
102
+ def fetch_from_env(thing)
103
+ key = "BOXEN_GITHUB_#{thing.upcase}"
104
+ return unless found = ENV[key]
105
+ warn "Oh, looks like you've provided your #{thing} as environmental variable..."
106
+ found
107
+ end
104
108
  end
@@ -127,7 +127,7 @@ module Boxen
127
127
  # --restart-services restarts all services
128
128
 
129
129
  if flags.restart_services?
130
- Boxen::Service.list.each do |service|
130
+ Boxen::Service.list_enabled.each do |service|
131
131
  puts "Restarting #{service}..."
132
132
  service.disable
133
133
  service.enable
@@ -10,6 +10,13 @@ module Boxen
10
10
  end
11
11
  end
12
12
 
13
+ def self.list_enabled
14
+ prefix = /^dev\./
15
+ enabled = capture_output("sudo /bin/launchctl list").split("\n").map { |l| l.split(/\s/) }.map(&:last)
16
+ names = enabled.grep(prefix).map { |name| name.sub(prefix, "") }.compact
17
+ names.map { |name| new(name) }
18
+ end
19
+
13
20
  def initialize(name)
14
21
  @name = name
15
22
  end
@@ -26,9 +33,12 @@ module Boxen
26
33
  Boxen::Util.sudo('/bin/launchctl', 'unload', '-w', location)
27
34
  end
28
35
 
29
-
30
36
  private
31
37
 
38
+ def self.capture_output(command)
39
+ `#{command}`
40
+ end
41
+
32
42
  def location
33
43
  "#{self.class.location}/dev.#{name}.plist"
34
44
  end
@@ -1,4 +1,5 @@
1
1
  require 'boxen/test'
2
+ require 'boxen/config'
2
3
  require 'boxen/preflight/creds'
3
4
 
4
5
  class BoxenPreflightCredsTest < Boxen::Test
@@ -7,6 +8,8 @@ class BoxenPreflightCredsTest < Boxen::Test
7
8
  c.user = 'mojombo'
8
9
  c.token = 'sekr3t!'
9
10
  end
11
+ ENV.delete("BOXEN_GITHUB_LOGIN")
12
+ ENV.delete("BOXEN_GITHUB_PASSWORD")
10
13
  end
11
14
 
12
15
  def test_basic
@@ -37,4 +40,41 @@ class BoxenPreflightCredsTest < Boxen::Test
37
40
  preflight.get_tokens
38
41
  assert_equal "123456", preflight.otp
39
42
  end
43
+
44
+ def test_fetch_login_and_password_when_nothing_is_given_in_env
45
+ # fetches login and password by asking
46
+ preflight = Boxen::Preflight::Creds.new @config
47
+ HighLine.any_instance.expects(:ask).with("GitHub login: ").returns "l"
48
+ HighLine.any_instance.expects(:ask).with("GitHub password: ").returns "p"
49
+ preflight.send(:fetch_login_and_password)
50
+
51
+ assert_equal "l", @config.login
52
+ assert_equal "p", preflight.instance_variable_get(:@password)
53
+ end
54
+
55
+ def test_fetch_password_when_login_is_given_in_env
56
+ # fetches only password by asking
57
+ ENV["BOXEN_GITHUB_LOGIN"] = "l"
58
+ preflight = Boxen::Preflight::Creds.new @config
59
+ preflight.expects(:warn)
60
+ HighLine.any_instance.expects(:ask).with("GitHub login: ").never
61
+ HighLine.any_instance.expects(:ask).with("GitHub password: ").returns "p"
62
+ preflight.send(:fetch_login_and_password)
63
+
64
+ assert_equal "l", @config.login
65
+ assert_equal "p", preflight.instance_variable_get(:@password)
66
+ end
67
+
68
+ def test_fetch_login_when_password_is_given_in_env
69
+ # fetches only login by asking
70
+ ENV["BOXEN_GITHUB_PASSWORD"] = "p"
71
+ preflight = Boxen::Preflight::Creds.new @config
72
+ preflight.expects(:warn)
73
+ HighLine.any_instance.expects(:ask).with("GitHub login: ").returns "l"
74
+ HighLine.any_instance.expects(:ask).with("GitHub password: ").never
75
+ preflight.send(:fetch_login_and_password)
76
+
77
+ assert_equal "l", @config.login
78
+ assert_equal "p", preflight.instance_variable_get(:@password)
79
+ end
40
80
  end
@@ -118,7 +118,7 @@ class BoxenRunnerTest < Boxen::Test
118
118
  service.expects(:disable).once
119
119
  service.expects(:enable).once
120
120
  end
121
- Boxen::Service.stubs(:list).returns(services)
121
+ Boxen::Service.stubs(:list_enabled).returns(services)
122
122
 
123
123
  assert_raises(SystemExit) do
124
124
  runner.process
@@ -12,6 +12,12 @@ class BoxenServiceTest < Boxen::Test
12
12
  assert_equal ['other', 'test'], services.collect(&:name).sort
13
13
  end
14
14
 
15
+ def test_list_enabled
16
+ Boxen::Service.expects(:capture_output).with("sudo /bin/launchctl list").returns "foo bar dev.baz\nfoo bar bazz"
17
+ services = Boxen::Service.list_enabled
18
+ assert_equal ['baz'], services.collect(&:name)
19
+ end
20
+
15
21
  def test_enable
16
22
  service = Boxen::Service.new('blip')
17
23
  Boxen::Util.expects(:sudo).with('/bin/launchctl', 'load', '-w',
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boxen
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Barnette
8
8
  - Will Farrington
9
+ - David Goodlad
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-11-12 00:00:00.000000000 Z
13
+ date: 2013-12-23 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: ansi
@@ -147,12 +148,12 @@ description: Manage Mac development boxes with love (and Puppet).
147
148
  email:
148
149
  - jbarnette@github.com
149
150
  - wfarr@github.com
151
+ - dgoodlad@github.com
150
152
  executables: []
151
153
  extensions: []
152
154
  extra_rdoc_files: []
153
155
  files:
154
156
  - .gitignore
155
- - .ruby-version
156
157
  - .travis.yml
157
158
  - Gemfile
158
159
  - LICENSE
@@ -265,3 +266,4 @@ test_files:
265
266
  - test/fixtures/repo/modules/projects/manifests/first-project.pp
266
267
  - test/fixtures/repo/modules/projects/manifests/second-project.pp
267
268
  - test/system_timer.rb
269
+ has_rdoc:
@@ -1 +0,0 @@
1
- system