lucabook 0.5.0 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/luca-book +38 -22
- data/lib/luca_book/accumulator.rb +2 -2
- data/lib/luca_book/dict.rb +7 -7
- data/lib/luca_book/import.rb +3 -1
- data/lib/luca_book/setup.rb +1 -1
- data/lib/luca_book/state.rb +14 -14
- data/lib/luca_book/util.rb +2 -2
- data/lib/luca_book/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0aada3e712bc8c2ecd96ea0cfe499565d7c6c036decb8b0a29f90bddaf65d9b8
|
4
|
+
data.tar.gz: e7ab9a0d301a86f80b9dcd74140bbf596bfdb6ce73c11cf8aef0b4e6413e7fa7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a5588460f50c3ac0613c16977c1b0849fdf279c25ca18f435d1dfa62e1ad31ef69647774e95a1e01f7255158604f445e61900fd9f992be6775299b2dd5f2d28
|
7
|
+
data.tar.gz: 0a666d47c831e4f8bfa0adf5c064c544de2c2c55d45c4c407dc1e3cd62ecaa5e9f6034ba65925ac936e7375b93ef38094932f43bd99af96dbedabf3fae4a7aaa
|
data/exe/luca-book
CHANGED
@@ -1,19 +1,12 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
5
|
-
target = 'journals'
|
6
|
-
Dir.glob('*').reject { |f| File.symlink?(f) }
|
7
|
-
.find { |f| File.directory?("#{f}/data/#{target}") }.tap do |d|
|
8
|
-
abort "No valid data directory, exit..." if d.nil?
|
9
|
-
|
10
|
-
Dir.chdir(d)
|
11
|
-
end
|
12
|
-
end
|
4
|
+
REQUIRED_DIR='journals'
|
13
5
|
|
14
6
|
require 'json'
|
15
7
|
require 'optparse'
|
16
8
|
require 'luca_book'
|
9
|
+
require 'luca_cmd'
|
17
10
|
|
18
11
|
class LucaCmd
|
19
12
|
class Journal < LucaCmd
|
@@ -135,12 +128,12 @@ class LucaCmd
|
|
135
128
|
start = today.prev_month(count - 1)
|
136
129
|
[start.year, start.month, today.year, today.month]
|
137
130
|
else
|
138
|
-
start_year = if today.month >= LucaSupport::
|
131
|
+
start_year = if today.month >= LucaSupport::CONST.config['fy_start'].to_i
|
139
132
|
today.year
|
140
133
|
else
|
141
134
|
today.year - 1
|
142
135
|
end
|
143
|
-
[start_year, LucaSupport::
|
136
|
+
[start_year, LucaSupport::CONST.config['fy_start'], start_year + 1, LucaSupport::CONST.config['fy_start'].to_i - 1]
|
144
137
|
end
|
145
138
|
end
|
146
139
|
|
@@ -177,7 +170,7 @@ def new_pj(args = nil, params = {})
|
|
177
170
|
LucaBook::Setup.create_project params['country'], args[0]
|
178
171
|
end
|
179
172
|
|
180
|
-
LucaRecord::Base.valid_project?
|
173
|
+
#LucaRecord::Base.valid_project?
|
181
174
|
cmd = ARGV.shift
|
182
175
|
params = {}
|
183
176
|
|
@@ -191,7 +184,9 @@ when /journals?/, 'j'
|
|
191
184
|
opt.on('-c', '--config VAL', 'import definition'){ |v| params['config'] = v }
|
192
185
|
opt.on('-j', '--json', 'import via json format'){ |_v| params['json'] = true }
|
193
186
|
args = opt.parse!(ARGV)
|
194
|
-
LucaCmd
|
187
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
188
|
+
LucaCmd::Journal.import(args, params)
|
189
|
+
end
|
195
190
|
end
|
196
191
|
when 'list'
|
197
192
|
params[:recursive] = false
|
@@ -208,7 +203,9 @@ when /journals?/, 'j'
|
|
208
203
|
opt.on('--pdf', 'output journals PDF') { |_v| params['render'] = :pdf }
|
209
204
|
opt.on_tail('List records. If you specify code and/or month, search on each criteria.')
|
210
205
|
args = opt.parse!(ARGV)
|
211
|
-
LucaCmd
|
206
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
207
|
+
LucaCmd::Journal.list(args, params)
|
208
|
+
end
|
212
209
|
end
|
213
210
|
when 'set'
|
214
211
|
OptionParser.new do |opt|
|
@@ -218,7 +215,9 @@ when /journals?/, 'j'
|
|
218
215
|
opt.on('--val VAL', 'header value') { |v| params[:value] = v }
|
219
216
|
opt.on_tail('set header to journals on specified code.')
|
220
217
|
args = opt.parse!(ARGV)
|
221
|
-
LucaCmd
|
218
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
219
|
+
LucaCmd::Journal.add_header(args, params)
|
220
|
+
end
|
222
221
|
end
|
223
222
|
when 'stats'
|
224
223
|
params[:recursive] = false
|
@@ -231,7 +230,9 @@ when /journals?/, 'j'
|
|
231
230
|
opt.on('--explore', 'explore table in nushell') { |_v| params[:output] = 'explore' }
|
232
231
|
opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
|
233
232
|
args = opt.parse!(ARGV)
|
234
|
-
LucaCmd
|
233
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
234
|
+
LucaCmd::Journal.stats(args, params)
|
235
|
+
end
|
235
236
|
end
|
236
237
|
else
|
237
238
|
puts 'Proper subcommand needed.'
|
@@ -259,7 +260,9 @@ when /reports?/, 'r'
|
|
259
260
|
opt.on('-o VAL', '--output VAL', 'specify file name') { |v| params[:output] = v }
|
260
261
|
opt.on('--lastyear', 'report last Financial Year') { |_v| params[:lastyear] = true }
|
261
262
|
args = opt.parse!(ARGV)
|
262
|
-
LucaCmd
|
263
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
264
|
+
LucaCmd::Report.xbrl(args, params)
|
265
|
+
end
|
263
266
|
end
|
264
267
|
when 'bs'
|
265
268
|
OptionParser.new do |opt|
|
@@ -270,7 +273,9 @@ when /reports?/, 'r'
|
|
270
273
|
opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
|
271
274
|
opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
|
272
275
|
args = opt.parse!(ARGV)
|
273
|
-
LucaCmd
|
276
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
277
|
+
LucaCmd::Report.balancesheet(args, params)
|
278
|
+
end
|
274
279
|
end
|
275
280
|
when 'pl'
|
276
281
|
OptionParser.new do |opt|
|
@@ -281,7 +286,9 @@ when /reports?/, 'r'
|
|
281
286
|
opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
|
282
287
|
opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
|
283
288
|
args = opt.parse!(ARGV)
|
284
|
-
LucaCmd
|
289
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
290
|
+
LucaCmd::Report.profitloss(args, params)
|
291
|
+
end
|
285
292
|
end
|
286
293
|
when 'mail'
|
287
294
|
OptionParser.new do |opt|
|
@@ -290,7 +297,9 @@ when /reports?/, 'r'
|
|
290
297
|
opt.on('--fy', 'adjust start date to Financial Year') { |_v| params[:financialyear] = true }
|
291
298
|
opt.on('-n VAL', 'report count') { |v| params[:n] = v.to_i }
|
292
299
|
args = opt.parse!(ARGV)
|
293
|
-
LucaCmd
|
300
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
301
|
+
LucaCmd::Report.report_mail(args, params)
|
302
|
+
end
|
294
303
|
end
|
295
304
|
else
|
296
305
|
puts 'Proper subcommand needed.'
|
@@ -309,15 +318,22 @@ when /balance/
|
|
309
318
|
OptionParser.new do |opt|
|
310
319
|
opt.banner = 'Usage: luca-book balance update YYYY [M]'
|
311
320
|
args = opt.parse!(ARGV)
|
312
|
-
LucaCmd
|
321
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
322
|
+
LucaCmd::Dict.update_balance(args, params)
|
323
|
+
end
|
313
324
|
end
|
314
325
|
when 'export'
|
315
326
|
OptionParser.new do |opt|
|
316
327
|
opt.banner = 'Usage: luca-book balance export YYYY M d'
|
317
328
|
args = opt.parse!(ARGV)
|
318
|
-
LucaCmd
|
329
|
+
LucaCmd.check_dir(REQUIRED_DIR) do
|
330
|
+
LucaCmd::Dict.export_balance(args, params)
|
331
|
+
end
|
319
332
|
end
|
320
333
|
end
|
334
|
+
when 'version'
|
335
|
+
puts "luca-book: version #{LucaBook::VERSION}"
|
336
|
+
exit 0
|
321
337
|
else
|
322
338
|
puts 'Proper subcommand needed.'
|
323
339
|
puts
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'luca_book/util'
|
4
|
-
require 'luca_support/
|
4
|
+
require 'luca_support/const'
|
5
5
|
|
6
6
|
module LucaBook
|
7
7
|
module Accumulator
|
@@ -38,7 +38,7 @@ module LucaBook
|
|
38
38
|
res['10'] = sum_matched(report, /^[12][0-9A-Z]{2,}/)
|
39
39
|
jp_4v = sum_matched(report, /^[4][V]{2,}/) # deferred assets for JP GAAP
|
40
40
|
res['30'] = sum_matched(report, /^[34][0-9A-Z]{2,}/) - jp_4v
|
41
|
-
res['4V'] = jp_4v if LucaSupport::
|
41
|
+
res['4V'] = jp_4v if LucaSupport::CONST.config['country'] == 'jp'
|
42
42
|
res['50'] = sum_matched(report, /^[56][0-9A-Z]{2,}/)
|
43
43
|
res['70'] = sum_matched(report, /^[78][0-9A-Z]{2,}/)
|
44
44
|
res['91'] = sum_matched(report, /^91[0-9A-Z]{1,}/)
|
data/lib/luca_book/dict.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'luca_support/code'
|
4
|
-
require 'luca_support/
|
4
|
+
require 'luca_support/const'
|
5
5
|
require 'luca_support/range'
|
6
6
|
require 'luca_record/dict'
|
7
7
|
require 'luca_record/io'
|
@@ -102,9 +102,9 @@ module LucaBook
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def self.latest_balance_path(date)
|
105
|
-
start_year = date.month >= LucaSupport::
|
106
|
-
latest = Date.new(start_year, LucaSupport::
|
107
|
-
dict_dir = Pathname(LucaSupport::
|
105
|
+
start_year = date.month >= LucaSupport::CONST.config['fy_start'] ? date.year : date.year - 1
|
106
|
+
latest = Date.new(start_year, LucaSupport::CONST.config['fy_start'], 1).prev_month
|
107
|
+
dict_dir = Pathname(LucaSupport::CONST.pjdir) / 'data' / 'balance'
|
108
108
|
fileglob = %Q(start-#{latest.year}-#{format("%02d", latest.month)}-*)
|
109
109
|
path = Dir.glob(fileglob, base: dict_dir)[0] || 'start.tsv'
|
110
110
|
dict_dir / path
|
@@ -115,8 +115,8 @@ module LucaBook
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def self.generate_balance(year, month = nil)
|
118
|
-
start_date = Date.new((year.to_i - 1), LucaSupport::
|
119
|
-
month ||= LucaSupport::
|
118
|
+
start_date = Date.new((year.to_i - 1), LucaSupport::CONST.config['fy_start'], 1)
|
119
|
+
month ||= LucaSupport::CONST.config['fy_start'] - 1
|
120
120
|
end_date = Date.new(year.to_i, month, -1)
|
121
121
|
labels = load('base.tsv')
|
122
122
|
bs = load_balance(start_date, end_date)
|
@@ -133,7 +133,7 @@ module LucaBook
|
|
133
133
|
f << [code, labels.dig(code, :label), LucaSupport::Code.readable(balance)]
|
134
134
|
end
|
135
135
|
end
|
136
|
-
dict_dir = Pathname(LucaSupport::
|
136
|
+
dict_dir = Pathname(LucaSupport::CONST.pjdir) / 'data' / 'balance'
|
137
137
|
filepath = dict_dir / "start-#{end_date.to_s}.tsv"
|
138
138
|
|
139
139
|
File.open(filepath, 'w') { |f| f.write csv }
|
data/lib/luca_book/import.rb
CHANGED
@@ -7,7 +7,7 @@ require 'luca_support'
|
|
7
7
|
require 'luca_record'
|
8
8
|
|
9
9
|
begin
|
10
|
-
require "luca_book/import_#{LucaSupport::
|
10
|
+
require "luca_book/import_#{LucaSupport::CONST.config['country']}"
|
11
11
|
rescue LoadError => e
|
12
12
|
e.message
|
13
13
|
end
|
@@ -90,6 +90,8 @@ module LucaBook
|
|
90
90
|
default_label = debit ? @config[:default_debit] : @config[:default_credit]
|
91
91
|
code, options = search_code(row[@config[:label]], default_label, amount)
|
92
92
|
counter_code = @code_map.dig(@config[:counter_label])
|
93
|
+
raise "No valid counter code found for label: #{@config[:counter_label] || 'No label specified'}" if counter_code.nil?
|
94
|
+
|
93
95
|
if options
|
94
96
|
x_customer = options[:'x-customer'] if options[:'x-customer']
|
95
97
|
data, data_c = tax_extension(code, counter_code, amount, options) if respond_to? :tax_extension
|
data/lib/luca_book/setup.rb
CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
|
|
6
6
|
module LucaBook
|
7
7
|
class Setup
|
8
8
|
# create project skeleton under specified directory
|
9
|
-
def self.create_project(country = nil, dir = LucaSupport::
|
9
|
+
def self.create_project(country = nil, dir = LucaSupport::CONST.pjdir)
|
10
10
|
FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
|
11
11
|
Dir.chdir(dir) do
|
12
12
|
%w[data/journals data/balance dict].each do |subdir|
|
data/lib/luca_book/state.rb
CHANGED
@@ -116,7 +116,7 @@ module LucaBook
|
|
116
116
|
|
117
117
|
# TODO: pl/bs may not be immutable
|
118
118
|
def report_mail(level = 3)
|
119
|
-
@company =
|
119
|
+
@company = LucaSupport::CONST.config.dig('company', 'name')
|
120
120
|
{}.tap do |res|
|
121
121
|
pl(level).reverse.each do |month|
|
122
122
|
month.each do |k, v|
|
@@ -130,10 +130,10 @@ module LucaBook
|
|
130
130
|
@bs = bs
|
131
131
|
|
132
132
|
mail = Mail.new
|
133
|
-
mail.to =
|
133
|
+
mail.to = LucaSupport::CONST.config.dig('mail', 'preview') || LucaSupport.CONST.config.dig('mail', 'from')
|
134
134
|
mail.subject = 'Financial Report available'
|
135
135
|
mail.html_part = Mail::Part.new(body: render_erb(search_template('monthly-report.html.erb')), content_type: 'text/html; charset=UTF-8')
|
136
|
-
LucaSupport::Mail.new(mail,
|
136
|
+
LucaSupport::Mail.new(mail, LucaSupport.CONST.pjdir).deliver
|
137
137
|
end
|
138
138
|
|
139
139
|
def bs(level = 3, legal: false)
|
@@ -217,13 +217,13 @@ module LucaBook
|
|
217
217
|
h[k] = BigDecimal(v[:balance].to_s) if v[:balance]
|
218
218
|
h[k] ||= BigDecimal('0') if k.length == 2
|
219
219
|
end
|
220
|
-
if month ==
|
220
|
+
if month == LucaSupport::CONST.config['fy_start'].to_i
|
221
221
|
return recursive ? total_subaccount(base) : base
|
222
222
|
end
|
223
223
|
|
224
224
|
pre_last = start_date.prev_month
|
225
|
-
year -= 1 if month <=
|
226
|
-
pre = accumulate_term(year,
|
225
|
+
year -= 1 if month <= LucaSupport::CONST.config['fy_start'].to_i
|
226
|
+
pre = accumulate_term(year, LucaSupport::CONST.config['fy_start'], pre_last.year, pre_last.month)
|
227
227
|
total = {}.tap do |h|
|
228
228
|
(pre.keys + base.keys).uniq.each do |k|
|
229
229
|
h[k] = (base[k] || BigDecimal('0')) + (pre[k] || BigDecimal('0'))
|
@@ -235,8 +235,8 @@ module LucaBook
|
|
235
235
|
def render_xbrl(filename = nil)
|
236
236
|
set_bs(3, legal: true)
|
237
237
|
set_pl(3)
|
238
|
-
country_suffix =
|
239
|
-
@company = CGI.escapeHTML(
|
238
|
+
country_suffix = LucaSupport::CONST.config['country'] || 'en'
|
239
|
+
@company = CGI.escapeHTML(LucaSupport::CONST.config.dig('company', 'name'))
|
240
240
|
@balance_sheet_selected = 'true'
|
241
241
|
@pl_selected = 'true'
|
242
242
|
@capital_change_selected = 'true'
|
@@ -263,11 +263,11 @@ module LucaBook
|
|
263
263
|
return nil if readable(amount).zero? && prior_amount.nil?
|
264
264
|
|
265
265
|
prior = if prior_amount.nil?
|
266
|
-
/^[9]/.match(code) ? "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(
|
266
|
+
/^[9]/.match(code) ? "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(LucaSupport::CONST.config['country'])}\" contextRef=\"Prior1YearNonConsolidatedInstant\">0</#{tag}>\n" : ''
|
267
267
|
else
|
268
|
-
"<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(
|
268
|
+
"<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(LucaSupport::CONST.config['country'])}\" contextRef=\"Prior1YearNonConsolidatedInstant\">#{readable(prior_amount)}</#{tag}>\n"
|
269
269
|
end
|
270
|
-
current = "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(
|
270
|
+
current = "<#{tag} decimals=\"0\" unitRef=\"#{Code.currency_code(LucaSupport::CONST.config['country'])}\" contextRef=\"#{context}\">#{readable(amount)}</#{tag}>"
|
271
271
|
|
272
272
|
prior + current
|
273
273
|
end
|
@@ -318,9 +318,9 @@ module LucaBook
|
|
318
318
|
end
|
319
319
|
|
320
320
|
def legal_items
|
321
|
-
return [] unless
|
321
|
+
return [] unless LucaSupport::CONST.config['country']
|
322
322
|
|
323
|
-
case
|
323
|
+
case LucaSupport::CONST.config['country']
|
324
324
|
when 'jp'
|
325
325
|
['31', '32', '33', '91', '911', '912', '913', '9131', '9132', '914', '9141', '9142', '915', '916', '92', '93']
|
326
326
|
end
|
@@ -374,7 +374,7 @@ module LucaBook
|
|
374
374
|
tag = ex_dict.dig("#{code}:#{code}")&.dig(:xbrl_id)
|
375
375
|
changes << [tag, readable(diff)] if tag
|
376
376
|
end
|
377
|
-
currency = %Q(unitRef="#{Code.currency_code(
|
377
|
+
currency = %Q(unitRef="#{Code.currency_code(LucaSupport::CONST.config['country'])}")
|
378
378
|
context = 'contextRef="CurrentYearNonConsolidatedDuration"'
|
379
379
|
changes.map { |tag, amount| %Q(<#{tag} decimals="0" #{currency} #{context}>#{amount}</#{tag}>) }
|
380
380
|
end
|
data/lib/luca_book/util.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'bigdecimal'
|
4
|
-
require 'luca_support/
|
4
|
+
require 'luca_support/const'
|
5
5
|
|
6
6
|
module LucaBook
|
7
7
|
module Util
|
@@ -45,7 +45,7 @@ module LucaBook
|
|
45
45
|
|
46
46
|
def current_fy(date = nil, to: nil)
|
47
47
|
date ||= Date.today
|
48
|
-
start_month = LucaSupport::
|
48
|
+
start_month = LucaSupport::CONST.config['fy_start']
|
49
49
|
start_year = date.month >= start_month ? date.year : date.year - 1
|
50
50
|
@start_date = Date.new(start_year, start_month, 1)
|
51
51
|
@end_date = Date.new(start_year + 1, start_month - 1, -1)
|
data/lib/luca_book/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lucabook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chuma Takahiro
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lucarecord
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.7.0
|
20
20
|
type: :runtime
|
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: 0.
|
26
|
+
version: 0.7.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,7 +108,7 @@ licenses:
|
|
108
108
|
metadata:
|
109
109
|
homepage_uri: https://github.com/chumaltd/luca/tree/master/lucabook
|
110
110
|
source_code_uri: https://github.com/chumaltd/luca/tree/master/lucabook
|
111
|
-
post_install_message:
|
111
|
+
post_install_message:
|
112
112
|
rdoc_options: []
|
113
113
|
require_paths:
|
114
114
|
- lib
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
126
|
rubygems_version: 3.4.10
|
127
|
-
signing_key:
|
127
|
+
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: Book keep
|
130
130
|
test_files: []
|