dh-proteus 0.2.5 → 0.3.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
  SHA256:
3
- metadata.gz: b9166f710a73dd5e425c1c57678b074953e822f18373115dab83c2bb69c1a4e1
4
- data.tar.gz: 536e2c89ea79aeb66cd751d280905bdad818d0f3dde221d8b6a8ed3714a1f16d
3
+ metadata.gz: 263b0afd288fa51a29ea54621b191dd8cb86a4337456226694bf8c8047dd2534
4
+ data.tar.gz: 202ba99d158dabcfb19db4bc583f9a7fe4657697f38f0f0923b240232f50524b
5
5
  SHA512:
6
- metadata.gz: addf02fb05acde3f7fbe087fb969725ea07ff5aa191ddb3a3025dbaf8b8abb6ead4b9a0639151698ae74f758ec05da7777f9d838c4361be933ff18e0fb2a2288
7
- data.tar.gz: 0fc89209ad85a76df1010b7842b9a6ff427b9171b3e888ad5ff5cb2a4533d755f4d2070a7f6599af991ac20c5dfb9b056d8f1f135818dbfa0a4e655aa0c686ad
6
+ metadata.gz: '09320cdfeb939b664384449b04496fd649886df20adab89c947b1c89b82cc94b91d2f9afd8c4749de3c9c93202b9aa71bb403e3f0f2e36d7bada77d41fb9c8ff'
7
+ data.tar.gz: c2c3c0d51070d4db497cf14e1f3a1b00d8df9efc3e555c2f1feba7776e088436b066eca4f650615d02b44102a4a080b457610ba40814153b3aba45dae21b1cd9
@@ -2,4 +2,5 @@
2
2
 
3
3
  require 'proteus'
4
4
 
5
+ $stdout.sync = true
5
6
  Proteus::App.start(ARGV)
@@ -6,11 +6,25 @@ module Proteus
6
6
  include Proteus::Helpers::PathHelpers
7
7
  include Thor::Shell
8
8
 
9
+ attr_reader :backend_key
10
+
9
11
  def initialize(config:, context:, environment:)
10
12
  @config = config
11
13
  @context = context
12
14
  @environment = environment
13
- end
15
+
16
+ @config[:providers].each do |provider|
17
+ provider[:environments].each do |env|
18
+ env[:match].each do |m|
19
+ if @environment == m
20
+ @provider_environment = env
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ @backend_key = @provider_environment[:backend]
27
+ end
14
28
 
15
29
  def render
16
30
  File.open(File.join(context_path(@context), 'backend.tf'), 'w') do |file|
@@ -28,10 +42,10 @@ module Proteus
28
42
  <<~TEMPLATE
29
43
  terraform {
30
44
  backend "s3" {
31
- bucket = "<%= @config[:backend][:bucket][:name] %>"
32
- key = "<%= @config[:backend][:key_prefix] %>#{@context}-#{@environment}.tfstate"
33
- region = "<%= @config[:backend][:bucket][:region] %>"
34
- profile = "<%= @config[:backend][:bucket][:profile]%>"
45
+ bucket = "<%= @config[:backend][@backend_key][:bucket][:name] %>"
46
+ key = "<%= @config[:backend][@backend_key][:key_prefix] %>#{@context}-#{@environment}.tfstate"
47
+ region = "<%= @config[:backend][@backend_key][:bucket][:region] %>"
48
+ profile = "<%= @config[:backend][@backend_key][:bucket][:profile]%>"
35
49
  }
36
50
  }
37
51
  TEMPLATE
@@ -30,14 +30,17 @@ module Proteus
30
30
  end
31
31
 
32
32
  def render_backend
33
- Proteus::Backend::Backend.new(config: config, context: context, environment: environment).render
33
+ backend = Proteus::Backend::Backend.new(config: config, context: context, environment: environment)
34
+ backend.render
35
+
36
+ backend
34
37
  end
35
38
 
36
39
  def init(verbose: false)
37
40
  say "initializing", :green
38
41
  say "environment: #{environment}", :green
39
42
 
40
- render_backend
43
+ backend = render_backend
41
44
 
42
45
  `rm -rf #{context_path(context)}/.terraform/*.tf*`
43
46
  `rm -rf #{context_path(context)}/.terraform/modules`
@@ -46,7 +49,7 @@ module Proteus
46
49
  terraform_command = <<~TERRAFORM_COMMAND
47
50
  cd #{context_path(context)} && \
48
51
  terraform init \
49
- -backend-config='key=#{config[:backend][:key_prefix]}#{context}-#{environment}.tfstate' \
52
+ -backend-config='key=#{config[:backend][backend.backend_key][:key_prefix]}#{context}-#{environment}.tfstate' \
50
53
  #{aws_profile} \
51
54
  #{context_path(context)}
52
55
  TERRAFORM_COMMAND
@@ -62,7 +65,7 @@ module Proteus
62
65
  end
63
66
  end
64
67
 
65
- raise "No AWS profile found in config."
68
+ ""
66
69
  end
67
70
 
68
71
  def dryrun
@@ -26,7 +26,7 @@ module Proteus
26
26
  ensure_uniqueness_across :match
27
27
 
28
28
  each do
29
- ensure_keys :profile
29
+ ensure_keys :profile, :backend
30
30
  end
31
31
  end
32
32
  end
@@ -41,10 +41,12 @@ module Proteus
41
41
  end
42
42
 
43
43
  within :backend do
44
- ensure_presence :key_prefix
44
+ each_key do
45
+ ensure_presence :key_prefix
45
46
 
46
- within :bucket do
47
- ensure_keys :name, :region, :profile
47
+ within :bucket do
48
+ ensure_keys :name, :region, :profile
49
+ end
48
50
  end
49
51
  end
50
52
  end
@@ -33,7 +33,15 @@ module Proteus
33
33
  end
34
34
 
35
35
  def current_user
36
- Etc.getpwnam(Etc.getlogin).gecos
36
+ user = ENV['CURRENT_USER_NAME'] ? ENV['CURRENT_USER_NAME'] : Etc.getpwnam(Etc.getlogin).gecos
37
+ if user.empty?
38
+ puts "Please set your git username properly:"
39
+ puts "git config --global user.name \"FIRST_NAME LAST_NAME\""
40
+ puts "git config --global user.email \"YOUR_NAME@example.com\""
41
+ exit 1
42
+ else
43
+ user
44
+ end
37
45
  end
38
46
 
39
47
  def slack_webhook
@@ -1,5 +1,5 @@
1
1
  module Proteus
2
- VERSION = "0.2.5"
2
+ VERSION = "0.3.0"
3
3
  end
4
4
 
5
5
  if $0 == __FILE__
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dh-proteus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Albrecht
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-31 00:00:00.000000000 Z
11
+ date: 2020-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,7 +108,7 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 2.7.0
111
- description:
111
+ description:
112
112
  email:
113
113
  - simon.albrecht@deliveryhero.com
114
114
  executables:
@@ -184,7 +184,7 @@ metadata:
184
184
  homepage_uri: https://github.com/deliveryhero/proteus
185
185
  source_code_uri: https://github.com/deliveryhero/proteus
186
186
  changelog_uri: https://github.com/deliveryhero/proteus/CHANGELOG
187
- post_install_message:
187
+ post_install_message:
188
188
  rdoc_options: []
189
189
  require_paths:
190
190
  - lib
@@ -199,9 +199,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  - !ruby/object:Gem::Version
200
200
  version: '0'
201
201
  requirements: []
202
- rubyforge_project:
202
+ rubyforge_project:
203
203
  rubygems_version: 2.7.6.2
204
- signing_key:
204
+ signing_key:
205
205
  specification_version: 4
206
206
  summary: Proteus is a Terraform wrapper application.
207
207
  test_files: []