hanzo 0.2.3 → 0.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: aa7493b5279e5a136b1f204ec813e3892785c23f
4
- data.tar.gz: 7e7f98199989d0dc95034329e9e0ce693fa67c7d
3
+ metadata.gz: 4740905e91e0e036d29b67be68245425bacae8a1
4
+ data.tar.gz: e653917084f0b4b442ea4e983eeb1fa0b393ca25
5
5
  SHA512:
6
- metadata.gz: 24fbce60605372cd4dddc98892f71765296542044206bb78925d9e986ef534ae5b994fba83bb99a68efc4078992e4826478f17af071b05fb053bbfa9f5d62340
7
- data.tar.gz: 75f91cb45c674cf78e0830e7c8bc569856c050dff3029645701732dfec669996c796ec9689183514a85a7420adc2bbdb574a371608946c2e22e5c489533065ab
6
+ metadata.gz: 4c5d1e3d5d0d79b9231b89cfcd2fd13753cd119ef30a910a07ffd155bea208682c0222d6b4adedd55fa3ab2a8041e6c55515987564fd4bcc5ac85284651a3a82
7
+ data.tar.gz: 455dacbe103c05eb86dba320fefcbd44c77fef3323cd27c4399a5213b99ba115e721a183e0cb66d92491a608e262013c4f2268040dad79cd73f68486082f5188
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/lib/hanzo/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'hanzo/modules/deploy'
2
2
  require 'hanzo/modules/install'
3
+ require 'hanzo/modules/config'
3
4
 
4
5
  module Hanzo
5
6
  class CLI < Base
@@ -25,15 +26,16 @@ module Hanzo
25
26
  end
26
27
 
27
28
  def initialize_help
28
- @options.banner = <<-BANNER
29
- Usage: hanzo action [options]
29
+ @options.banner = <<-BANNER.unindent
30
+ Usage: hanzo action [options]
30
31
 
31
- Available actions:
32
- deploy - Deploy a branch or a tag
33
- install - Install Hanzo configuration
32
+ Available actions:
33
+ deploy - Deploy a branch or a tag
34
+ install - Install Hanzo configuration
35
+ config - Manage Heroku configuration variables
34
36
 
35
- Options:
36
- BANNER
37
+ Options:
38
+ BANNER
37
39
  @options.on('-h', '--help', 'You\'re looking at it.') { puts @options }
38
40
  @options.on('-v', '--version', 'Print version') { puts "Hanzo #{Hanzo::VERSION}" }
39
41
  end
@@ -0,0 +1,59 @@
1
+ module Hanzo
2
+ class Config < Base
3
+
4
+ def compare
5
+ Hanzo.title("Fetching environment variables")
6
+ fetch_variables
7
+
8
+ Hanzo.title "Comparing environment variables"
9
+ compare_variables
10
+ end
11
+
12
+ protected
13
+
14
+ def initialize_variables
15
+ @type = extract_argument(1)
16
+ end
17
+
18
+ def initialize_cli
19
+ initialize_help and return if @type != "compare"
20
+ compare
21
+ end
22
+
23
+ def initialize_help
24
+ @options.banner = <<-BANNER.unindent
25
+ Usage: hanzo config TYPE
26
+
27
+ Available install type:
28
+ compare - Compare the environment variables set across the remotes
29
+ BANNER
30
+ end
31
+
32
+ private
33
+
34
+ def fetch_variables
35
+ @variables = Hanzo::Installers::Remotes.environments.keys.inject({}) do |memo, env|
36
+ # Fetch the variables over at Heroku
37
+ config = Hanzo.run("heroku config -r #{env}").split("\n")
38
+
39
+ # Reject the first line (Heroku header)
40
+ config = config.reject { |line| line =~ /^=/ }
41
+
42
+ # Only keep the variable name, not their value
43
+ config = config.map { |line| line.gsub(/^([^:]+):.*$/, '\1') }
44
+
45
+ memo.merge env => config
46
+ end
47
+ end
48
+
49
+ def compare_variables
50
+ all_variables = @variables.values.flatten.uniq
51
+
52
+ @variables.each_pair do |env, variables|
53
+ missing_variables = all_variables - variables
54
+ Hanzo.print "Missing variables in #{env}", :yellow
55
+ Hanzo.print missing_variables.map { |v| "- #{v}" }
56
+ end
57
+ end
58
+ end
59
+ end
@@ -19,11 +19,11 @@ module Hanzo
19
19
  end
20
20
 
21
21
  def initialize_help
22
- @options.banner = <<-BANNER
23
- Usage: hanzo deploy ENVIRONMENT
22
+ @options.banner = <<-BANNER.unindent
23
+ Usage: hanzo deploy ENVIRONMENT
24
24
 
25
- Available environments
26
- BANNER
25
+ Available environments
26
+ BANNER
27
27
 
28
28
  Hanzo::Installers::Remotes.environments.each do |env|
29
29
  @options.banner << " - #{env.first}\n"
@@ -25,12 +25,12 @@ module Hanzo
25
25
  end
26
26
 
27
27
  def initialize_help
28
- @options.banner = <<-BANNER
29
- Usage: hanzo install TYPE
28
+ @options.banner = <<-BANNER.unindent
29
+ Usage: hanzo install TYPE
30
30
 
31
- Available install type:
32
- remotes - Add git remotes to current repository
33
- BANNER
31
+ Available install type:
32
+ remotes - Add git remotes to current repository
33
+ BANNER
34
34
  end
35
35
  end
36
36
  end
data/lib/hanzo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hanzo
2
- VERSION = '0.2.3'
2
+ VERSION = '0.3'
3
3
  end
data/lib/hanzo.rb CHANGED
@@ -10,11 +10,14 @@ require 'hanzo/version'
10
10
  module Hanzo
11
11
  def self.run(command)
12
12
  print(command, :green)
13
- Bundler.with_clean_env { `#{command}` }
13
+ output = nil
14
+ ::Bundler.with_clean_env { output = `#{command}` }
15
+ output
14
16
  end
15
17
 
16
- def self.print(text, *colors)
18
+ def self.print(text = '', *colors)
17
19
  colors = colors.map { |c| HighLine.const_get(c.to_s.upcase) }
20
+ text = text.join("\n ") if text.is_a?(Array)
18
21
  HighLine.say HighLine.color(" #{text}", *colors)
19
22
  end
20
23
 
@@ -30,3 +33,9 @@ module Hanzo
30
33
  HighLine.ask "-----> #{question} ", &blk
31
34
  end
32
35
  end
36
+
37
+ class String
38
+ def unindent
39
+ gsub /^#{scan(/^\s*/).min_by{|l|l.length}}/, ''
40
+ end
41
+ 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.2.3
4
+ version: '0.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: 2013-09-25 00:00:00.000000000 Z
11
+ date: 2013-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,6 +75,7 @@ extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - .gitignore
78
+ - Gemfile
78
79
  - LICENSE.md
79
80
  - README.md
80
81
  - Rakefile
@@ -84,6 +85,7 @@ files:
84
85
  - lib/hanzo/base.rb
85
86
  - lib/hanzo/cli.rb
86
87
  - lib/hanzo/heroku.rb
88
+ - lib/hanzo/modules/config.rb
87
89
  - lib/hanzo/modules/deploy.rb
88
90
  - lib/hanzo/modules/install.rb
89
91
  - lib/hanzo/modules/installers/labs.rb
@@ -109,9 +111,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
111
  version: '0'
110
112
  requirements: []
111
113
  rubyforge_project:
112
- rubygems_version: 2.0.0
114
+ rubygems_version: 2.1.0
113
115
  signing_key:
114
116
  specification_version: 4
115
117
  summary: Hanzo is a tool to handle deployments in multiple environments on Heroku.
116
118
  test_files: []
117
- has_rdoc: