benry-config 0.1.0 → 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 +5 -5
- data/CHANGES.md +19 -0
- data/{MIT-LICENSE.txt → MIT-LICENSE} +1 -1
- data/README.md +99 -36
- data/Rakefile.rb +14 -0
- data/benry-config.gemspec +32 -0
- data/doc/benry-config.html +139 -0
- data/doc/css/style.css +168 -0
- data/examples/config/app.rb +13 -0
- data/examples/config/app.secret +5 -0
- data/examples/config/app_dev.rb +7 -0
- data/examples/config/app_prod.rb +10 -0
- data/examples/main.rb +25 -0
- data/lib/benry/config.rb +93 -51
- data/task/common-task.rb +144 -0
- data/task/package-task.rb +72 -0
- data/task/readme-task.rb +125 -0
- data/task/test-task.rb +81 -0
- data/test/config_test.rb +272 -95
- metadata +34 -35
- data/Rakefile +0 -83
data/test/config_test.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'minitest/autorun'
|
5
|
-
require 'minitest/ok'
|
3
|
+
require 'oktest'
|
6
4
|
|
7
5
|
require 'benry/config'
|
8
6
|
|
9
7
|
|
10
8
|
|
11
9
|
|
12
|
-
class TestCommonConfig < Benry::
|
10
|
+
class TestCommonConfig < Benry::Config
|
13
11
|
add :db_name , "db1"
|
14
12
|
add :db_user , "user1"
|
15
13
|
add :db_pass , ABSTRACT
|
@@ -31,151 +29,330 @@ class TestConfig3 < TestCommonConfig
|
|
31
29
|
#set :session_secret , "abc123"
|
32
30
|
end
|
33
31
|
|
32
|
+
class TestConfig4 < TestCommonConfig
|
33
|
+
set :db_pass , ABSTRACT['DBPASS']
|
34
|
+
set :session_secret , ABSTRACT['SESS_SECRET']
|
35
|
+
end
|
36
|
+
|
37
|
+
|
34
38
|
|
39
|
+
Oktest.scope do
|
35
40
|
|
36
|
-
describe Benry::BaseConfig do
|
37
41
|
|
42
|
+
topic Benry::Config::AbstractValue do
|
38
43
|
|
39
|
-
describe '#initialize()' do
|
40
44
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
topic '#initialize()' do
|
46
|
+
|
47
|
+
spec "[!6hcf9] accepts environment variable name." do
|
48
|
+
v = Benry::Config::AbstractValue.new(:FOO)
|
49
|
+
ok {v.envvar} == :FOO
|
50
|
+
end
|
51
|
+
|
47
52
|
end
|
48
53
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
|
55
|
+
topic '#[]' do
|
56
|
+
|
57
|
+
spec "[!p0acp] returns new object with environment variable name." do
|
58
|
+
foo = Benry::Config::ABSTRACT[:FOO]
|
59
|
+
ok {foo.class} == Benry::Config::AbstractValue
|
60
|
+
ok {foo.envvar} == :FOO
|
61
|
+
#
|
62
|
+
bar = Benry::Config::SECRET[:BAR]
|
63
|
+
ok {bar.class} == Benry::Config::SecretValue
|
64
|
+
ok {bar.envvar} == :BAR
|
65
|
+
end
|
57
66
|
end
|
58
67
|
|
68
|
+
|
59
69
|
end
|
60
70
|
|
61
71
|
|
62
|
-
describe '.add()' do
|
63
72
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
topic Benry::Config do
|
74
|
+
|
75
|
+
|
76
|
+
topic '#initialize()' do
|
77
|
+
|
78
|
+
spec "[!7rdq4] traverses parent class and gathers config values." do
|
79
|
+
config = TestConfig.new
|
80
|
+
ok {config.db_name} == "db1"
|
81
|
+
ok {config.db_user} == "user1"
|
82
|
+
ok {config.db_pass} == "pass1"
|
83
|
+
ok {config.session_secret} == "abc123"
|
84
|
+
end
|
85
|
+
|
86
|
+
case_when "[!v9f3k] when envvar name not specified..." do
|
87
|
+
|
88
|
+
spec "[!z9mno] raises ConfigError if ABSTRACT or SECRET is not overriden." do
|
89
|
+
pr = proc { TestConfig2.new }
|
90
|
+
ok {pr}.raise?(Benry::ConfigError,
|
91
|
+
"config ':db_pass' should be set, but not.")
|
92
|
+
#
|
93
|
+
pr = proc { TestConfig3.new }
|
94
|
+
ok {pr}.raise?(Benry::ConfigError,
|
95
|
+
"config ':session_secret' should be set, but not.")
|
68
96
|
end
|
97
|
+
|
69
98
|
end
|
70
|
-
ex = ok {pr}.raise?(Benry::ConfigError)
|
71
|
-
ok {ex.message} == "add :db_name : already defined (use set() instead)."
|
72
|
-
end
|
73
99
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
100
|
+
case_when "[!ida3r] when envvar name specified..." do
|
101
|
+
|
102
|
+
spec "[!txl88] raises ConfigError when envvar not set." do
|
103
|
+
ENV['DBPASS'] = nil
|
104
|
+
ENV['SESS_SECRET'] = nil
|
105
|
+
pr = proc { TestConfig4.new }
|
106
|
+
ok {pr}.raise?(Benry::ConfigError,
|
107
|
+
"environment variable '$DBPASS' should be set for config item ':db_pass'.")
|
108
|
+
#
|
109
|
+
ENV['DBPASS'] = "pass1"
|
110
|
+
pr = proc { TestConfig4.new }
|
111
|
+
ok {pr}.raise?(Benry::ConfigError,
|
112
|
+
"environment variable '$SESS_SECRET' should be set for config item ':session_secret'.")
|
113
|
+
end
|
114
|
+
|
115
|
+
spec "[!y47ul] sets envvar value as config value if envvar provided." do
|
116
|
+
ENV['DBPASS'] = "<PASS>"
|
117
|
+
ENV['SESS_SECRET'] = "<SECRETVALUE>"
|
118
|
+
conf = TestConfig4.new
|
119
|
+
ok {conf.db_pass} == "<PASS>"
|
120
|
+
ok {conf.session_secret} == "<SECRETVALUE>"
|
121
|
+
end
|
82
122
|
|
83
|
-
it "[!o0ts4] defines getter method." do
|
84
|
-
cls = Class.new(Benry::BaseConfig) do
|
85
|
-
add :foo , "FOO"
|
86
123
|
end
|
87
|
-
|
88
|
-
ok {obj}.respond_to?(:foo)
|
89
|
-
ok {obj.foo} == "FOO"
|
124
|
+
|
90
125
|
end
|
91
126
|
|
92
|
-
end
|
93
127
|
|
128
|
+
topic '.add()' do
|
94
129
|
|
95
|
-
|
130
|
+
spec "[!m7w96] raises ConfigError when already added." do
|
131
|
+
pr = proc do
|
132
|
+
TestCommonConfig.class_eval do
|
133
|
+
add :db_name, "db9"
|
134
|
+
end
|
135
|
+
end
|
136
|
+
ok {pr}.raise?(Benry::ConfigError,
|
137
|
+
"add :db_name : already defined (use set() instead).")
|
138
|
+
end
|
96
139
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
140
|
+
spec "[!s620t] adds new key and value." do
|
141
|
+
ok {TestCommonConfig.instance_variable_get('@__dict')} == {
|
142
|
+
:db_name => "db1",
|
143
|
+
:db_user => "user1",
|
144
|
+
:db_pass => Benry::Config::ABSTRACT,
|
145
|
+
:session_secret => Benry::Config::SECRET,
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
149
|
+
spec "[!o0ts4] defines getter method." do
|
150
|
+
cls = Class.new(Benry::Config) do
|
151
|
+
add :foo , "FOO"
|
101
152
|
end
|
153
|
+
obj = cls.new
|
154
|
+
ok {obj}.respond_to?(:foo)
|
155
|
+
ok {obj.foo} == "FOO"
|
102
156
|
end
|
103
|
-
|
104
|
-
ok {ex.message} == "set :db_port : not defined (use add() instead)."
|
157
|
+
|
105
158
|
end
|
106
159
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
160
|
+
|
161
|
+
topic '.set()' do
|
162
|
+
|
163
|
+
spec "[!fxc4h] raises ConfigError when not defined yet." do
|
164
|
+
pr = proc do
|
165
|
+
TestCommonConfig.class_eval do
|
166
|
+
set :db_port, 5432
|
167
|
+
end
|
168
|
+
end
|
169
|
+
ok {pr}.raise?(Benry::ConfigError,
|
170
|
+
"set :db_port : not defined (use add() instead).")
|
171
|
+
end
|
172
|
+
|
173
|
+
spec "[!cv8iz] overrides existing value." do
|
174
|
+
ok {TestConfig.instance_variable_get('@__dict')} == {
|
175
|
+
:db_pass => "pass1",
|
176
|
+
:session_secret => "abc123",
|
177
|
+
}
|
178
|
+
#
|
179
|
+
config = TestConfig.new
|
180
|
+
ok {config.db_pass} == "pass1"
|
181
|
+
ok {config.session_secret} == "abc123"
|
182
|
+
end
|
183
|
+
|
116
184
|
end
|
117
185
|
|
118
|
-
end
|
119
186
|
|
187
|
+
topic '.put()' do
|
120
188
|
|
121
|
-
|
189
|
+
spec "[!abd3f] raises nothing whener defined or not." do
|
190
|
+
pr = proc do
|
191
|
+
Class.new(TestCommonConfig) do
|
192
|
+
put :db_name , "db9" # existing
|
193
|
+
put :db_port , "5432" # not existing
|
194
|
+
end
|
195
|
+
end
|
196
|
+
ok {pr}.NOT.raise?(Exception)
|
197
|
+
end
|
198
|
+
|
199
|
+
spec "[!gu2f0] sets key and value." do
|
200
|
+
cls = Class.new(TestCommonConfig) do
|
201
|
+
put :db_name , "db9" # existing
|
202
|
+
put :db_port , 5432 # not existing
|
203
|
+
end
|
204
|
+
ok {cls.instance_variable_get('@__dict')} == {
|
205
|
+
:db_name => "db9",
|
206
|
+
:db_port => 5432,
|
207
|
+
}
|
208
|
+
end
|
122
209
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
put :
|
127
|
-
put :db_port , "5432" # not existing
|
210
|
+
spec "[!84kbr] defines getter method." do
|
211
|
+
cls = Class.new(TestCommonConfig) do
|
212
|
+
put :db_name , "db9" # existing
|
213
|
+
put :db_port , 5432 # not existing
|
128
214
|
end
|
215
|
+
ok {cls}.method_defined?(:db_name)
|
216
|
+
ok {cls}.method_defined?(:db_port)
|
129
217
|
end
|
130
|
-
|
218
|
+
|
131
219
|
end
|
132
220
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
221
|
+
|
222
|
+
topic '#[]' do
|
223
|
+
|
224
|
+
spec "[!z9r30] returns config value." do
|
225
|
+
config = TestConfig.new()
|
226
|
+
ok {config[:db_user]} == "user1"
|
227
|
+
ok {config[:db_pass]} == "pass1"
|
137
228
|
end
|
138
|
-
|
139
|
-
:db_name => "db9",
|
140
|
-
:db_port => 5432,
|
141
|
-
}
|
229
|
+
|
142
230
|
end
|
143
231
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
232
|
+
|
233
|
+
topic '#get_all()' do
|
234
|
+
|
235
|
+
spec "[!85z23] gathers configs which name starts with specified prefix." do
|
236
|
+
config = TestConfig.new()
|
237
|
+
ok {config.get_all(:db_)} == {:name=>"db1", :user=>"user1", :pass=>"pass1"}
|
148
238
|
end
|
149
|
-
|
150
|
-
|
239
|
+
|
240
|
+
spec "[!b72fr] if prefix is a string, then keys returend will also be string." do
|
241
|
+
config = TestConfig.new()
|
242
|
+
ok {config.get_all("db_")} == {"name"=>"db1", "user"=>"user1", "pass"=>"pass1"}
|
243
|
+
end
|
244
|
+
|
151
245
|
end
|
152
246
|
|
153
|
-
end
|
154
247
|
|
248
|
+
topic '#defined?()' do
|
155
249
|
|
156
|
-
|
250
|
+
spec "[!y1fsh] returns true if config key defined." do
|
251
|
+
conf = TestConfig.new()
|
252
|
+
ok {conf.defined?(:db_pass)} == true
|
253
|
+
end
|
254
|
+
|
255
|
+
spec "[!k1b5q] returns false if config key not defined." do
|
256
|
+
conf = TestConfig.new()
|
257
|
+
ok {conf.defined?(:db_password)} == false
|
258
|
+
end
|
157
259
|
|
158
|
-
it "[!z9r30] returns config value." do
|
159
|
-
config = TestConfig.new()
|
160
|
-
ok {config[:db_user]} == "user1"
|
161
|
-
ok {config[:db_pass]} == "pass1"
|
162
260
|
end
|
163
261
|
|
164
|
-
end
|
165
262
|
|
263
|
+
topic '#each()' do
|
264
|
+
|
265
|
+
spec "[!f4ljv] returns Enumerator object if block not given." do
|
266
|
+
conf = TestConfig.new
|
267
|
+
ok {conf.each}.is_a?(Enumerator)
|
268
|
+
end
|
269
|
+
|
270
|
+
spec "[!4wqpu] yields each key and val with hiding secret values." do
|
271
|
+
conf = TestConfig.new
|
272
|
+
d = {}
|
273
|
+
conf.each {|k, v| d[k] = v }
|
274
|
+
ok {d} == {:db_name=>"db1", :db_user=>"user1", :db_pass=>"pass1",
|
275
|
+
:session_secret=>"(secret)"} # !!!
|
276
|
+
end
|
277
|
+
|
278
|
+
spec "[!a9glw] sorts keys if 'true' specified as the first argument." do
|
279
|
+
conf = TestConfig.new
|
280
|
+
keys1 = []
|
281
|
+
conf.each {|k, v| keys1 << k }
|
282
|
+
keys2 = []
|
283
|
+
conf.each(true) {|k, v| keys2 << k }
|
284
|
+
ok {keys1} == [:db_name, :db_user, :db_pass, :session_secret]
|
285
|
+
ok {keys2} == [:db_name, :db_pass, :db_user, :session_secret]
|
286
|
+
end
|
287
|
+
|
288
|
+
spec "[!wggik] returns self if block given." do
|
289
|
+
conf = TestConfig.new
|
290
|
+
ok {conf.each {|k, v| nil }}.same?(conf)
|
291
|
+
end
|
292
|
+
|
293
|
+
end
|
166
294
|
|
167
|
-
describe '#get_all()' do
|
168
295
|
|
169
|
-
|
170
|
-
|
171
|
-
|
296
|
+
topic '#each!()' do
|
297
|
+
|
298
|
+
spec "[!zd9lk] returns Enumerator object if block not given." do
|
299
|
+
conf = TestConfig.new
|
300
|
+
ok {conf.each!}.is_a?(Enumerator)
|
301
|
+
end
|
302
|
+
|
303
|
+
spec "[!7i5p2] yields each key and val without hiding secret values." do
|
304
|
+
conf = TestConfig.new
|
305
|
+
d = {}
|
306
|
+
conf.each! {|k, v| d[k] = v }
|
307
|
+
ok {d} == {:db_name=>"db1", :db_user=>"user1", :db_pass=>"pass1",
|
308
|
+
:session_secret=>"abc123"} # !!!
|
309
|
+
end
|
310
|
+
|
311
|
+
spec "[!aib7c] sorts keys if 'true' specified as the first argument." do
|
312
|
+
conf = TestConfig.new
|
313
|
+
keys1 = []
|
314
|
+
conf.each! {|k, v| keys1 << k }
|
315
|
+
keys2 = []
|
316
|
+
conf.each(true) {|k, v| keys2 << k }
|
317
|
+
ok {keys1} == [:db_name, :db_user, :db_pass, :session_secret]
|
318
|
+
ok {keys2} == [:db_name, :db_pass, :db_user, :session_secret]
|
319
|
+
end
|
320
|
+
|
321
|
+
spec "[!2abgb] returns self if block given." do
|
322
|
+
conf = TestConfig.new
|
323
|
+
ok {conf.each! {|k, v| nil }}.same?(conf)
|
324
|
+
end
|
325
|
+
|
172
326
|
end
|
173
327
|
|
174
|
-
|
175
|
-
|
176
|
-
|
328
|
+
|
329
|
+
topic '#_each()' do
|
330
|
+
|
331
|
+
spec "[!6yvgd] sorts keys if 'sort' is true." do
|
332
|
+
keys1 = []
|
333
|
+
keys2 = []
|
334
|
+
TestConfig.new.instance_eval do
|
335
|
+
_each(false, false) {|k, v| keys1 << k }
|
336
|
+
_each(true, false) {|k, v| keys2 << k }
|
337
|
+
end
|
338
|
+
ok {keys1} == [:db_name, :db_user, :db_pass, :session_secret]
|
339
|
+
ok {keys2} == [:db_name, :db_pass, :db_user, :session_secret]
|
340
|
+
end
|
341
|
+
|
342
|
+
spec "[!5ledb] hides value if 'hide_secret' is true and value is Secretvalue object." do
|
343
|
+
d1 = {}
|
344
|
+
d2 = {}
|
345
|
+
TestConfig.new.instance_eval do
|
346
|
+
_each(false, true ) {|k, v| d1[k] = v }
|
347
|
+
_each(false, false) {|k, v| d2[k] = v }
|
348
|
+
end
|
349
|
+
ok {d1[:session_secret]} == "(secret)"
|
350
|
+
ok {d2[:session_secret]} == "abc123"
|
351
|
+
end
|
352
|
+
|
177
353
|
end
|
178
354
|
|
355
|
+
|
179
356
|
end
|
180
357
|
|
181
358
|
|
metadata
CHANGED
@@ -1,62 +1,61 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: benry-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- kwatch
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: oktest
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
|
28
|
-
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
description: 'See https://github.com/kwatch/benry/tree/ruby/benry-config for details.
|
26
|
+
version: '1'
|
27
|
+
description: |
|
28
|
+
Small library for configuration of application.
|
42
29
|
|
43
|
-
|
44
|
-
email:
|
45
|
-
- kwa(at)kuwata-lab.com
|
30
|
+
See https://kwatch.github.io/benry-ruby/benry-config.html for details.
|
31
|
+
email: kwatch@gmail.com
|
46
32
|
executables: []
|
47
33
|
extensions: []
|
48
34
|
extra_rdoc_files: []
|
49
35
|
files:
|
50
|
-
-
|
36
|
+
- CHANGES.md
|
37
|
+
- MIT-LICENSE
|
51
38
|
- README.md
|
52
|
-
- Rakefile
|
39
|
+
- Rakefile.rb
|
40
|
+
- benry-config.gemspec
|
41
|
+
- doc/benry-config.html
|
42
|
+
- doc/css/style.css
|
43
|
+
- examples/config/app.rb
|
44
|
+
- examples/config/app.secret
|
45
|
+
- examples/config/app_dev.rb
|
46
|
+
- examples/config/app_prod.rb
|
47
|
+
- examples/main.rb
|
53
48
|
- lib/benry/config.rb
|
49
|
+
- task/common-task.rb
|
50
|
+
- task/package-task.rb
|
51
|
+
- task/readme-task.rb
|
52
|
+
- task/test-task.rb
|
54
53
|
- test/config_test.rb
|
55
|
-
homepage: https://github.
|
54
|
+
homepage: https://kwatch.github.io/benry-ruby/benry-config.html
|
56
55
|
licenses:
|
57
56
|
- MIT
|
58
57
|
metadata: {}
|
59
|
-
post_install_message:
|
58
|
+
post_install_message:
|
60
59
|
rdoc_options: []
|
61
60
|
require_paths:
|
62
61
|
- lib
|
@@ -64,16 +63,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
64
63
|
requirements:
|
65
64
|
- - ">="
|
66
65
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
66
|
+
version: '2.3'
|
68
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
68
|
requirements:
|
70
69
|
- - ">="
|
71
70
|
- !ruby/object:Gem::Version
|
72
71
|
version: '0'
|
73
72
|
requirements: []
|
74
|
-
|
75
|
-
|
76
|
-
signing_key:
|
73
|
+
rubygems_version: 3.4.10
|
74
|
+
signing_key:
|
77
75
|
specification_version: 4
|
78
|
-
summary:
|
79
|
-
test_files:
|
76
|
+
summary: Application configuration library
|
77
|
+
test_files:
|
78
|
+
- test/config_test.rb
|
data/Rakefile
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
project = "benry-config"
|
5
|
-
release = ENV['RELEASE'] || "0.0.0"
|
6
|
-
copyright = "copyright(c) 2016 kuwata-lab.com all rights reserved"
|
7
|
-
license = "MIT License"
|
8
|
-
|
9
|
-
target_files = Dir[*%W[
|
10
|
-
README.md MIT-LICENSE.txt Rakefile
|
11
|
-
lib/**/*.rb
|
12
|
-
test/**/*_test.rb
|
13
|
-
#{project}.gemspec
|
14
|
-
]]
|
15
|
-
|
16
|
-
|
17
|
-
task :default => :help
|
18
|
-
|
19
|
-
|
20
|
-
desc "show help"
|
21
|
-
task :help do
|
22
|
-
puts "rake help # help"
|
23
|
-
puts "rake test # run test"
|
24
|
-
puts "rake package RELEASE=X.X.X # create gem file"
|
25
|
-
puts "rake publish RELEASE=X.X.X # upload gem file"
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
desc "do test"
|
30
|
-
task :test do
|
31
|
-
sh "ruby", *Dir.glob("test/*.rb")
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
desc "create package"
|
36
|
-
task :package do
|
37
|
-
release != "0.0.0" or
|
38
|
-
raise "specify $RELEASE"
|
39
|
-
## copy
|
40
|
-
dir = "build"
|
41
|
-
rm_rf dir if File.exist?(dir)
|
42
|
-
mkdir dir
|
43
|
-
target_files.each do |file|
|
44
|
-
dest = File.join(dir, File.dirname(file))
|
45
|
-
mkdir_p dest, :verbose=>false unless File.exist?(dest)
|
46
|
-
cp file, "#{dir}/#{file}"
|
47
|
-
end
|
48
|
-
## edit
|
49
|
-
Dir.glob("#{dir}/**/*").each do |file|
|
50
|
-
next unless File.file?(file)
|
51
|
-
File.open(file, 'rb+') do |f|
|
52
|
-
s = f.read()
|
53
|
-
s = s.gsub(/\$Release: 0.1.0 $/, "$"+"Release: #{release} $")
|
54
|
-
s = s.gsub(/\$Copyright: copyright(c) 2016 kuwata-lab.com all rights reserved $/, "$"+"Copyright: #{copyright} $")
|
55
|
-
s = s.gsub(/\$License: MIT License $/, "$"+"License: #{license} $")
|
56
|
-
#
|
57
|
-
f.rewind()
|
58
|
-
f.truncate(0)
|
59
|
-
f.write(s)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
## build
|
63
|
-
chdir dir do
|
64
|
-
sh "gem build #{project}.gemspec"
|
65
|
-
end
|
66
|
-
mv "#{dir}/#{project}-#{release}.gem", "."
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
desc "upload gem file to rubygems.org"
|
71
|
-
task :publish do
|
72
|
-
release != "0.0.0" or
|
73
|
-
raise "specify $RELEASE"
|
74
|
-
#
|
75
|
-
gemfile = "#{project}-#{release}.gem"
|
76
|
-
print "** Are you sure to publish #{gemfile}? [y/N]: "
|
77
|
-
ans = $stdin.gets().strip()
|
78
|
-
if ans.downcase.start_with?("y")
|
79
|
-
sh "gem push #{gemfile}"
|
80
|
-
sh "git tag #{project}-#{release}"
|
81
|
-
sh "git push --tags"
|
82
|
-
end
|
83
|
-
end
|