rconf 0.7.6 → 0.7.8

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.
@@ -48,7 +48,7 @@ module RightConf
48
48
  # === Return
49
49
  # true:: Always return true
50
50
  def each(&blk)
51
- @configurators.each(&blk)
51
+ @configurators.keys.map(&:to_s).sort.each { |k| blk.call(k, @configurators[k.to_sym]) }
52
52
  true
53
53
  end
54
54
 
@@ -0,0 +1,73 @@
1
+ # Copyright (C) 2011 RightScale, Inc, All Rights Reserved Worldwide.
2
+ #
3
+ # THIS PROGRAM IS CONFIDENTIAL AND PROPRIETARY TO RIGHTSCALE
4
+ # AND CONSTITUTES A VALUABLE TRADE SECRET. Any unauthorized use,
5
+ # reproduction, modification, or disclosure of this program is
6
+ # strictly prohibited. Any use of this program by an authorized
7
+ # licensee is strictly subject to the terms and conditions,
8
+ # including confidentiality obligations, set forth in the applicable
9
+ # License Agreement between RightScale.com, Inc. and
10
+ # the licensee
11
+
12
+ module RightConf
13
+
14
+ class BuildConfigurator
15
+
16
+ include Configurator
17
+
18
+ register :build
19
+
20
+ description 'Builds a repository using the ./configure, make, make install commands'
21
+
22
+ settings :path => 'Path to source files',
23
+ :pre_step => 'Command ran prior to ./configure',
24
+ :message => 'Progress message to display if any while building',
25
+ :configure_opts => 'Hash of options to be given to the configure script. ' +
26
+ 'The keys are the platform families (:darwin, :linux or :windows)',
27
+ :only_if => 'Ruby code that should return true for build to proceed'
28
+
29
+ validate_has_settings :path
30
+
31
+ # Run command line
32
+ #
33
+ # === Return
34
+ # true:: Always return true
35
+ def run
36
+ if only_if.nil? || instance_eval(only_if)
37
+ message("Building #{path}") if message.nil?
38
+ report_check message
39
+ Dir.chdir(path) do
40
+ Command.execute(*command_args(pre_step)) if pre_step
41
+ opts = configure_opts && configure_opts[Platform.family]
42
+ Command.execute(*command_args("./configure #{opts}"))
43
+ Command.execute(*command_args('make'))
44
+ report_success
45
+ report("Please enter you password to run the install step")
46
+ Command.sudo('echo')
47
+ report_check 'Installing'
48
+ Command.sudo(*command_args('make install'))
49
+ end
50
+ report_success
51
+ end
52
+ true
53
+ end
54
+
55
+ protected
56
+
57
+ # Build arguments for Command.execute from command line
58
+ #
59
+ # === Arguments
60
+ # command(String):: Command line to run
61
+ #
62
+ # === Return
63
+ # args(Array):: Array of arguments to be passed to Command.execute
64
+ def command_args(command)
65
+ args = command.split(' ').compact
66
+ args += [ { :abort_on_failure => "Failed to run #{command.rstrip}" } ]
67
+ end
68
+
69
+ end
70
+ end
71
+
72
+
73
+
@@ -0,0 +1,46 @@
1
+ # Copyright (C) 2011 RightScale, Inc, All Rights Reserved Worldwide.
2
+ #
3
+ # THIS PROGRAM IS CONFIDENTIAL AND PROPRIETARY TO RIGHTSCALE
4
+ # AND CONSTITUTES A VALUABLE TRADE SECRET. Any unauthorized use,
5
+ # reproduction, modification, or disclosure of this program is
6
+ # strictly prohibited. Any use of this program by an authorized
7
+ # licensee is strictly subject to the terms and conditions,
8
+ # including confidentiality obligations, set forth in the applicable
9
+ # License Agreement between RightScale.com, Inc. and
10
+ # the licensee
11
+
12
+ module RightConf
13
+
14
+ class ExecuteConfigurator
15
+
16
+ include Configurator
17
+
18
+ register :execute
19
+
20
+ description 'Run arbitraty shell commands'
21
+
22
+ settings :command_line => 'Command line to run',
23
+ :message => 'Progress message to display if any while command is running',
24
+ :abort_on_failure => 'Message to display when aborting configuration if command fails. ' +
25
+ 'Do not abort if not set'
26
+
27
+ validate_has_settings :command_line
28
+
29
+ # Run command line
30
+ #
31
+ # === Return
32
+ # true:: Always return true
33
+ def run
34
+ report_check message if message
35
+ args = command_line.split(' ')
36
+ args += [ { :abort_on_failure => abort_on_failure } ] if abort_on_failure
37
+ Command.execute(*args)
38
+ report_success if message
39
+ true
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+
46
+
@@ -19,38 +19,33 @@ module RightConf
19
19
 
20
20
  description 'Clone git repository and build if needed'
21
21
 
22
- settings :repo => 'git repo URL',
23
- :tag => 'git tag or branch or sha that should be checked out',
24
- :install_path => 'Path where git repo should be cloned to',
25
- :build_commands => 'Comma separated list of commands to run in repo after clone',
26
- :only_if => 'Ruby lambda expression that should return true to proceed ' +
27
- 'with the cloning / build if defined'
22
+ settings :repo => 'git repo URL',
23
+ :path => 'Path where git repo should be cloned to',
24
+ :tag => 'git tag or branch or sha that should be checked out ("master" by default)'
28
25
 
29
- validate_has_settings :repo, :install_path
26
+ validate_has_settings :repo, :path
30
27
 
31
28
  # Clone git repo and run build commands if given
32
29
  #
33
30
  # === Return
34
31
  # true:: Always return true
35
32
  def run
36
- if only_if.nil? || only_if.call
37
- report_check("Cloning #{repo} into #{install_path}")
38
- if File.exist?(install_path)
39
- FileUtils.mv(install_path, "#{install_path}_old")
40
- post_note "Had to move pre-existing #{install_path} to #{install_path}_old"
33
+ if File.exist?(path)
34
+ unless File.exist?(File.join(path, '.git'))
35
+ FileUtils.mv(path, "#{path}_old")
36
+ post_note "Had to move #{path} to #{path}_old"
41
37
  end
42
- Command.execute('git', 'clone', repo, install_path,
43
- :abort_on_failure => "Failed to clone #{repo} into #{install_path}")
44
- Command.execute('git', 'checkout', tag) if tag
38
+ end
39
+ unless File.exist?(path)
40
+ report_check("Cloning #{repo} into #{path}")
41
+ Command.execute('git', 'clone', repo, path,
42
+ :abort_on_failure => "Failed to clone #{repo} into #{path}")
45
43
  report_success
46
- if build_commands
47
- report_check "Building"
48
- Dir.chdir(install_path) do
49
- build_commands.split(',').each do |c|
50
- c.lstrip!
51
- args = c.split(' ') + [ { :abort_on_failure => "#{c} failed" } ]
52
- Command.execute(*args)
53
- end
44
+ if tag
45
+ report_check("Checking out #{tag}")
46
+ Dir.chdir(path) do
47
+ Command.execute('git', 'checkout', tag,
48
+ :abort_on_failure => "Failed to checkout #{tag}")
54
49
  end
55
50
  report_success
56
51
  end
@@ -58,16 +53,6 @@ module RightConf
58
53
  true
59
54
  end
60
55
 
61
- # Clone on Windows
62
- #
63
- # === Return
64
- # true:: Always return true
65
- def run_windows
66
- # TBD
67
- end
68
-
69
56
  end
70
57
  end
71
58
 
72
-
73
-
@@ -59,8 +59,8 @@ module RightConf
59
59
  end
60
60
  FileUtils.mv(bashrc_path, bashrc_path + '.old')
61
61
  File.open(bashrc_path, 'w') { |f| f.puts content }
62
+ updated = true
62
63
  end
63
- updated = true
64
64
  else
65
65
  report_error "Failed to update bash resource or profile: file not found"
66
66
  end
data/lib/rconf/version.rb CHANGED
@@ -13,7 +13,7 @@ module RightConf
13
13
 
14
14
  MAJOR = 0
15
15
  MINOR = 7
16
- BUILD = 6
16
+ BUILD = 8
17
17
 
18
18
  VERSION = [MAJOR, MINOR, BUILD].map(&:to_s).join('.')
19
19
 
@@ -0,0 +1,41 @@
1
+ # Copyright (C) 2011 RightScale, Inc, All Rights Reserved Worldwide.
2
+ #
3
+ # THIS PROGRAM IS CONFIDENTIAL AND PROPRIETARY TO RIGHTSCALE
4
+ # AND CONSTITUTES A VALUABLE TRADE SECRET. Any unauthorized use,
5
+ # reproduction, modification, or disclosure of this program is
6
+ # strictly prohibited. Any use of this program by an authorized
7
+ # licensee is strictly subject to the terms and conditions,
8
+ # including confidentiality obligations, set forth in the applicable
9
+ # License Agreement between RightScale.com, Inc. and
10
+ # the licensee
11
+
12
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
13
+
14
+ describe RightConf::BuildConfigurator do
15
+
16
+ before(:each) do
17
+ lang = RightConf::Language.parse('build { path "../source" }')
18
+ @configurator = lang.configurators.first
19
+ [:report_check, :report_result, :report_success].each do |meth|
20
+ flexmock(@configurator).should_receive(meth)
21
+ end
22
+ flexmock(@configurator).should_receive(:report_fatal).and_return { |*args| raise args.join(' ') }
23
+ end
24
+
25
+ it 'should build' do
26
+ flexmock(Dir).should_receive(:chdir).with('../source', Proc).once.and_yield
27
+ should_execute('./configure', {:abort_on_failure=>"Failed to run ./configure"}).once.ordered
28
+ should_execute('make', {:abort_on_failure=>"Failed to run make"}).once.ordered
29
+ should_sudo('echo').once.ordered
30
+ should_sudo('make', 'install', {:abort_on_failure=>"Failed to run make install"}).once.ordered
31
+ @configurator.run
32
+ end
33
+
34
+ it 'should honor only_if' do
35
+ @configurator.instance_eval { only_if('false') }
36
+ should_execute.and_return { raise "Command should not execute" }
37
+ @configurator.run
38
+ end
39
+
40
+ end
41
+
@@ -32,23 +32,19 @@ describe RightConf::BundlerConfigurator do
32
32
  end
33
33
 
34
34
  it 'should succeed when bundler succeeds' do
35
- flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).once.with(
36
- 'bundle', '--version').and_return(success_result('0'))
37
- flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).once.with(
38
- 'bundle','_0_', 'install', {:abort_on_failure=>"Failed to install gems"}).and_return(success_result)
35
+ should_execute_in_ruby('bundle', '--version').once.and_return(success_result('0'))
36
+ should_execute_in_ruby('bundle','_0_', 'install',
37
+ {:abort_on_failure=>"Failed to install gems"}).once.and_return(success_result)
39
38
  @configurator.run_linux
40
39
  end
41
40
 
42
41
  it 'should install bunlder if needed' do
43
- flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).twice.with(
44
- 'bundle', '--version').and_return(success_result('1'))
45
- flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).once.with(
46
- 'bundle','_0_', 'install', {:abort_on_failure=>"Failed to install gems"}).and_return(success_result)
47
- flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).once.with(
48
- 'gem', 'uninstall', 'bundler', '-a', '-x').and_return(success_result)
49
- flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).once.with(
50
- 'gem', 'install', 'bundler', '-v', '0', '--no-ri', '--no-rdoc',
51
- {:abort_on_failure=>"Failed to install bundler"}).once.and_return(success_result)
42
+ should_execute_in_ruby('bundle', '--version').twice.and_return(success_result('1'))
43
+ should_execute_in_ruby('bundle','_0_', 'install',
44
+ {:abort_on_failure=>"Failed to install gems"}).once.and_return(success_result)
45
+ should_execute_in_ruby('gem', 'uninstall', 'bundler', '-a', '-x').once.and_return(success_result)
46
+ should_execute_in_ruby('gem', 'install', 'bundler', '-v', '0', '--no-ri', '--no-rdoc',
47
+ {:abort_on_failure=>"Failed to install bundler"}).once.and_return(success_result)
52
48
  @configurator.run_linux
53
49
  end
54
50
 
@@ -14,7 +14,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
14
14
  describe RightConf::GitRepoConfigurator do
15
15
 
16
16
  before(:each) do
17
- lang = RightConf::Language.parse('git_repo { repo "git"; install_path "./git" }')
17
+ lang = RightConf::Language.parse('git_repo { repo "git"; path "./git" }')
18
18
  @configurator = lang.configurators.first
19
19
  [:report_check, :report_result, :report_success].each do |meth|
20
20
  flexmock(@configurator).should_receive(meth)
@@ -24,24 +24,34 @@ describe RightConf::GitRepoConfigurator do
24
24
  end
25
25
 
26
26
  it 'should clone' do
27
- flexmock(RightConf::Command.instance).should_receive(:execute).with('git', 'clone', 'git', './git', @abf).once
27
+ should_execute('git', 'clone', 'git', './git', @abf).once
28
28
  @configurator.run
29
29
  end
30
30
 
31
- it 'run the build commands' do
32
- @configurator.instance_eval { build_commands('do one, do two') }
33
- flexmock(RightConf::Command.instance).should_receive(:execute).with('git', 'clone', 'git', './git', @abf).once
34
- flexmock(Dir).should_receive(:chdir).with('./git', Proc).once.and_yield
35
- flexmock(RightConf::Command.instance).should_receive(:execute).with('do', 'one', :abort_on_failure => 'do one failed').once
36
- flexmock(RightConf::Command.instance).should_receive(:execute).with('do', 'two', :abort_on_failure => 'do two failed').once
31
+ it 'should checkout the right tag' do
32
+ @configurator.instance_eval { tag('tag') }
33
+ should_execute('git', 'clone', 'git', './git', @abf).once
34
+ flexmock(Dir).should_receive(:chdir).with('./git', Proc).and_yield
35
+ should_execute('git', 'checkout', 'tag', {:abort_on_failure=>"Failed to checkout tag"}).once
37
36
  @configurator.run
38
37
  end
39
38
 
40
- it 'should honor only_if' do
41
- @configurator.instance_eval { only_if(lambda { false }) }
42
- flexmock(RightConf::Command.instance).should_receive(:execute).and_return { raise "Command should not execute" }
39
+ it 'should skip checkout if directory already exists and contains a .git subdirectory' do
40
+ flexmock(File).should_receive(:exist?).with('./git').twice.and_return(true)
41
+ flexmock(File).should_receive(:exist?).with('./git/.git').once.and_return(true)
42
+ should_execute.and_return { raise 'Command.execute should not be called' }
43
+ @configurator.run
44
+ end
45
+
46
+ it 'should move directory if already exists but not a git repo' do
47
+ flexmock(File).should_receive(:exist?).with('./git').once.ordered.and_return(true)
48
+ flexmock(File).should_receive(:exist?).with('./git/.git').once.ordered.and_return(false)
49
+ flexmock(File).should_receive(:exist?).with('./git').once.ordered.and_return(false)
50
+ flexmock(FileUtils).should_receive(:mv).once
51
+ should_execute('git', 'clone', 'git', './git', @abf).once
43
52
  @configurator.run
44
53
  end
45
54
 
46
55
  end
47
56
 
57
+
@@ -29,53 +29,36 @@ describe RightConf::RubyConfigurator do
29
29
  end
30
30
 
31
31
  it 'should succeed on linux when rvm succeeds' do
32
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
33
- 'rvm', '--version').and_return(success_result("rvm #{RVM_VERSION}"))
34
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
35
- 'rvm', 'list').and_return(success_result("=> rvm #{RVM_VERSION}"))
36
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
37
- 'rvm', 'use', '0').and_return(success_result('Using '))
38
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
39
- 'rvm', '0@', 'gem', '--version').and_return(success_result('1'))
32
+ should_execute('rvm', '--version').once.and_return(success_result("rvm #{RVM_VERSION}"))
33
+ should_execute('rvm', 'list').once.and_return(success_result("=> rvm #{RVM_VERSION}"))
34
+ should_execute('rvm', 'use', '0').once.and_return(success_result('Using '))
35
+ should_execute('rvm', '0@', 'gem', '--version').once.and_return(success_result('1'))
40
36
  @configurator.run_linux
41
37
  end
42
38
 
43
39
  it 'should install rvm if needed' do
44
40
  rvm_tar = "rvm-#{RVM_VERSION}.tar.gz"
45
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
46
- 'rvm', '--version').and_return(success_result("rvm"))
47
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
48
- 'rvm', 'list').and_return(success_result("=> rvm #{RVM_VERSION}"))
49
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
50
- 'curl', '-O', '-f',
51
- "http://rvm.beginrescueend.com/releases/#{rvm_tar}",
52
- {:abort_on_failure=>"Failed to download rvm #{RVM_VERSION}"}).and_return(success_result)
53
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
54
- 'tar', 'zxf', rvm_tar,
55
- {:abort_on_failure=>"Failed to extract rvm tgz from #{File.expand_path(File.join(File.dirname(__FILE__), '..', '..', "rvm-#{RVM_VERSION}.tar.gz"))}"}).and_return(success_result)
41
+ should_execute('rvm', '--version').once.and_return(success_result("rvm"))
42
+ should_execute('rvm', 'list').once.and_return(success_result("=> rvm #{RVM_VERSION}"))
43
+ should_execute('curl', '-O', '-f', "http://rvm.beginrescueend.com/releases/#{rvm_tar}",
44
+ {:abort_on_failure=>"Failed to download rvm #{RVM_VERSION}"}).once.and_return(success_result)
45
+ should_execute('tar', 'zxf', rvm_tar,
46
+ {:abort_on_failure=>"Failed to extract rvm tgz from #{File.expand_path(File.join(File.dirname(__FILE__), '..', '..', "rvm-#{RVM_VERSION}.tar.gz"))}"}).once.and_return(success_result)
56
47
  flexmock(Dir).should_receive(:chdir).and_yield
57
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
58
- './install', {:abort_on_failure=>"Failed to install rvm #{RVM_VERSION}"}).and_return(success_result)
59
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
60
- 'rvm', 'use', '0').and_return(success_result('Using '))
61
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
62
- 'rvm', '0@', 'gem', '--version').and_return(success_result('1'))
48
+ should_execute('./install', {:abort_on_failure=>"Failed to install rvm #{RVM_VERSION}"}).once.and_return(success_result)
49
+ should_execute('rvm', 'use', '0').once.and_return(success_result('Using '))
50
+ should_execute('rvm', '0@', 'gem', '--version').once.and_return(success_result('1'))
63
51
  flexmock(@configurator).should_receive(:setup_bashrc).once.and_return(true)
64
52
  @configurator.run_linux
65
53
  end
66
54
 
67
55
  it 'should install rubygems if needed' do
68
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
69
- 'rvm', '--version').and_return(success_result("rvm #{RVM_VERSION}"))
70
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
71
- 'rvm', 'list').and_return(success_result("=> rvm #{RVM_VERSION}"))
72
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
73
- 'rvm', 'use', '0').and_return(success_result('Using '))
74
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
75
- 'rvm', '0@', 'gem', '--version').and_return(success_result('0'))
76
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
77
- 'rvm', '0@', 'rubygems', '1',
78
- {:abort_on_failure=>'Failed to install rubygems'}).and_return(success_result)
56
+ should_execute('rvm', '--version').once.and_return(success_result("rvm #{RVM_VERSION}"))
57
+ should_execute('rvm', 'list').once.and_return(success_result("=> rvm #{RVM_VERSION}"))
58
+ should_execute('rvm', 'use', '0').once.and_return(success_result('Using '))
59
+ should_execute('rvm', '0@', 'gem', '--version').once.and_return(success_result('0'))
60
+ should_execute('rvm', '0@', 'rubygems', '1',
61
+ {:abort_on_failure=>'Failed to install rubygems'}).once.and_return(success_result)
79
62
  @configurator.run_linux
80
63
  end
81
64
 
data/spec/spec_helper.rb CHANGED
@@ -19,3 +19,36 @@ RSpec.configure do |c|
19
19
  c.mock_with(:flexmock)
20
20
  end
21
21
 
22
+ # Helper method to mock Command.execute
23
+ #
24
+ # === Parameters
25
+ # Parameters are passed through to flexmock 'with' method
26
+ #
27
+ # === Return
28
+ # mock(Flexmock):: Corresponding flexmock instance
29
+ def should_execute(*with)
30
+ mock = flexmock(RightConf::Command.instance).should_receive(:execute).with(*with)
31
+ end
32
+
33
+ # Helper method to mock Command.execute_in_ruby
34
+ #
35
+ # === Parameters
36
+ # Parameters are passed through to flexmock 'with' method
37
+ #
38
+ # === Return
39
+ # mock(Flexmock):: Corresponding flexmock instance
40
+ def should_execute_in_ruby(*with)
41
+ mock = flexmock(RightConf::Command.instance).should_receive(:execute_in_ruby).with(*with)
42
+ end
43
+
44
+ # Helper method to mock Command.sudo
45
+ #
46
+ # === Parameters
47
+ # Parameters are passed through to flexmock 'with' method
48
+ #
49
+ # === Return
50
+ # mock(Flexmock):: Corresponding flexmock instance
51
+ def should_sudo(*with)
52
+ mock = flexmock(RightConf::Command.instance).should_receive(:sudo).with(*with)
53
+ end
54
+
@@ -26,25 +26,21 @@ describe RightConf::PackageInstaller do
26
26
  it 'should install packages on Ubuntu' do
27
27
  flexmock(RightConf::Platform.instance).should_receive(:family).and_return(:linux)
28
28
  flexmock(RightConf::Platform.instance).should_receive(:flavor).and_return('ubuntu')
29
- flexmock(RightConf::Command.instance).should_receive(:sudo).once.with(
30
- 'apt-get', 'install', '-y', 'deb1', 'deb2').and_return(success_result)
29
+ should_sudo('apt-get', 'install', '-y', 'deb1', 'deb2').once.and_return(success_result)
31
30
  RightConf::PackageInstaller.install(['deb1', 'deb2'])
32
31
  end
33
32
 
34
33
  it 'should install packages on Centos' do
35
34
  flexmock(RightConf::Platform.instance).should_receive(:family).and_return(:linux)
36
35
  flexmock(RightConf::Platform.instance).should_receive(:flavor).and_return('centos')
37
- flexmock(RightConf::Command.instance).should_receive(:sudo).once.with(
38
- 'yum', 'install', '-y', 'cent1', 'cent2').and_return(success_result)
36
+ should_sudo('yum', 'install', '-y', 'cent1', 'cent2').once.and_return(success_result)
39
37
  RightConf::PackageInstaller.install(['cent1', 'cent2'])
40
38
  end
41
39
 
42
40
  it 'should install packages on Darwin' do
43
41
  flexmock(RightConf::Platform.instance).should_receive(:family).and_return(:darwin)
44
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
45
- 'brew', 'install', 'mac1').and_return(success_result)
46
- flexmock(RightConf::Command.instance).should_receive(:execute).once.with(
47
- 'brew', 'install', 'mac2').and_return(success_result)
42
+ should_execute('brew', 'install', 'mac1').once.and_return(success_result)
43
+ should_execute('brew', 'install', 'mac2').once.and_return(success_result)
48
44
  RightConf::PackageInstaller.install(['mac1', 'mac2'])
49
45
  end
50
46
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rconf
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.6
5
+ version: 0.7.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Raphael Simon
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-30 00:00:00 -07:00
13
+ date: 2011-03-31 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -74,8 +74,10 @@ files:
74
74
  - lib/rconf/command.rb
75
75
  - lib/rconf/configurator.rb
76
76
  - lib/rconf/configurator_registry.rb
77
+ - lib/rconf/configurators/build_configurator.rb
77
78
  - lib/rconf/configurators/bundler_configurator.rb
78
79
  - lib/rconf/configurators/cassandra_configurator.rb
80
+ - lib/rconf/configurators/execute_configurator.rb
79
81
  - lib/rconf/configurators/git_repo_configurator.rb
80
82
  - lib/rconf/configurators/mercurial_configurator.rb
81
83
  - lib/rconf/configurators/packages_configurator.rb
@@ -101,6 +103,7 @@ files:
101
103
  - rconf.rconf
102
104
  - spec/command_spec.rb
103
105
  - spec/configurator_spec.rb
106
+ - spec/configurators/build_configurator_spec.rb
104
107
  - spec/configurators/bundler_configurator_spec.rb
105
108
  - spec/configurators/git_repo_configurator_spec.rb
106
109
  - spec/configurators/packages_configurator_spec.rb
@@ -146,6 +149,7 @@ summary: Cross platform environment configuration
146
149
  test_files:
147
150
  - spec/command_spec.rb
148
151
  - spec/configurator_spec.rb
152
+ - spec/configurators/build_configurator_spec.rb
149
153
  - spec/configurators/bundler_configurator_spec.rb
150
154
  - spec/configurators/git_repo_configurator_spec.rb
151
155
  - spec/configurators/packages_configurator_spec.rb