class Metanorma::Cli::TemplateRepo

Attributes

name[R]
overwrite[R]
source[R]
type[R]

Public Class Methods

add(name, source, options = {}) click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 23
def self.add(name, source, options = {})
  new(options.merge(name: name, source: source)).add
end
new(options = {}) click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 8
def initialize(options = {})
  @name = options.fetch(:name)
  @source = options.fetch(:source)
  @type = options.fetch(:type, "custom")
  @overwrite = options.fetch(:overwrite, false)
end

Public Instance Methods

add() click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 15
def add
  create_template_config
  add_new_template(name, source, type)
  write_to_template_config(templates)

  templates[:templates]
end

Private Instance Methods

add_new_template(name, source, type) click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 54
def add_new_template(name, source, type)
  names = templates[:templates].map { |template| template[:name].to_s }

  if names.include?(name.to_s) && overwrite == false
    raise Errors::DuplicateTemplateError.new("Duplicate metanorma template")
  end

  templates[:templates].push({ name: name, source: source, type: type })
end
create_template_config() click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 39
def create_template_config
  unless template_config_file.exist?
    unless template_config_file.dirname.exist?
      FileUtils.mkdir_p(template_config_file.dirname)
    end

    write_to_template_config(templates: [])
  end
end
template_config_file() click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 35
def template_config_file
  @template_config_file ||= Cli.config_path(true)
end
templates() click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 31
def templates
  @templates ||= YAML.load_file(template_config_file).symbolize_all_keys
end
write_to_template_config(templates) click to toggle source
# File lib/metanorma/cli/template_repo.rb, line 49
def write_to_template_config(templates)
  shash = templates.stringify_all_keys
  File.write(template_config_file, shash.to_yaml)
end