aws-ssm-env 0.1.1 → 0.1.2
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/CHANGELOG.md +6 -1
- data/README.md +1 -1
- data/README_ja.md +1 -1
- data/lib/aws-ssm-env.rb +2 -2
- data/lib/aws-ssm-env/fetcher.rb +2 -5
- data/lib/aws-ssm-env/fetchers/begins_with.rb +1 -1
- data/lib/aws-ssm-env/fetchers/factory.rb +7 -7
- data/lib/aws-ssm-env/fetchers/path.rb +1 -1
- data/lib/aws-ssm-env/loader.rb +5 -5
- data/lib/aws-ssm-env/naming_strategies/factory.rb +6 -6
- data/lib/aws-ssm-env/naming_strategies/snakecase.rb +2 -2
- data/lib/aws-ssm-env/version.rb +1 -1
- data/spec/aws-ssm-env/fetcher_spec.rb +31 -34
- data/spec/aws-ssm-env/fetchers/begins_with_spec.rb +1 -1
- data/spec/aws-ssm-env/fetchers/factory_spec.rb +1 -1
- data/spec/aws-ssm-env/fetchers/path_spec.rb +1 -1
- data/spec/aws-ssm-env/loader_spec.rb +3 -3
- data/spec/aws-ssm-env/naming_strategies/factory_spec.rb +1 -1
- data/spec/aws-ssm-env/naming_strategies/snakecase_spec.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f70eabbd5d506e704fe7c7c3d22d60a998207596df66c22c205da2951d9eb92
|
4
|
+
data.tar.gz: 722a3d367daf0d4d4175e535dd16df23942aa2dede494950386ec2ea5e93ac70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dfa1d43c25d1dbf99a51f25c8e8042deb09d472e81ab3c8b32d2ac9210dadc99606a1d170a7d5d68332a5dc0c415307e509c39e5614a3a99aa6103b5c809184
|
7
|
+
data.tar.gz: 6ec4f594ba7e945b4831efa7b768d9c7a5939cd2e40c3a696e29064a758a232fb6d15e2cba7e94e590fd12a0decaf6abe95bd6137fc57fa74958154c16e67e9e
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.1.2 (2020-12-02)
|
4
|
+
|
5
|
+
- Add ruby 2.7 to Travis CI test matrix #7
|
6
|
+
- Fix for early abort when next_token is not null #8
|
7
|
+
- drop ruby 2.4 support, and fix warnings #11
|
8
|
+
|
3
9
|
## 0.1.1 (2018-01-16)
|
4
10
|
|
5
11
|
- Translate README.
|
6
12
|
- Added ruby 2.5 tests.
|
7
|
-
|
data/README.md
CHANGED
data/README_ja.md
CHANGED
data/lib/aws-ssm-env.rb
CHANGED
@@ -149,12 +149,12 @@ module AwsSsmEnv
|
|
149
149
|
#
|
150
150
|
# @see AwsSsmEnv::Loader#load
|
151
151
|
def load(**args)
|
152
|
-
AwsSsmEnv::Loader.load(args)
|
152
|
+
AwsSsmEnv::Loader.load(**args)
|
153
153
|
end
|
154
154
|
|
155
155
|
# `overwrite`オプションを付与した AwsSsmEnv::Loader#load の委譲メソッド。
|
156
156
|
# @see AwsSsmEnv::Loader#load
|
157
157
|
def load!(**args)
|
158
|
-
AwsSsmEnv::Loader.load(args.merge(overwrite: true))
|
158
|
+
AwsSsmEnv::Loader.load(**args.merge(overwrite: true))
|
159
159
|
end
|
160
160
|
end
|
data/lib/aws-ssm-env/fetcher.rb
CHANGED
@@ -23,8 +23,8 @@ module AwsSsmEnv
|
|
23
23
|
#
|
24
24
|
# @see http://docs.aws.amazon.com/sdk-for-ruby/v3/api/index.html
|
25
25
|
def initialize(**args)
|
26
|
-
@client = create_ssm_client(args)
|
27
|
-
@with_decryption = with_decryption?(args)
|
26
|
+
@client = create_ssm_client(**args)
|
27
|
+
@with_decryption = with_decryption?(**args)
|
28
28
|
end
|
29
29
|
|
30
30
|
# Iteratorパターンを実装したメソッド。AwsSsmEnv#load から呼び出される。
|
@@ -36,9 +36,6 @@ module AwsSsmEnv
|
|
36
36
|
loop do
|
37
37
|
response = fetch(next_token)
|
38
38
|
next_token = response.next_token
|
39
|
-
if response.parameters.empty?
|
40
|
-
break
|
41
|
-
end
|
42
39
|
response.parameters.each do |p|
|
43
40
|
yield(p)
|
44
41
|
end
|
@@ -19,11 +19,11 @@ module AwsSsmEnv
|
|
19
19
|
fetch_type = args[:fetch]
|
20
20
|
case fetch_type
|
21
21
|
when nil
|
22
|
-
default_fetcher(args)
|
22
|
+
default_fetcher(**args)
|
23
23
|
when PATH_FETCHER
|
24
|
-
create_path_fetcher(args)
|
24
|
+
create_path_fetcher(**args)
|
25
25
|
when BEGINS_WITH_FETCHER
|
26
|
-
create_begins_with_fetcher(args)
|
26
|
+
create_begins_with_fetcher(**args)
|
27
27
|
else
|
28
28
|
unless fetcher_instance?(fetch_type)
|
29
29
|
raise ArgumentError, 'Possible values for :fetch are either :path, :begins_with, ' \
|
@@ -37,20 +37,20 @@ module AwsSsmEnv
|
|
37
37
|
|
38
38
|
def default_fetcher(**args)
|
39
39
|
if args.key?(:begins_with)
|
40
|
-
create_begins_with_fetcher(args)
|
40
|
+
create_begins_with_fetcher(**args)
|
41
41
|
else
|
42
|
-
create_path_fetcher(args)
|
42
|
+
create_path_fetcher(**args)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
def create_path_fetcher(**args)
|
47
47
|
require 'aws-ssm-env/fetchers/path'
|
48
|
-
AwsSsmEnv::PathFetcher.new(args)
|
48
|
+
AwsSsmEnv::PathFetcher.new(**args)
|
49
49
|
end
|
50
50
|
|
51
51
|
def create_begins_with_fetcher(**args)
|
52
52
|
require 'aws-ssm-env/fetchers/begins_with'
|
53
|
-
AwsSsmEnv::BeginsWithFetcher.new(args)
|
53
|
+
AwsSsmEnv::BeginsWithFetcher.new(**args)
|
54
54
|
end
|
55
55
|
|
56
56
|
def fetcher_instance?(object)
|
data/lib/aws-ssm-env/loader.rb
CHANGED
@@ -10,11 +10,11 @@ module AwsSsmEnv
|
|
10
10
|
class Loader
|
11
11
|
# メイン処理。引数の詳細は AwsSsmEnv#load を参照。
|
12
12
|
def self.load(**args)
|
13
|
-
new(args).load
|
13
|
+
new(**args).load
|
14
14
|
end
|
15
15
|
|
16
16
|
def initialize(**args)
|
17
|
-
parse_options(args)
|
17
|
+
parse_options(**args)
|
18
18
|
if @logger
|
19
19
|
@logger.debug("#{self.class.name} overwrite: #{@overwrite}")
|
20
20
|
@logger.debug("#{self.class.name} fetcher: #{@fetcher}")
|
@@ -34,9 +34,9 @@ module AwsSsmEnv
|
|
34
34
|
|
35
35
|
def parse_options(**options)
|
36
36
|
@logger = options[:logger]
|
37
|
-
@fetcher = AwsSsmEnv::FetcherFactory.create_fetcher(options)
|
38
|
-
@naming_strategy = AwsSsmEnv::NamingStrategyFactory.create_naming_strategy(options)
|
39
|
-
@overwrite = overwrite?(options)
|
37
|
+
@fetcher = AwsSsmEnv::FetcherFactory.create_fetcher(**options)
|
38
|
+
@naming_strategy = AwsSsmEnv::NamingStrategyFactory.create_naming_strategy(**options)
|
39
|
+
@overwrite = overwrite?(**options)
|
40
40
|
if @overwrite
|
41
41
|
@applier = :apply!
|
42
42
|
else
|
@@ -18,13 +18,13 @@ module AwsSsmEnv
|
|
18
18
|
def create_naming_strategy(**args)
|
19
19
|
naming_strategy = args[:naming]
|
20
20
|
if naming_strategy.nil?
|
21
|
-
return default_strategy(args)
|
21
|
+
return default_strategy(**args)
|
22
22
|
end
|
23
23
|
case naming_strategy
|
24
24
|
when BASENAME_STRATEGY
|
25
|
-
create_basename_strategy(args)
|
25
|
+
create_basename_strategy(**args)
|
26
26
|
when SNAKE_CASE_STRATEGY
|
27
|
-
create_snakecase_strategy(args)
|
27
|
+
create_snakecase_strategy(**args)
|
28
28
|
else
|
29
29
|
unknown_naming_strategy(naming_strategy)
|
30
30
|
end
|
@@ -33,17 +33,17 @@ module AwsSsmEnv
|
|
33
33
|
private
|
34
34
|
|
35
35
|
def default_strategy(**args)
|
36
|
-
create_basename_strategy(args)
|
36
|
+
create_basename_strategy(**args)
|
37
37
|
end
|
38
38
|
|
39
39
|
def create_basename_strategy(**args)
|
40
40
|
require 'aws-ssm-env/naming_strategies/basename'
|
41
|
-
AwsSsmEnv::BasenameNamingStrategy.new(args)
|
41
|
+
AwsSsmEnv::BasenameNamingStrategy.new(**args)
|
42
42
|
end
|
43
43
|
|
44
44
|
def create_snakecase_strategy(**args)
|
45
45
|
require 'aws-ssm-env/naming_strategies/snakecase'
|
46
|
-
AwsSsmEnv::SnakeCaseNamingStrategy.new(args)
|
46
|
+
AwsSsmEnv::SnakeCaseNamingStrategy.new(**args)
|
47
47
|
end
|
48
48
|
|
49
49
|
def unknown_naming_strategy(naming_strategy)
|
@@ -18,8 +18,8 @@ module AwsSsmEnv
|
|
18
18
|
# アンダースコアに変換する区切り文字。デフォルトはスラッシュ('/')。 TODO: AwsSsmEnv#loadとREADMEに反映
|
19
19
|
def initialize(**args)
|
20
20
|
@logger = args[:logger]
|
21
|
-
@delimiter = detect_delimiter(args)
|
22
|
-
removed_prefix = detect_prefix(args).sub(%r{/\z}, '')
|
21
|
+
@delimiter = detect_delimiter(**args)
|
22
|
+
removed_prefix = detect_prefix(**args).sub(%r{/\z}, '')
|
23
23
|
@removed_prefix = /\A#{Regexp.escape(removed_prefix)}/
|
24
24
|
@logger.debug("#{self.class.name} removed_prefix is #{@removed_prefix}") if @logger
|
25
25
|
end
|
data/lib/aws-ssm-env/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe AwsSsmEnv::Fetcher do
|
4
|
-
let(:fetcher) { described_class.new(args) }
|
4
|
+
let(:fetcher) { described_class.new(**args) }
|
5
5
|
let(:args) { {} }
|
6
6
|
let(:client) { fetcher.send(:client) }
|
7
7
|
let(:ssm_client_args) {
|
@@ -86,58 +86,55 @@ describe AwsSsmEnv::Fetcher do
|
|
86
86
|
let(:parameters) { [ Parameter.new('foo', 'foo'), Parameter.new('bar', 'bar') ] }
|
87
87
|
let(:fetcher) {
|
88
88
|
mock_class = Class.new(described_class) do
|
89
|
-
def initialize(
|
90
|
-
protected def fetch(_); @
|
89
|
+
def initialize(responses); @responses = responses; end
|
90
|
+
protected def fetch(_); @responses.shift; end
|
91
91
|
end
|
92
|
-
mock_class.new(
|
92
|
+
mock_class.new(responses)
|
93
93
|
}
|
94
94
|
|
95
|
+
def call_count
|
96
|
+
called = 0
|
97
|
+
fetcher.each do |_|
|
98
|
+
called += 1
|
99
|
+
end
|
100
|
+
called
|
101
|
+
end
|
102
|
+
|
95
103
|
context 'when fetch returns empty parameters at first' do
|
96
|
-
let(:
|
104
|
+
let(:responses) { [AwsSsmEnv::FetchResult::EMPTY] }
|
97
105
|
|
98
106
|
it 'consumer is not called' do
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
107
|
+
expect(call_count).to eq(0)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'when fetch returns empty params and next_token at first, fetch returns two parameters and empty next_token at second' do
|
112
|
+
let(:responses) {
|
113
|
+
[ AwsSsmEnv::FetchResult.new([], 'next_token'),
|
114
|
+
AwsSsmEnv::FetchResult.new(parameters, nil)]
|
115
|
+
}
|
116
|
+
|
117
|
+
it 'consumer is called twice' do
|
118
|
+
expect(call_count).to eq(2)
|
104
119
|
end
|
105
120
|
end
|
106
121
|
|
107
122
|
context 'when fetch returns two parameters at first and empty next_token' do
|
108
|
-
let(:
|
123
|
+
let(:responses) { [AwsSsmEnv::FetchResult.new(parameters, nil)] }
|
109
124
|
|
110
125
|
it 'consumer is called twice' do
|
111
|
-
|
112
|
-
fetcher.each do |_|
|
113
|
-
called += 1
|
114
|
-
end
|
115
|
-
expect(called).to eq(2)
|
126
|
+
expect(call_count).to eq(2)
|
116
127
|
end
|
117
128
|
end
|
118
129
|
|
119
130
|
context 'when fetch returns two parameters and next_token at first, fetch returns two parameters and empty next_token at second' do
|
120
|
-
let(:
|
121
|
-
|
122
|
-
|
123
|
-
protected def fetch(_)
|
124
|
-
if @count == 0
|
125
|
-
@count = 1
|
126
|
-
AwsSsmEnv::FetchResult.new(@parameters, 'next_token')
|
127
|
-
else
|
128
|
-
AwsSsmEnv::FetchResult.new(@parameters, nil)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
mock_class.new(parameters)
|
131
|
+
let(:responses) {
|
132
|
+
[AwsSsmEnv::FetchResult.new(parameters, 'next_token'),
|
133
|
+
AwsSsmEnv::FetchResult.new(parameters, nil)]
|
133
134
|
}
|
134
135
|
|
135
136
|
it 'consumer is called four times' do
|
136
|
-
|
137
|
-
fetcher.each do |_|
|
138
|
-
called += 1
|
139
|
-
end
|
140
|
-
expect(called).to eq(4)
|
137
|
+
expect(call_count).to eq(4)
|
141
138
|
end
|
142
139
|
end
|
143
140
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'aws-ssm-env/fetchers/begins_with'
|
3
3
|
|
4
4
|
describe AwsSsmEnv::BeginsWithFetcher do
|
5
|
-
let(:fetcher) { described_class.new(args) }
|
5
|
+
let(:fetcher) { described_class.new(**args) }
|
6
6
|
let(:args) { { begins_with: [ '/foo', '/bar' ] } }
|
7
7
|
let(:base_params) { fetcher.instance_variable_get(:'@base_params') }
|
8
8
|
let(:parameter_filter) { base_params[:parameter_filters][0] }
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe AwsSsmEnv::FetcherFactory do
|
4
4
|
describe '#create_fetcher' do
|
5
|
-
let(:fetcher) { described_class.create_fetcher(args) }
|
5
|
+
let(:fetcher) { described_class.create_fetcher(**args) }
|
6
6
|
|
7
7
|
context 'when fetch was not set' do
|
8
8
|
context 'when begins_with was not set' do
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'aws-ssm-env/fetchers/path'
|
3
3
|
|
4
4
|
describe AwsSsmEnv::PathFetcher do
|
5
|
-
let(:fetcher) { described_class.new(args) }
|
5
|
+
let(:fetcher) { described_class.new(**args) }
|
6
6
|
let(:args) { { path: '/path' } }
|
7
7
|
let(:base_params) { fetcher.instance_variable_get(:'@base_params') }
|
8
8
|
|
@@ -4,7 +4,7 @@ describe AwsSsmEnv::Loader do
|
|
4
4
|
let(:args) { { path: '/foo' } }
|
5
5
|
|
6
6
|
describe '#initialize' do
|
7
|
-
let(:loader) { described_class.new(args) }
|
7
|
+
let(:loader) { described_class.new(**args) }
|
8
8
|
|
9
9
|
it 'has fetcher and naming_strategy' do
|
10
10
|
expect(loader.instance_variable_get(:@fetcher)).to be_a(AwsSsmEnv::PathFetcher)
|
@@ -52,7 +52,7 @@ describe AwsSsmEnv::Loader do
|
|
52
52
|
ENV['foo'] = nil
|
53
53
|
ENV['fizz'] = 'fizz'
|
54
54
|
|
55
|
-
loader = described_class.new(args)
|
55
|
+
loader = described_class.new(**args)
|
56
56
|
loader.instance_variable_set(:@fetcher,
|
57
57
|
[ Parameter.new('foo', 'bar'), Parameter.new('fizz', 'buzz') ])
|
58
58
|
|
@@ -70,7 +70,7 @@ describe AwsSsmEnv::Loader do
|
|
70
70
|
ENV['foo'] = nil
|
71
71
|
ENV['fizz'] = 'fizz'
|
72
72
|
|
73
|
-
loader = described_class.new(args)
|
73
|
+
loader = described_class.new(**args)
|
74
74
|
loader.instance_variable_set(:@fetcher,
|
75
75
|
[ Parameter.new('foo', 'bar'), Parameter.new('fizz', 'buzz') ])
|
76
76
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe AwsSsmEnv::NamingStrategyFactory do
|
4
4
|
describe '#create_naming_strategy' do
|
5
|
-
let(:naming_strategy) { described_class.create_naming_strategy(args) }
|
5
|
+
let(:naming_strategy) { described_class.create_naming_strategy(**args) }
|
6
6
|
|
7
7
|
context 'when naming was not set' do
|
8
8
|
let(:args) { { naming: nil } }
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'aws-ssm-env/naming_strategies/snakecase'
|
3
3
|
|
4
4
|
describe AwsSsmEnv::SnakeCaseNamingStrategy do
|
5
|
-
let(:strategy) { described_class.new(args) }
|
5
|
+
let(:strategy) { described_class.new(**args) }
|
6
6
|
let(:name) { 'path.to.db/password' }
|
7
7
|
let(:env_name) { strategy.parse_name(Parameter.new(name)) }
|
8
8
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-ssm-env
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryohei Sonoda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-ssm
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: simplecov
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.16.1
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.16.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: simplecov-console
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,7 +147,7 @@ licenses:
|
|
147
147
|
- Apache-2.0
|
148
148
|
metadata:
|
149
149
|
source_code_uri: https://github.com/sonodar/aws-ssm-env-ruby
|
150
|
-
changelog_uri: https://github.com/sonodar/aws-ssm-env-ruby/tree/master/
|
150
|
+
changelog_uri: https://github.com/sonodar/aws-ssm-env-ruby/tree/master/CHANGELOG.md
|
151
151
|
post_install_message:
|
152
152
|
rdoc_options: []
|
153
153
|
require_paths:
|
@@ -156,15 +156,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '2.
|
159
|
+
version: '2.5'
|
160
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
162
|
- - ">="
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: '0'
|
165
165
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.7.4
|
166
|
+
rubygems_version: 3.0.8
|
168
167
|
signing_key:
|
169
168
|
specification_version: 4
|
170
169
|
summary: Set parameters acquired from AWS EC2 Parameter Store as environment variables.
|