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