hanzo 0.4.2 → 0.4.3

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: 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