constancy 0.3.3 → 0.4.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: ae1133b21310c9e81bbfdec38f3f86196a0b18a9615bf4a09b9c6eccf9344355
4
- data.tar.gz: d84ef8bfca702fade88dc33801b62abfc8c059bebb1cb853f3d2b5d071f90ffa
3
+ metadata.gz: a7ada530fb88ee051c876720fd885e77cf72ca7fcd5428a1b67b2ee4af6a8783
4
+ data.tar.gz: 55258aafabeb7c9e59fa99761f09ed7840271f4a0c48e621fa46f4c5a62b4059
5
5
  SHA512:
6
- metadata.gz: f39f5e460b4e765149270303bc273fca953d48c0984c11ffb74d3e861b0a2234e226added35c2be205b401b245b8c8081414f0957607b01acae93dc52196366a
7
- data.tar.gz: 5b2d4906f3a6e91fc4f1708241fd377e1e3be73c448f9d7fd84c36946a6b44803f8ec80a36ef691ea1cd8365fc2792022ef3b58a4accf3665ed55654a1ace231
6
+ metadata.gz: dea0a26adaa5c4c7497ce11748353c4219549fdff1a4a0035d45ec7620cda19b013d7f85f4d97da4167e8940eebc03ede5717d0a1c04092c1525468721df3b0b
7
+ data.tar.gz: f59c3ae823a87ac7e8c47ccea89cbc035a6676025c65b1a42907eae2567d5efee5f3413a145d7a554b827cf6a49d669ccc702947226b5e404a87360f6d605b22
data/README.md CHANGED
@@ -180,6 +180,9 @@ required. An example `constancy.yml` is below including explanatory comments:
180
180
  # ignored. At this time there is no provision for specifying
181
181
  # prefixes or patterns. Each key must be fully and explicitly
182
182
  # specified.
183
+ # erb_enabled - Whether or not to run the local content through
184
+ # ERB parsing before attempting to sync to the remote. Defaults
185
+ # to `false`.
183
186
  - name: myapp-config
184
187
  prefix: config/myapp
185
188
  datacenter: dc1
@@ -199,6 +202,7 @@ required. An example `constancy.yml` is below including explanatory comments:
199
202
  datacenter: dc1
200
203
  path: consul/yourapp.yml
201
204
  delete: true
205
+ erb_enabled: true
202
206
 
203
207
  You can run `constancy config` to get a summary of the defined configuration
204
208
  and to double-check config syntax.
@@ -335,6 +339,12 @@ It's a good idea to sanity-check your ERB by running `constancy config` after
335
339
  making any changes.
336
340
 
337
341
 
342
+ ### Dynamic content
343
+
344
+ You can also choose to enable ERB parsing for local content as well, by setting
345
+ `erb_enabled: true` on any sync targets you wish to populate in this way.
346
+
347
+
338
348
  ### Environment configuration
339
349
 
340
350
  Constancy may be partially configured using environment variables:
@@ -3,6 +3,6 @@
3
3
  # This software is public domain. No rights are reserved. See LICENSE for more information.
4
4
  #
5
5
 
6
- require 'constancy/cli'
6
+ require_relative '../lib/constancy/cli'
7
7
 
8
8
  Constancy::CLI.run
@@ -6,10 +6,10 @@ require 'fileutils'
6
6
  require 'ostruct'
7
7
  require 'yaml'
8
8
 
9
- require 'constancy/version'
10
- require 'constancy/config'
11
- require 'constancy/diff'
12
- require 'constancy/sync_target'
9
+ require_relative 'constancy/version'
10
+ require_relative 'constancy/config'
11
+ require_relative 'constancy/diff'
12
+ require_relative 'constancy/sync_target'
13
13
 
14
14
  class Constancy
15
15
  class InternalError < RuntimeError; end
@@ -1,12 +1,12 @@
1
1
  # This software is public domain. No rights are reserved. See LICENSE for more information.
2
2
 
3
- require 'constancy'
3
+ require_relative '../constancy'
4
4
  require 'diffy'
5
- require 'constancy/cli/check_command'
6
- require 'constancy/cli/push_command'
7
- require 'constancy/cli/pull_command'
8
- require 'constancy/cli/config_command'
9
- require 'constancy/cli/targets_command'
5
+ require_relative 'cli/check_command'
6
+ require_relative 'cli/push_command'
7
+ require_relative 'cli/pull_command'
8
+ require_relative 'cli/config_command'
9
+ require_relative 'cli/targets_command'
10
10
 
11
11
  class Constancy
12
12
  class CLI
@@ -2,8 +2,8 @@
2
2
 
3
3
  class Constancy
4
4
  class SyncTarget
5
- VALID_CONFIG_KEYS = %w( name type datacenter prefix path exclude chomp delete )
6
- attr_accessor :name, :type, :datacenter, :prefix, :path, :exclude, :consul
5
+ VALID_CONFIG_KEYS = %w( name type datacenter prefix path exclude chomp delete erb_enabled )
6
+ attr_accessor :name, :type, :datacenter, :prefix, :path, :exclude, :consul, :erb_enabled
7
7
 
8
8
  REQUIRED_CONFIG_KEYS = %w( prefix )
9
9
  VALID_TYPES = [ :dir, :file ]
@@ -47,6 +47,11 @@ class Constancy
47
47
  end
48
48
 
49
49
  self.consul = Imperium::KV.new(imperium_config)
50
+ self.erb_enabled = config['erb_enabled']
51
+ end
52
+
53
+ def erb_enabled?
54
+ @erb_enabled
50
55
  end
51
56
 
52
57
  def chomp?
@@ -89,22 +94,41 @@ class Constancy
89
94
  when :dir
90
95
  self.local_files.each do |local_file|
91
96
  @local_items[local_file.sub(%r{^#{self.base_path}/?}, '')] =
92
- if self.chomp?
93
- File.read(local_file).chomp.force_encoding(Encoding::ASCII_8BIT)
94
- else
95
- File.read(local_file).force_encoding(Encoding::ASCII_8BIT)
96
- end
97
+ load_local_file(local_file)
97
98
  end
98
99
 
99
100
  when :file
100
101
  if File.exist?(self.base_path)
101
- @local_items = flatten_hash(nil, YAML.load_file(self.base_path))
102
+ @local_items = local_items_from_file
102
103
  end
103
104
  end
104
105
 
105
106
  @local_items
106
107
  end
107
108
 
109
+ def local_items_from_file
110
+ if erb_enabled?
111
+ loaded_file = YAML.load(ERB.new(File.read(self.base_path)).result)
112
+ else
113
+ loaded_file = YAML.load_file(self.base_path)
114
+ end
115
+
116
+ flatten_hash(nil, loaded_file)
117
+ end
118
+
119
+ def load_local_file(local_file)
120
+ file = File.read(local_file)
121
+
122
+ if self.chomp?
123
+ encoded_file = file.chomp.force_encoding(Encoding::ASCII_8BIT)
124
+ else
125
+ encoded_file = file.force_encoding(Encoding::ASCII_8BIT)
126
+ end
127
+
128
+ return ERB.new(encoded_file).result if erb_enabled?
129
+ encoded_file
130
+ end
131
+
108
132
  def remote_items
109
133
  return @remote_items if not @remote_items.nil?
110
134
  @remote_items = {}
@@ -1,5 +1,5 @@
1
1
  # This software is public domain. No rights are reserved. See LICENSE for more information.
2
2
 
3
3
  class Constancy
4
- VERSION = "0.3.3"
4
+ VERSION = "0.4.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: constancy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Adams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-08 00:00:00.000000000 Z
11
+ date: 2020-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: imperium