class LucaBook::Setup
Public Class Methods
create_project(country = nil, dir = LucaSupport::PJDIR)
click to toggle source
create project skeleton under specified directory
# File lib/luca_book/setup.rb, line 9 def self.create_project(country = nil, dir = LucaSupport::PJDIR) FileUtils.mkdir_p(dir) unless Dir.exist?(dir) Dir.chdir(dir) do %w[data/journals data/balance dict].each do |subdir| FileUtils.mkdir_p(subdir) unless Dir.exist?(subdir) end dict = if File.exist?("#{__dir__}/templates/dict-#{country}.tsv") "dict-#{country}.tsv" else 'dict-en.tsv' end FileUtils.cp("#{__dir__}/templates/#{dict}", 'dict/base.tsv') unless File.exist?('dict/base.tsv') FileUtils.cp("#{__dir__}/templates/config.yml", 'config.yml') unless File.exist?('config.yml') prepare_starttsv(dict) unless File.exist? 'data/balance/start.tsv' end end
prepare_starttsv(dict)
click to toggle source
Generate initial balance template. Codes are same as base dictionary. The previous month of start date is better for _date.
# File lib/luca_book/setup.rb, line 30 def self.prepare_starttsv(dict) CSV.open('data/balance/start.tsv', 'w', col_sep: "\t", encoding: 'UTF-8') do |csv| csv << ['code', 'label', 'balance'] csv << ['_date', '2020-1-1'] CSV.open("#{__dir__}/templates/#{dict}", 'r', col_sep: "\t", encoding: 'UTF-8').each do |row| csv << row if /^[1-9]/.match(row[0]) end end end