kite 1.0.10 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/ci/bump.rb +1 -3
- data/lib/kite.rb +1 -0
- data/lib/kite/base.rb +4 -0
- data/lib/kite/configuration.rb +25 -0
- data/lib/kite/core.rb +5 -2
- data/lib/kite/helpers.rb +24 -0
- data/lib/kite/module.rb +41 -48
- data/lib/kite/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4316889b3af724fb89854fb09d9364d9277dc0f89019349c102e4c4a48e026ac
|
4
|
+
data.tar.gz: 2ae90c0b44278e9cfe22e5b8b44cf85ff2a0df04f2aa8c04b6aaefd7988c9949
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 588c4228e6ee3fa02fd8800b3d202aa21ca64c97aa4f72a5f0fb932fa015b72d10f7ddef41869d70049ca64c498bb6730c0b42af097f90df2fe1b23c3dfdcb7b
|
7
|
+
data.tar.gz: dfc062783a611b3bad533912483975fdbc2f3a19dbcc319b12cc09e2eb2c3bbc5a2cbedde7a317514c513b00a918b00c50a2e4393df7cb9b23f158b8cf9fd437
|
data/ci/bump.rb
CHANGED
@@ -199,9 +199,7 @@ bump &&= ENV["TRAVIS_TAG"].to_s.empty?
|
|
199
199
|
bump &&= !tagged_commits_mapping.key?(ENV["TRAVIS_COMMIT"])
|
200
200
|
|
201
201
|
if bump
|
202
|
-
if ENV["TRAVIS_BRANCH"]
|
203
|
-
bump_from_master_branch
|
204
|
-
else
|
202
|
+
if ENV["TRAVIS_BRANCH"] != "master"
|
205
203
|
bump_from_version_specific_branch(ENV["TRAVIS_BRANCH"])
|
206
204
|
end
|
207
205
|
end
|
data/lib/kite.rb
CHANGED
data/lib/kite/base.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Kite
|
2
|
+
class Configuration < Base
|
3
|
+
include Kite::Helpers
|
4
|
+
|
5
|
+
method_option :env, type: :string, desc: "Environment", required: true, default: ENV['KITE_ENV']
|
6
|
+
desc 'get QUERY', 'Returns value for specified QUERY'
|
7
|
+
def get(query)
|
8
|
+
@env = options[:env]
|
9
|
+
@path = cloud_path
|
10
|
+
vars_paths = Dir[@path + "/config/environments/#{@env}/vars.*"]
|
11
|
+
|
12
|
+
vars_paths.each do |vars_path|
|
13
|
+
@res = YAML::load_file(vars_path)
|
14
|
+
query.split('.').each { |k| @res = @res[k] }
|
15
|
+
break unless @res.nil?
|
16
|
+
end
|
17
|
+
|
18
|
+
if @res.nil?
|
19
|
+
raise Kite::Error, "Invalid query: \"#{query}\""
|
20
|
+
else
|
21
|
+
puts @res
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/kite/core.rb
CHANGED
@@ -13,10 +13,13 @@ module Kite
|
|
13
13
|
desc "generate", "Generate IaC from configuration"
|
14
14
|
subcommand "generate", Kite::Generate
|
15
15
|
|
16
|
-
desc
|
16
|
+
desc "module", "Use kite modules with environments"
|
17
17
|
subcommand "module", Kite::Module
|
18
18
|
|
19
|
-
desc
|
19
|
+
desc "configuration", "Get configs of current environment"
|
20
|
+
subcommand "configuration", Kite::Configuration
|
21
|
+
|
22
|
+
desc "terraform", "Run Terraform-related commands with environment variables loaded from module vars"
|
20
23
|
method_option :env, type: :string, desc: "Environment", required: true, default: ENV['KITE_ENV']
|
21
24
|
def terraform(command, *args)
|
22
25
|
Kernel.exit Kite::Terraform.new(self, options).run(command, *args)
|
data/lib/kite/helpers.rb
CHANGED
@@ -4,6 +4,22 @@ module Kite::Helpers
|
|
4
4
|
raise Kite::Error, 'The config/cloud.yml is not filled out!' unless config.find { |key, hash| hash.find { |k, v| v.nil? } }.nil?
|
5
5
|
end
|
6
6
|
|
7
|
+
def cloud_valid?(path)
|
8
|
+
valid = Dir.children(path).include? 'config'
|
9
|
+
valid &&= Dir.children(path + '/config').include? 'cloud.yml'
|
10
|
+
|
11
|
+
valid
|
12
|
+
end
|
13
|
+
|
14
|
+
def cloud_path
|
15
|
+
Dir.pwd.tap do |path|
|
16
|
+
until cloud_valid? path
|
17
|
+
raise Kite::Error, "Invalid path: \"#{Dir.pwd}\"" if path == "/"
|
18
|
+
path = File.dirname(path)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
7
23
|
# Parse config/cloud.yml, returning the output hash
|
8
24
|
def parse_cloud_config(env = nil)
|
9
25
|
cloud_config = YAML.load(File.read('config/cloud.yml'))
|
@@ -17,4 +33,12 @@ module Kite::Helpers
|
|
17
33
|
end
|
18
34
|
return cloud_config
|
19
35
|
end
|
36
|
+
|
37
|
+
def run!(command, config = {})
|
38
|
+
run(command)
|
39
|
+
|
40
|
+
if $?.exitstatus != 0
|
41
|
+
raise Thor::Error.new("command failed: #{ command }")
|
42
|
+
end
|
43
|
+
end
|
20
44
|
end
|
data/lib/kite/module.rb
CHANGED
@@ -3,30 +3,38 @@ module Kite
|
|
3
3
|
include Kite::Helpers
|
4
4
|
|
5
5
|
method_option :env, type: :string, desc: "Environment", required: true, default: ENV['KITE_ENV']
|
6
|
-
method_option :version, type: :string, desc: "Version", required: false
|
6
|
+
method_option :version, type: :string, desc: "Version", aliases: '-v', required: false
|
7
|
+
method_option :method, type: :string, desc: "Module import method", enum: %w{copy submodule}, default: "submodule"
|
7
8
|
desc 'init https://github.com/foo/bar-module', 'Initialize a kite module and render its vars.module.yml'
|
8
9
|
def init(path)
|
9
|
-
@env
|
10
|
-
@
|
11
|
-
@
|
12
|
-
|
13
|
-
@
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
checkout_version
|
10
|
+
@env = options[:env]
|
11
|
+
@module_name = path.gsub(/(.*:|.git)/, '').split('/').last
|
12
|
+
@module_path = "modules/#{ @module_name }"
|
13
|
+
|
14
|
+
if File.exist?(@module_path)
|
15
|
+
overwrite = ask "#{ @module_path } already exists! Overwrite? (y/N)"
|
16
|
+
if overwrite.downcase == 'y'
|
17
|
+
say "Remove existing files"
|
18
|
+
remove_dir(@module_path)
|
19
|
+
else
|
20
|
+
say "Skipping module init"
|
21
|
+
return
|
22
22
|
end
|
23
|
-
|
24
|
-
say "Use git submodule add #{@path} to be able to commit this module as a submodule", :yellow
|
25
23
|
end
|
26
24
|
|
27
|
-
|
25
|
+
case options[:method]
|
26
|
+
when"submodule"
|
27
|
+
clone_module(path, @module_path, options[:version])
|
28
|
+
when "copy"
|
29
|
+
FileUtils.mkdir_p("modules")
|
30
|
+
FileUtils.cp_r(path, @module_path)
|
31
|
+
else
|
32
|
+
raise "Unsupported method #{ method }"
|
33
|
+
end
|
28
34
|
|
29
|
-
|
35
|
+
@cloud = parse_cloud_config(@env)
|
36
|
+
vars_output = render_vars(@module_name, @module_path)
|
37
|
+
say "Rendered successfully #{ vars_output }, please edit this file with correct values", :green
|
30
38
|
end
|
31
39
|
|
32
40
|
method_option :env, type: :string, desc: "Environment", required: true, default: ENV['KITE_ENV']
|
@@ -47,39 +55,24 @@ module Kite
|
|
47
55
|
@env
|
48
56
|
end
|
49
57
|
|
50
|
-
def clone_module
|
58
|
+
def clone_module(uri, path, version)
|
51
59
|
say "Cloning the module"
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
Git.clone(@uri, @path)
|
59
|
-
say "Successfully cloned the fresh #{@name}!", :green
|
60
|
-
else
|
61
|
-
say "Keeping the current module revision"
|
60
|
+
run! "git submodule add #{ uri } #{ path }"
|
61
|
+
run! "git submodule init"
|
62
|
+
run! "git submodule update"
|
63
|
+
unless version.to_s.empty?
|
64
|
+
Dir.chdir(path) do
|
65
|
+
run! "git checkout #{ version }"
|
62
66
|
end
|
63
|
-
|
64
|
-
Git.clone(@uri, @path)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def checkout_version
|
69
|
-
module_git = Git.open(@path)
|
70
|
-
|
71
|
-
say "Switching to #{@version}"
|
72
|
-
if @version =~ /\d+\.\d+\.\d+/ && module_git.tags.any? { |t| t.name == @version }
|
73
|
-
module_git.checkout("tags/#{@version}")
|
74
|
-
elsif module_git.is_remote_branch? @version
|
75
|
-
module_git.checkout("origin/#{@version}")
|
76
|
-
else
|
77
|
-
say "#{@version} tag/branch was not found in the module, keeping the current one", :red
|
67
|
+
run! "git add #{ path }"
|
78
68
|
end
|
69
|
+
say "Successfully init #{ path }!", :green
|
79
70
|
end
|
80
71
|
|
81
|
-
def render_vars
|
82
|
-
|
72
|
+
def render_vars(module_name, module_path)
|
73
|
+
output_file = "config/environments/#{ @env }/vars.#{ module_name }.yml"
|
74
|
+
create_file output_file, YAML.dump(manifest(module_path)['variables'])
|
75
|
+
output_file
|
83
76
|
end
|
84
77
|
|
85
78
|
def render_templates
|
@@ -91,8 +84,8 @@ module Kite
|
|
91
84
|
YAML.load(File.open("config/environments/#{@env}/vars.#{@name}.yml"))
|
92
85
|
end
|
93
86
|
|
94
|
-
def manifest
|
95
|
-
YAML.load(ERB.new(File.read("#{
|
87
|
+
def manifest(module_path)
|
88
|
+
YAML.load(ERB.new(File.read("#{module_path}/manifest.yml.tt")).result(binding))
|
96
89
|
end
|
97
90
|
end
|
98
91
|
|
data/lib/kite/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Louis Bellet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/kite.rb
|
159
159
|
- lib/kite/base.rb
|
160
160
|
- lib/kite/cloud.rb
|
161
|
+
- lib/kite/configuration.rb
|
161
162
|
- lib/kite/core.rb
|
162
163
|
- lib/kite/error.rb
|
163
164
|
- lib/kite/generate.rb
|
@@ -217,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
218
|
version: '0'
|
218
219
|
requirements: []
|
219
220
|
rubyforge_project:
|
220
|
-
rubygems_version: 2.7.
|
221
|
+
rubygems_version: 2.7.6
|
221
222
|
signing_key:
|
222
223
|
specification_version: 4
|
223
224
|
summary: Command line tool for devops scaffolding.
|