rsync_config 0.1.3 → 0.2.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 +4 -4
- data/README.md +19 -0
- data/lib/rsync_config.rb +2 -0
- data/lib/rsync_config/config_entry.rb +4 -0
- data/lib/rsync_config/propertiable.rb +4 -2
- data/lib/rsync_config/secrets_file.rb +23 -0
- data/lib/rsync_config/user_management.rb +5 -2
- data/lib/rsync_config/version.rb +1 -1
- data/rsync_config.gemspec +1 -0
- data/test/test_rsync_config.rb +19 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b29bfb0dc6303bd3346df954749f4bfb1d4efe23
|
4
|
+
data.tar.gz: 9f0fdb8d6d7e5c73be5661e9e44f4d99369a2309
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e8ff54c7e1a056eec4a465547dc2ab372aa8afd8ba222205737fcc2584c55dd0baab16736e2fd90ea81cdee00dc8fda2c593c5317e16b1bcc7d1184bd41ccce
|
7
|
+
data.tar.gz: fab92e104a5bab0288a1d8866af30342698d81b064afdb183f446898d345cf6094eb6f443c44bffa5b3b8978ed6969502f29badb4976181213ce102b75709761
|
data/README.md
CHANGED
@@ -79,6 +79,25 @@ This method will automatically try to write the secrets files when defined.
|
|
79
79
|
For a raw String output, just call `RsyncConfig::Config#to_config_file` instead.
|
80
80
|
Note that this method will not return the content of the secrets file (not sure if this will be useful).
|
81
81
|
|
82
|
+
### Secrets files
|
83
|
+
|
84
|
+
Starting with version 0.2.0, it is possible to create secrets files entries using the `RsyncConfig::SecretsFile` class.
|
85
|
+
It allows to generate a file in a specific location that actually does not match the content of the entry in the config file itself.
|
86
|
+
This is particularly useful in the case of symlinks.
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
config = RsyncConfig::Config.new
|
90
|
+
config.users = {'alice' => 'wonder'}
|
91
|
+
config['secrets file'] = RsyncConfig::SecretsFile(
|
92
|
+
'/myapplication/1.0/rsyncd.secrets',
|
93
|
+
value: '/etc/rsyncd.secrets'
|
94
|
+
)
|
95
|
+
```
|
96
|
+
|
97
|
+
`RsyncConfig::SecretsFile` accepts the physical output path as first parameter.
|
98
|
+
The `value` parameter is optional (but most likely desired) and defines the value that
|
99
|
+
will be used to generate the config file.
|
100
|
+
|
82
101
|
### Limitations
|
83
102
|
|
84
103
|
- currently the gem does not process the directives `&include` and `&merge`.
|
data/lib/rsync_config.rb
CHANGED
@@ -48,13 +48,15 @@ module RsyncConfig
|
|
48
48
|
key = sanitize_key(key)
|
49
49
|
if value.nil?
|
50
50
|
properties.delete key
|
51
|
+
elsif value.is_a? ConfigEntry
|
52
|
+
properties[key] = value
|
51
53
|
else
|
52
|
-
properties[key] = value.to_s
|
54
|
+
properties[key] = value.to_s
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
58
|
def properties_to_a
|
57
|
-
properties.map { |key, value| "#{key} = #{value}" }
|
59
|
+
properties.map { |key, value| "#{key} = #{value.to_s}" }
|
58
60
|
end
|
59
61
|
|
60
62
|
private
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module RsyncConfig
|
2
|
+
class SecretsFile
|
3
|
+
|
4
|
+
include ConfigEntry
|
5
|
+
|
6
|
+
attr_accessor :value, :output
|
7
|
+
|
8
|
+
def initialize(output, **options)
|
9
|
+
raise "output cannot be nil or empty" if output.nil? || output.empty?
|
10
|
+
|
11
|
+
self.output = output
|
12
|
+
self.value = options[:value] if options[:value]
|
13
|
+
end
|
14
|
+
|
15
|
+
def value
|
16
|
+
@value.nil? ? output : @value
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_s
|
20
|
+
value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -48,8 +48,11 @@ module RsyncConfig
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
def write_secrets_file(
|
52
|
-
return if
|
51
|
+
def write_secrets_file(secrets_file)
|
52
|
+
return if secrets_file.nil?
|
53
|
+
|
54
|
+
file = secrets_file.respond_to?(:output) ? secrets_file.output : secrets_file.to_s
|
55
|
+
|
53
56
|
raise "Cannot write secrets file #{file}" if File.exists?(file) && ! File.writable?(file)
|
54
57
|
raise "Cannot create secrets file #{file}" if !File.exist?(file) && ! ( Dir.exists?(File.dirname(file)) && File.writable?(File.dirname(file)))
|
55
58
|
|
data/lib/rsync_config/version.rb
CHANGED
data/rsync_config.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "test-unit"
|
24
|
+
spec.add_development_dependency "debugger"
|
24
25
|
|
25
26
|
spec.add_dependency 'treetop', '~>1.4.14'
|
26
27
|
end
|
data/test/test_rsync_config.rb
CHANGED
@@ -6,7 +6,6 @@ class RsyncConfigTest < Test::Unit::TestCase
|
|
6
6
|
TEST_INPUT_FILE = File.join(__dir__, 'etc', 'rsyncd.conf')
|
7
7
|
|
8
8
|
TEST_INPUT_FILE_WITH_SECRETS = File.join(__dir__, 'etc', 'rsyncd_with_secrets.conf')
|
9
|
-
|
10
9
|
TEST_OUTPUT_FILE = File.join(__dir__, 'etc', 'out', 'rsyncd.conf')
|
11
10
|
|
12
11
|
TEST_SECRETS_FILE = File.join(__dir__, 'etc', 'out', 'secrets.conf')
|
@@ -257,4 +256,23 @@ EOL
|
|
257
256
|
RsyncConfig.parse content
|
258
257
|
end
|
259
258
|
end
|
259
|
+
|
260
|
+
def test_using_a_secrets_file_object_outputs_to_different_file
|
261
|
+
config = RsyncConfig::Config.new
|
262
|
+
config.users = {
|
263
|
+
'john' => 'doe'
|
264
|
+
}
|
265
|
+
secrets_output_config = "#{TEST_SECRETS_FILE}.config_value"
|
266
|
+
config['secrets file'] = RsyncConfig::SecretsFile.new(
|
267
|
+
TEST_SECRETS_FILE,
|
268
|
+
value: secrets_output_config
|
269
|
+
)
|
270
|
+
|
271
|
+
config.write_to TEST_OUTPUT_FILE
|
272
|
+
assert File.exists? TEST_SECRETS_FILE
|
273
|
+
assert_false File.exists? secrets_output_config
|
274
|
+
assert_equal secrets_output_config, config['secrets file'].to_s
|
275
|
+
|
276
|
+
File.unlink secrets_output_config if File.exists? secrets_output_config
|
277
|
+
end
|
260
278
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsync_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guillaume Bodi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: debugger
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: treetop
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,12 +94,14 @@ files:
|
|
80
94
|
- Rakefile
|
81
95
|
- lib/rsync_config.rb
|
82
96
|
- lib/rsync_config/config.rb
|
97
|
+
- lib/rsync_config/config_entry.rb
|
83
98
|
- lib/rsync_config/module.rb
|
84
99
|
- lib/rsync_config/parser.rb
|
85
100
|
- lib/rsync_config/parser/config_file.treetop
|
86
101
|
- lib/rsync_config/parser/node_extension.rb
|
87
102
|
- lib/rsync_config/parser/secrets_file.treetop
|
88
103
|
- lib/rsync_config/propertiable.rb
|
104
|
+
- lib/rsync_config/secrets_file.rb
|
89
105
|
- lib/rsync_config/user_management.rb
|
90
106
|
- lib/rsync_config/version.rb
|
91
107
|
- rsync_config.gemspec
|