41 lines
705 B
Ruby
41 lines
705 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Referator
|
|
class Config
|
|
attr_reader :workdir
|
|
|
|
def initialize(workdir)
|
|
self.workdir = workdir
|
|
end
|
|
|
|
def freeze
|
|
scripts.freeze
|
|
categories.freeze
|
|
repo.freeze
|
|
super
|
|
end
|
|
|
|
def scripts
|
|
@scripts ||= Scripts.new self
|
|
end
|
|
|
|
def categories
|
|
@categories ||= Categories.new self
|
|
end
|
|
|
|
def repo
|
|
@repo ||= Repo.new self
|
|
end
|
|
|
|
private
|
|
|
|
def workdir=(workdir)
|
|
workdir = Pathname.new(workdir).expand_path.freeze
|
|
raise 'Expected absolute path' unless workdir.absolute?
|
|
raise 'Expected existing directory' unless workdir.directory?
|
|
|
|
@workdir = workdir
|
|
end
|
|
end
|
|
end
|