kubes 0.4.5 → 0.4.6

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: bbdaabc58ed6ae8e1c2941431c61a3e7edf7708b7782f1d456b4bcf2b01ef777
4
- data.tar.gz: '04290becf20d593ba00d214dd2e790eac5501e3e8f5e3b62d636b3e882b7a5e1'
3
+ metadata.gz: f4943b1a730b2ab6d80a6de3128d6a55182a02f75c6ed176ab5bdc2eef9e080a
4
+ data.tar.gz: 0d30261fa44bb60fa61bc9d38ada888469caa27b42e09c19e59edbbed52ab190
5
5
  SHA512:
6
- metadata.gz: 302a4a216bc5007de836e335cc38e4fcd8d4c4db8d873f4333d862f84dbcfd32c302ba72c8123392f2a1679ca419be15ef660818f2b75a06b05cb0250a469198
7
- data.tar.gz: dbbf8a825b893490963db61c6b08d2adf45ef62be0bad19d44235b1b822077ebb4e8728d45d119dddfb6f33e39ecb3d69ccb89ceda938275b8371306ca72efaa
6
+ metadata.gz: 3a17f532fa0b257a92b79fd1975c6d83ba0d7fc6f4d56c7e01f0937d9f64b16bae2e3637364acc258027f0c3fe434f1732221dedc8461587c45a9fcaea4c873b
7
+ data.tar.gz: 91e88038fcdfd9925567936c2a665d097ac739d2ebb17191526357bbd227336ffe57c389e946f44b6ce78ed27022901f2c78ee64f2aacdcbeda490a51d35e35a
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.4.6]
7
+ - #32 custom helpers support
8
+
6
9
  ## [0.4.5]
7
10
  - #31 kubes AWS helpers
8
11
 
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Custom Helpers
3
+ ---
4
+
5
+ Kubes ships with several built-in helpers. On top of this, you can define your own custom helpers. This allows you to define new methods and customize Kubes further.
6
+
7
+ ## Example
8
+
9
+ You define custom helpers in the `.kubes/helpers` folder.
10
+
11
+ .kubes/helpers/my_helpers.rb
12
+
13
+ ```ruby
14
+ module MyHelpers
15
+ def database_endpoint
16
+ case Kubes.env
17
+ when "dev"
18
+ "dev-db.cbuqdmc3nqvb.us-west-2.rds.amazonaws.com"
19
+ when "prod"
20
+ "prod-db.cbuqdmc3nqvb.us-west-2.rds.amazonaws.com"
21
+ end
22
+ end
23
+ end
24
+ ```
25
+
26
+ The `database_endpoint` will be available to use in the `.kubes/resources` YAML files. IE:
27
+
28
+ .kubes/helpers/resources/shared/config_map.yaml
29
+
30
+ ```yaml
31
+ apiVersion: v1
32
+ kind: ConfigMap
33
+ metadata:
34
+ name: demo
35
+ labels:
36
+ app: demo
37
+ data:
38
+ DATABASE_ENDPOINT: <%= database_endpoint %>
39
+ ```
40
+
@@ -99,6 +99,7 @@
99
99
  </li>
100
100
  <li><a href="{% link _docs/helpers.md %}">Helpers</a>
101
101
  <ul>
102
+ <li><a href="{% link _docs/helpers/custom.md %}">Custom</a></li>
102
103
  <li><a href="{% link _docs/helpers/aws.md %}">AWS</a>
103
104
  <ul>
104
105
  {% assign docs = site.docs | where: "categories","helpers-aws" %}
@@ -14,8 +14,17 @@ module Kubes
14
14
  loader = Zeitwerk::Loader.new
15
15
  loader.inflector = Inflector.new
16
16
  loader.push_dir(File.dirname(__dir__)) # lib
17
+
18
+ helpers = "#{kubes_root}/.kubes/helpers"
19
+ loader.push_dir(helpers) if File.exist?(helpers) # project helpers
20
+
17
21
  loader.setup
18
22
  end
23
+
24
+ # Autoloader runs so early that Kubes.root is not available, so we must declare it here
25
+ def kubes_root
26
+ ENV['KUBES_ROOT'] || '.'
27
+ end
19
28
  end
20
29
  end
21
30
  end
@@ -0,0 +1,17 @@
1
+ module Kubes::Compiler::Shared
2
+ module CustomHelpers
3
+ # Load custom helper methods from project
4
+ @@custom_helpers_loaded = false
5
+ def load_custom_helpers
6
+ return if @@custom_helpers_loaded
7
+ paths = Dir.glob("#{Kubes.root}/.kubes/helpers/**/*.rb")
8
+ paths.sort_by! { |p| p.size } # so namespaces are loaded first
9
+ paths.each do |path|
10
+ filename = path.sub(%r{.*.kubes/helpers/},'').sub('.rb','')
11
+ module_name = filename.camelize
12
+ self.class.send :include, module_name.constantize
13
+ end
14
+ @@custom_helpers_loaded = true
15
+ end
16
+ end
17
+ end
@@ -2,6 +2,7 @@ class Kubes::Compiler::Strategy
2
2
  class Base
3
3
  include Kubes::Logging
4
4
  include Kubes::Compiler::Util::SaveFile
5
+ include Kubes::Compiler::Shared::CustomHelpers
5
6
 
6
7
  def initialize(options={})
7
8
  @options = options
@@ -3,6 +3,7 @@ class Kubes::Compiler::Strategy
3
3
  include Kubes::Compiler::Util::Normalize
4
4
 
5
5
  def run
6
+ load_custom_helpers
6
7
  dsl = dsl_class.new(@options) # Deployment, Service, etc
7
8
  data = dsl.run
8
9
  Result.new(@save_file, data)
@@ -4,10 +4,12 @@ class Kubes::Compiler::Strategy
4
4
  class Erb < Base
5
5
  extend Kubes::Compiler::Dsl::Core::Fields
6
6
  include Kubes::Compiler::Dsl::Core::Helpers
7
+ include Kubes::Compiler::Shared::CustomHelpers
7
8
  include Kubes::Compiler::Shared::Helpers
8
9
  include Kubes::Compiler::Layering
9
10
 
10
11
  def run
12
+ load_custom_helpers
11
13
  @data = {}
12
14
 
13
15
  render_files(pre_layers)
@@ -1,3 +1,3 @@
1
1
  module Kubes
2
- VERSION = "0.4.5"
2
+ VERSION = "0.4.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kubes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
@@ -303,6 +303,7 @@ files:
303
303
  - docs/_docs/helpers/aws/iam-role.md
304
304
  - docs/_docs/helpers/aws/secrets.md
305
305
  - docs/_docs/helpers/aws/ssm.md
306
+ - docs/_docs/helpers/custom.md
306
307
  - docs/_docs/helpers/google.md
307
308
  - docs/_docs/helpers/google/secrets.md
308
309
  - docs/_docs/helpers/google/service-account.md
@@ -557,6 +558,7 @@ files:
557
558
  - lib/kubes/compiler/dsl/syntax/service.rb
558
559
  - lib/kubes/compiler/dsl/syntax/service_account.rb
559
560
  - lib/kubes/compiler/layering.rb
561
+ - lib/kubes/compiler/shared/custom_helpers.rb
560
562
  - lib/kubes/compiler/shared/helpers.rb
561
563
  - lib/kubes/compiler/strategy.rb
562
564
  - lib/kubes/compiler/strategy/base.rb