hanzo 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05ff7891e2f1cd3041503706e0e8f29d743666a6
4
- data.tar.gz: 2383e9fc6c162684aea15a41ef99e82844d990d2
3
+ metadata.gz: 5bf18b51a540cd3579bf82622bfd45fc4f034449
4
+ data.tar.gz: af91b4057463254d56c85702720fd50e7c99148c
5
5
  SHA512:
6
- metadata.gz: 74429412cca30fffd9865f3082a7b9a25572e264a73a46f25e84264dbd0e4e4e990c86213400c3a65ca3db4ece09e0ddf472f4974d39704a960f5c0ab6642544
7
- data.tar.gz: e06c64150b810ea024dc36f699d4f6a2aabb3e45f945dedf894817e839f2ca73bb60f6541452f7b1e2ef3ad0a4b222bf8d9f96ff9fe1bc85eb4cb2f02cefdadf
6
+ metadata.gz: 98700c6b8a43094637a57ba492730ba12894e213ec6cd59b30b1f6ee40d8823ad23a968147b9ecfb5e7687bad8c78cfb064a07332429b82e1d00140311f9a0d1
7
+ data.tar.gz: a0ddffdf1bac4fd26f7b6cb618f887a60ef25ef70238d492777448f4e1d8bfc3183e0b09e094c752b53cb51aec0c571573cd4b75f12b8b8f0f3594a22e63d615
data/.rubocop.yml ADDED
@@ -0,0 +1,58 @@
1
+ Documentation:
2
+ Enabled: false
3
+
4
+ Encoding:
5
+ Enabled: false
6
+
7
+ LineLength:
8
+ Max: 200
9
+
10
+ ClassLength:
11
+ Max: 200
12
+
13
+ AccessModifierIndentation:
14
+ EnforcedStyle: outdent
15
+
16
+ IfUnlessModifier:
17
+ Enabled: false
18
+
19
+ CaseIndentation:
20
+ IndentWhenRelativeTo: case
21
+ IndentOneStep: true
22
+
23
+ MethodLength:
24
+ CountComments: false
25
+ Max: 20
26
+
27
+ SignalException:
28
+ Enabled: false
29
+
30
+ ColonMethodCall:
31
+ Enabled: false
32
+
33
+ AsciiComments:
34
+ Enabled: false
35
+
36
+ Lambda:
37
+ Enabled: false
38
+
39
+ RegexpLiteral:
40
+ Enabled: false
41
+
42
+ RedundantBegin:
43
+ Enabled: false
44
+
45
+ AssignmentInCondition:
46
+ Enabled: false
47
+
48
+ ParameterLists:
49
+ Enabled: false
50
+
51
+ ClassAndModuleChildren:
52
+ Enabled: false
53
+
54
+ DoubleNegation:
55
+ Enabled: false
56
+
57
+ TrivialAccessors:
58
+ ExactNameMatch: true
data/.travis.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
+ - 2.1.2
4
5
  - 2.0.0
5
6
  - 1.9.3
6
7
 
data/bin/hanzo CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
2
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w(.. lib))
4
3
 
5
4
  require 'hanzo'
6
5
 
data/hanzo.gemspec CHANGED
@@ -14,14 +14,16 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/mirego/hanzo'
15
15
  spec.license = 'BSD 3-Clause'
16
16
 
17
- spec.files = `git ls-files`.split($/)
17
+ spec.files = `git ls-files`.split("\n")
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  spec.test_files = spec.files.grep(%r{^(spec)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'phare', '~> 0.6'
24
+ spec.add_development_dependency 'rubocop', '~> 0.24'
23
25
  spec.add_development_dependency 'rake'
24
- spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rspec', '~> 3.1'
25
27
 
26
28
  spec.add_dependency 'highline', '>= 1.6.19'
27
29
  end
data/lib/hanzo/cli.rb CHANGED
@@ -3,7 +3,7 @@ require 'hanzo/modules/install'
3
3
  require 'hanzo/modules/config'
4
4
 
5
5
  module Hanzo
6
- class CLI < Base
6
+ class CLI < Base
7
7
  def run
8
8
  @options.parse!(@args) if @opts.respond_to? :parse!
9
9
  puts @options unless @options.to_s == "Usage: hanzo [options]\n"
@@ -16,7 +16,7 @@ module Hanzo
16
16
  end
17
17
 
18
18
  def initialize_cli
19
- initialize_help and return if @app.nil?
19
+ initialize_help && return if @app.nil?
20
20
 
21
21
  begin
22
22
  @options = Hanzo.const_get(@app.capitalize).new(@args).options
@@ -0,0 +1,27 @@
1
+ module Hanzo
2
+ module Fetchers
3
+ class Environment
4
+ def initialize(env)
5
+ @env = env
6
+ end
7
+
8
+ def exist?
9
+ environments.include?(@env)
10
+ end
11
+
12
+ def installed?
13
+ installed_environments.include?(@env)
14
+ end
15
+
16
+ protected
17
+
18
+ def installed_environments
19
+ Hanzo::Installers::Remotes.installed_environments
20
+ end
21
+
22
+ def environments
23
+ Hanzo::Installers::Remotes.environments
24
+ end
25
+ end
26
+ end
27
+ end
data/lib/hanzo/heroku.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  module Hanzo
2
2
  module Heroku
3
3
  class << self
4
-
5
4
  def available_labs
6
- Hanzo.run("heroku labs").each_line.to_a.inject([]) do |memo, line|
5
+ Hanzo.run('heroku labs').each_line.to_a.reduce([]) do |memo, line|
7
6
  if line = /^\[\s\]\s+(?<name>\w+)\s+(?<description>.+)$/.match(line)
8
7
  memo << [line[:name], line[:description]]
9
8
  else
@@ -11,7 +10,6 @@ module Hanzo
11
10
  end
12
11
  end
13
12
  end
14
-
15
13
  end
16
14
  end
17
15
  end
@@ -1,11 +1,10 @@
1
1
  module Hanzo
2
2
  class Config < Base
3
-
4
3
  def compare
5
- Hanzo.title "Fetching environment variables"
4
+ Hanzo.title('Fetching environment variables')
6
5
  fetch_variables
7
6
 
8
- Hanzo.title "Comparing environment variables"
7
+ Hanzo.title('Comparing environment variables')
9
8
  compare_variables
10
9
  end
11
10
 
@@ -16,7 +15,8 @@ module Hanzo
16
15
  end
17
16
 
18
17
  def initialize_cli
19
- initialize_help and return if @type != "compare"
18
+ initialize_help && return if @type != 'compare'
19
+
20
20
  compare
21
21
  end
22
22
 
@@ -32,7 +32,7 @@ module Hanzo
32
32
  private
33
33
 
34
34
  def fetch_variables
35
- @variables = Hanzo::Installers::Remotes.environments.keys.inject({}) do |memo, env|
35
+ @variables = Hanzo::Installers::Remotes.environments.keys.reduce({}) do |memo, env|
36
36
  # Fetch the variables over at Heroku
37
37
  config = Hanzo.run("heroku config -r #{env}", true).split("\n")
38
38
 
@@ -1,21 +1,24 @@
1
1
  module Hanzo
2
2
  class Deploy < Base
3
+ UnknownEnvironment = Class.new(StandardError)
4
+ UninstalledEnvironment = Class.new(StandardError)
3
5
 
4
6
  protected
5
7
 
6
8
  def initialize_variables
7
9
  @env = extract_argument(1)
8
-
9
- if @env.nil? and Hanzo::Installers::Remotes.environments.keys.length == 1
10
- @env = Hanzo::Installers::Remotes.environments.keys.first
11
- end
10
+ @env ||= Hanzo::Installers::Remotes.environments.keys.first
12
11
  end
13
12
 
14
13
  def initialize_cli
15
- initialize_help and return if @env.nil?
16
-
17
- deploy
18
- run_migrations
14
+ initialize_help && return if @env.nil?
15
+
16
+ deploy && run_migrations
17
+ rescue UnknownEnvironment
18
+ Hanzo.unindent_print "Environment `#{@env}` doesn't exist. Add it to .heroku-remotes and run:\n hanzo install remotes", :red
19
+ Hanzo.unindent_print "\nFor more information, read https://github.com/mirego/hanzo#install-remotes", :red
20
+ rescue UninstalledEnvironment
21
+ Hanzo.unindent_print "Environment `#{@env}` has been found in your .heroku-remotes file. Before using it, you must install it:\n hanzo install remotes", :red
19
22
  end
20
23
 
21
24
  def initialize_help
@@ -31,20 +34,28 @@ module Hanzo
31
34
  end
32
35
 
33
36
  def deploy
34
- branch = Hanzo.ask("Branch to deploy in #{@env}:") { |q| q.default = "HEAD" }
37
+ validate_environment_existence!
38
+
39
+ branch = Hanzo.ask("Branch to deploy in #{@env}:") { |q| q.default = 'HEAD' }
35
40
 
36
41
  Hanzo.run "git push -f #{@env} #{branch}:master"
37
42
  end
38
43
 
39
44
  def run_migrations
40
- if Dir.exists?('db/migrate')
41
- migration = Hanzo.agree('Run migrations?')
45
+ return unless Dir.exist?('db/migrate')
46
+ return unless Hanzo.agree('Run migrations?')
42
47
 
43
- if migration
44
- Hanzo.run "heroku run rake db:migrate --remote #{@env}"
45
- Hanzo.run "heroku ps:restart --remote #{@env}"
46
- end
47
- end
48
+ Hanzo.run "heroku run rake db:migrate --remote #{@env}"
49
+ Hanzo.run "heroku ps:restart --remote #{@env}"
50
+ end
51
+
52
+ def validate_environment_existence!
53
+ raise UnknownEnvironment unless fetcher.exist?
54
+ raise UninstalledEnvironment unless fetcher.installed?
55
+ end
56
+
57
+ def fetcher
58
+ @fetcher ||= Hanzo::Fetchers::Environment.new(@env)
48
59
  end
49
60
  end
50
61
  end
@@ -13,7 +13,7 @@ module Hanzo
13
13
  end
14
14
 
15
15
  def initialize_cli
16
- initialize_help and return if @type.nil?
16
+ initialize_help && return if @type.nil?
17
17
 
18
18
  method = "install_#{@type}"
19
19
 
@@ -2,13 +2,13 @@ module Hanzo
2
2
  module Installers
3
3
  module Labs
4
4
  def install_labs
5
- Hanzo.title 'Activating Heroku Labs'
5
+ Hanzo.title('Activating Heroku Labs')
6
6
 
7
- Hanzo::Heroku.available_labs.each do |name, description|
8
- if Hanzo.agree("Add #{name}?")
9
- Hanzo::Installers::Remotes.environments.each_pair do |env, app|
10
- Hanzo::Installers::Labs.enable(env, name)
11
- end
7
+ Hanzo::Heroku.available_labs.each do |name, _|
8
+ next unless Hanzo.agree("Add #{name}?")
9
+
10
+ Hanzo::Installers::Remotes.environments.each_pair do |env, _|
11
+ Hanzo::Installers::Labs.enable(env, name)
12
12
  end
13
13
  end
14
14
  end
@@ -16,12 +16,16 @@ module Hanzo
16
16
  end
17
17
 
18
18
  def self.environments
19
- return YAML.load_file('.heroku-remotes') if File.exists?('.heroku-remotes')
19
+ return YAML.load_file('.heroku-remotes') if File.exist?('.heroku-remotes')
20
20
 
21
21
  Hanzo.print 'Cannot locate .heroku-remotes'
22
22
  Hanzo.print 'For more information, please read https://github.com/mirego/hanzo'
23
23
  exit
24
24
  end
25
+
26
+ def self.installed_environments
27
+ `git remote`.split("\n")
28
+ end
25
29
  end
26
30
  end
27
31
  end
data/lib/hanzo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hanzo
2
- VERSION = '0.4.2'
2
+ VERSION = '0.4.3'
3
3
  end
data/lib/hanzo.rb CHANGED
@@ -7,6 +7,8 @@ require 'hanzo/cli'
7
7
  require 'hanzo/heroku'
8
8
  require 'hanzo/version'
9
9
 
10
+ require 'hanzo/fetchers/environment'
11
+
10
12
  module Hanzo
11
13
  def self.run(command, fetch_output = false)
12
14
  print(command, :green)
@@ -16,7 +18,7 @@ module Hanzo
16
18
  if fetch_output
17
19
  output = `#{command}`
18
20
  else
19
- system(command)
21
+ output = system(command)
20
22
  end
21
23
  end
22
24
 
@@ -37,6 +39,11 @@ module Hanzo
37
39
  HighLine.say HighLine.color(" #{text}", *colors)
38
40
  end
39
41
 
42
+ def self.unindent_print(text = '', *colors)
43
+ colors = colors.map { |c| HighLine.const_get(c.to_s.upcase) }
44
+ HighLine.say HighLine.color(text, *colors)
45
+ end
46
+
40
47
  def self.title(text)
41
48
  HighLine.say HighLine.color("-----> #{text}", :blue)
42
49
  end
@@ -52,6 +59,6 @@ end
52
59
 
53
60
  class String
54
61
  def unindent
55
- gsub /^#{scan(/^\s*/).min_by{|l|l.length}}/, ''
62
+ gsub(/^#{scan(/^\s*/).min_by { |l| l.length }}/, '')
56
63
  end
57
64
  end
@@ -5,7 +5,7 @@ describe Hanzo::CLI do
5
5
  let(:config!) { Hanzo::CLI.new(['config', action]) }
6
6
  let(:heroku_remotes) { { 'production' => 'heroku-app-production', 'qa' => 'heroku-app-qa' } }
7
7
 
8
- before { Hanzo::Installers::Remotes.stub(:environments).and_return(heroku_remotes) }
8
+ before { expect(Hanzo::Installers::Remotes).to receive(:environments).and_return(heroku_remotes) }
9
9
 
10
10
  describe :compare do
11
11
  let(:action) { 'compare' }
@@ -16,31 +16,31 @@ describe Hanzo::CLI do
16
16
 
17
17
  let(:environment_one_name) { 'production' }
18
18
  let(:environment_two_name) { 'qa' }
19
- let(:environment_one) {
20
- <<-RUBY
21
- SMTP_PORT: 25
22
- SMTP_PASSWORD: hanzo
23
- SMTP_HOST: localhost
24
- RUBY
25
- }
26
- let(:environment_two) {
27
- <<-RUBY
28
- SMTP_PORT: 25
29
- SMTP_USERNAME: hanzo
30
- RUBY
31
- }
19
+ let(:environment_one) do
20
+ <<-RUBY.unindent
21
+ SMTP_PORT: 25
22
+ SMTP_PASSWORD: hanzo
23
+ SMTP_HOST: localhost
24
+ RUBY
25
+ end
26
+ let(:environment_two) do
27
+ <<-RUBY.unindent
28
+ SMTP_PORT: 25
29
+ SMTP_USERNAME: hanzo
30
+ RUBY
31
+ end
32
32
 
33
33
  before do
34
- Hanzo.should_receive(:title).with(fetch_environment_title)
35
- Hanzo.should_receive(:title).with(compare_environment_title)
34
+ expect(Hanzo).to receive(:title).with(fetch_environment_title)
35
+ expect(Hanzo).to receive(:title).with(compare_environment_title)
36
36
 
37
- Hanzo.should_receive(:run).with("#{config_cmd} -r #{environment_one_name}", true).and_return(environment_one)
38
- Hanzo.should_receive(:run).with("#{config_cmd} -r #{environment_two_name}", true).and_return(environment_two)
37
+ expect(Hanzo).to receive(:run).with("#{config_cmd} -r #{environment_one_name}", true).and_return(environment_one)
38
+ expect(Hanzo).to receive(:run).with("#{config_cmd} -r #{environment_two_name}", true).and_return(environment_two)
39
39
 
40
- Hanzo.should_receive(:print).with("Missing variables in #{environment_one_name}", :yellow)
41
- Hanzo.should_receive(:print).with(['- SMTP_USERNAME'])
42
- Hanzo.should_receive(:print).with("Missing variables in #{environment_two_name}", :yellow)
43
- Hanzo.should_receive(:print).with(['- SMTP_PASSWORD', '- SMTP_HOST'])
40
+ expect(Hanzo).to receive(:print).with("Missing variables in #{environment_one_name}", :yellow)
41
+ expect(Hanzo).to receive(:print).with(['- SMTP_USERNAME'])
42
+ expect(Hanzo).to receive(:print).with("Missing variables in #{environment_two_name}", :yellow)
43
+ expect(Hanzo).to receive(:print).with(['- SMTP_PASSWORD', '- SMTP_HOST'])
44
44
  end
45
45
 
46
46
  it 'should install specified labs for each environment' do
@@ -5,7 +5,6 @@ describe Hanzo::CLI do
5
5
  let(:env) { 'production' }
6
6
  let(:branch) { '1.0.0' }
7
7
  let(:deploy!) { Hanzo::CLI.new(['deploy', env]) }
8
- let(:migrations_exist) { false }
9
8
  let(:heroku_remotes) { { 'production' => 'heroku-app-production' } }
10
9
  let(:migration_dir) { 'db/migrate' }
11
10
 
@@ -17,43 +16,71 @@ describe Hanzo::CLI do
17
16
  let(:deploy_cmd) { "git push -f #{env} #{branch}:master" }
18
17
 
19
18
  before do
20
- Dir.should_receive(:exists?).with(migration_dir).and_return(migrations_exist)
21
- Hanzo::Installers::Remotes.stub(:environments).and_return(heroku_remotes)
22
- Hanzo.should_receive(:ask).with(deploy_question).and_return(branch)
23
- Hanzo.should_receive(:run).with(deploy_cmd).once
19
+ expect(Hanzo::Installers::Remotes).to receive(:environments).and_return(['production'])
20
+ expect(Hanzo::Installers::Remotes).to receive(:installed_environments).and_return(['production'])
24
21
  end
25
22
 
26
- context 'without migration' do
23
+ context 'successful deploy and without migrations' do
24
+ let(:migrations_exist) { false }
25
+ let(:deploy_result) { true }
26
+
27
+ before do
28
+ expect(Dir).to receive(:exist?).with(migration_dir).and_return(migrations_exist)
29
+ expect(Hanzo).to receive(:ask).with(deploy_question).and_return(branch)
30
+ expect(Hanzo).to receive(:run).with(deploy_cmd).once.and_return(deploy_result)
31
+ end
32
+
27
33
  it 'should git push to heroku upstream' do
28
34
  deploy!
29
35
  end
30
36
  end
31
37
 
32
- context 'with migrations' do
38
+ context 'with existing migrations' do
33
39
  let(:migrations_exist) { true }
34
40
 
35
- context 'that should be ran' do
41
+ before do
42
+ expect(Hanzo).to receive(:ask).with(deploy_question).and_return(branch)
43
+ expect(Hanzo).to receive(:run).with(deploy_cmd).once.and_return(deploy_result)
44
+ end
45
+
46
+ context 'with successful deploy' do
47
+ let(:deploy_result) { true }
48
+
36
49
  before do
37
- Hanzo.should_receive(:agree).with(migration_question).and_return(true)
38
- Hanzo.should_receive(:run).with(migration_cmd)
39
- Hanzo.should_receive(:run).with(restart_cmd)
50
+ expect(Dir).to receive(:exist?).with(migration_dir).and_return(migrations_exist)
40
51
  end
41
52
 
42
- it 'should run migrations' do
43
- deploy!
53
+ context 'and migrations that should be ran' do
54
+ before do
55
+ expect(Hanzo).to receive(:agree).with(migration_question).and_return(true)
56
+ expect(Hanzo).to receive(:run).with(migration_cmd)
57
+ expect(Hanzo).to receive(:run).with(restart_cmd)
58
+ end
59
+
60
+ specify { deploy! }
61
+ end
62
+
63
+ context 'and migrations that should not be ran' do
64
+ before do
65
+ expect(Hanzo).to receive(:agree).with(migration_question).and_return(false)
66
+ expect(Hanzo).not_to receive(:run).with(migration_cmd)
67
+ expect(Hanzo).not_to receive(:run).with(restart_cmd)
68
+ end
69
+
70
+ specify { deploy! }
44
71
  end
45
72
  end
46
73
 
47
- context 'that should not be ran' do
74
+ context 'without successful deploy' do
75
+ let(:deploy_result) { false }
76
+
48
77
  before do
49
- Hanzo.should_receive(:agree).with(migration_question).and_return(false)
50
- Hanzo.should_not_receive(:run).with(migration_cmd)
51
- Hanzo.should_not_receive(:run).with(restart_cmd)
78
+ expect(Hanzo).not_to receive(:agree).with(migration_question)
79
+ expect(Hanzo).not_to receive(:run).with(migration_cmd)
80
+ expect(Hanzo).not_to receive(:run).with(restart_cmd)
52
81
  end
53
82
 
54
- it 'should not run migrations' do
55
- deploy!
56
- end
83
+ specify { deploy! }
57
84
  end
58
85
  end
59
86
  end
@@ -10,20 +10,20 @@ describe Hanzo::CLI do
10
10
  let(:labs_title) { 'Activating Heroku Labs' }
11
11
  let(:available_labs) { { 'user-env-compile' => 'Description' } }
12
12
 
13
- let(:enable_labs_cmd) { "heroku labs:enable" }
13
+ let(:enable_labs_cmd) { 'heroku labs:enable' }
14
14
  let(:enable_labs_info) { '- Enabled for' }
15
15
 
16
16
  before do
17
- Hanzo::Installers::Remotes.stub(:environments).and_return(heroku_remotes)
18
- Hanzo::Heroku.stub(:available_labs).and_return(available_labs)
19
- Hanzo.should_receive(:title).with(labs_title)
17
+ expect(Hanzo::Installers::Remotes).to receive(:environments).and_return(heroku_remotes)
18
+ expect(Hanzo::Heroku).to receive(:available_labs).and_return(available_labs)
19
+ expect(Hanzo).to receive(:title).with(labs_title)
20
20
 
21
- available_labs.each do |name, description|
22
- Hanzo.should_receive(:agree).with("Add #{name}?").and_return(true)
21
+ available_labs.each do |name, _|
22
+ expect(Hanzo).to receive(:agree).with("Add #{name}?").and_return(true)
23
23
 
24
- heroku_remotes.each do |env, app|
25
- Hanzo.should_receive(:run).with("#{enable_labs_cmd} #{name} --remote #{env}")
26
- Hanzo.should_receive(:print).with("#{enable_labs_info} #{env}")
24
+ heroku_remotes.each do |env, _|
25
+ expect(Hanzo).to receive(:run).with("#{enable_labs_cmd} #{name} --remote #{env}")
26
+ expect(Hanzo).to receive(:print).with("#{enable_labs_info} #{env}")
27
27
  end
28
28
  end
29
29
  end
@@ -37,15 +37,16 @@ describe Hanzo::CLI do
37
37
  let(:type) { 'remotes' }
38
38
  let(:create_remotes_title) { 'Creating git remotes' }
39
39
 
40
- before { Hanzo.should_receive(:title).with(create_remotes_title) }
40
+ before { expect(Hanzo).to receive(:title).with(create_remotes_title) }
41
41
 
42
42
  context '.heroku-remotes exists' do
43
43
  before do
44
- Hanzo::Installers::Remotes.stub(:environments).and_return(heroku_remotes)
44
+ expect(Hanzo::Installers::Remotes).to receive(:environments).and_return(heroku_remotes)
45
+
45
46
  heroku_remotes.each do |env, app|
46
- Hanzo.should_receive(:print).with("Adding #{env}")
47
- Hanzo.should_receive(:run).with("git remote rm #{env} 2>&1 > /dev/null")
48
- Hanzo.should_receive(:run).with("git remote add #{env} git@heroku.com:#{app}.git")
47
+ expect(Hanzo).to receive(:print).with("Adding #{env}")
48
+ expect(Hanzo).to receive(:run).with("git remote rm #{env} 2>&1 > /dev/null")
49
+ expect(Hanzo).to receive(:run).with("git remote add #{env} git@heroku.com:#{app}.git")
49
50
  end
50
51
  end
51
52
 
@@ -55,10 +56,10 @@ describe Hanzo::CLI do
55
56
  end
56
57
 
57
58
  context '.heroku-remotes file is missing' do
58
- before { Hanzo.should_receive(:print).twice }
59
+ before { expect(Hanzo).to receive(:print).twice }
59
60
 
60
61
  it 'should display error message' do
61
- lambda { install! }.should raise_error SystemExit
62
+ expect { install! }.to raise_error SystemExit
62
63
  end
63
64
  end
64
65
  end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hanzo::Fetchers::Environment do
4
+ let(:fetcher) { Hanzo::Fetchers::Environment.new(current_environment) }
5
+ let(:current_environment) { 'production' }
6
+
7
+ describe :exist? do
8
+ let(:environments) { ['production'] }
9
+
10
+ before { expect(fetcher).to receive(:environments).and_return(environments) }
11
+
12
+ context 'with an existing environment' do
13
+ it { expect(fetcher.exist?).to be_truthy }
14
+ end
15
+
16
+ context 'with an unexisting environment' do
17
+ let(:current_environment) { 'staging' }
18
+ it { expect(fetcher.exist?).to be_falsey }
19
+ end
20
+ end
21
+
22
+ describe :installed? do
23
+ let(:environments) { ['production'] }
24
+
25
+ before { expect(fetcher).to receive(:installed_environments).and_return(environments) }
26
+
27
+ context 'with an installed environment' do
28
+ it { expect(fetcher.installed?).to be_truthy }
29
+ end
30
+
31
+ context 'with an uninstalled environment' do
32
+ let(:current_environment) { 'staging' }
33
+ it { expect(fetcher.installed?).to be_falsey }
34
+ end
35
+ end
36
+
37
+ describe :installed_environments do
38
+ before { expect(Hanzo::Installers::Remotes).to receive(:installed_environments) }
39
+
40
+ specify { fetcher.send(:installed_environments) }
41
+ end
42
+
43
+ describe :environments do
44
+ before { expect(Hanzo::Installers::Remotes).to receive(:environments) }
45
+
46
+ specify { fetcher.send(:environments) }
47
+ end
48
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
- $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
1
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w(.. lib))
2
2
 
3
3
  require 'hanzo'
4
4
 
5
- RSpec.configure do |c|
5
+ RSpec.configure do
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanzo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Garneau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-24 00:00:00.000000000 Z
11
+ date: 2015-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: phare
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.24'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.24'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rake
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +70,16 @@ dependencies:
42
70
  name: rspec
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - ">="
73
+ - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '0'
75
+ version: '3.1'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - ">="
80
+ - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: '0'
82
+ version: '3.1'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: highline
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -76,6 +104,7 @@ extra_rdoc_files: []
76
104
  files:
77
105
  - ".gitignore"
78
106
  - ".rspec"
107
+ - ".rubocop.yml"
79
108
  - ".travis.yml"
80
109
  - Gemfile
81
110
  - LICENSE.md
@@ -86,6 +115,7 @@ files:
86
115
  - lib/hanzo.rb
87
116
  - lib/hanzo/base.rb
88
117
  - lib/hanzo/cli.rb
118
+ - lib/hanzo/fetchers/environment.rb
89
119
  - lib/hanzo/heroku.rb
90
120
  - lib/hanzo/modules/config.rb
91
121
  - lib/hanzo/modules/deploy.rb
@@ -96,6 +126,7 @@ files:
96
126
  - spec/cli/config_spec.rb
97
127
  - spec/cli/deploy_spec.rb
98
128
  - spec/cli/install_spec.rb
129
+ - spec/fetchers/environment_spec.rb
99
130
  - spec/spec_helper.rb
100
131
  homepage: https://github.com/mirego/hanzo
101
132
  licenses:
@@ -125,4 +156,5 @@ test_files:
125
156
  - spec/cli/config_spec.rb
126
157
  - spec/cli/deploy_spec.rb
127
158
  - spec/cli/install_spec.rb
159
+ - spec/fetchers/environment_spec.rb
128
160
  - spec/spec_helper.rb