constancy 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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