class RepoMgr::Config

handles repo-mgr configuration

Attributes

cfg[R]
cfg_dir[R]

Public Class Methods

new() click to toggle source
# File lib/repo_mgr/config.rb, line 13
def initialize
  @cfg_dir = "#{ENV['HOME']}/.repo-mgr"
  FileUtils.mkdir_p @cfg_dir

  @cfg_file = "#{@cfg_dir}/repo-mgr.yml"
  unless File.exist? @cfg_file
    File.write @cfg_file, { repos: {}, packages: {} }.to_yaml
  end

  @cfg = YAML.load_file @cfg_file
end

Public Instance Methods

add_pkg(repo, path) click to toggle source
# File lib/repo_mgr/config.rb, line 50
def add_pkg(repo, path)
  if @cfg[:repos][repo].nil?
    Tools.error "unable to add packages to #{repo} - repo does not exist"
  end

  @cfg[:packages] ||= {}
  @cfg[:packages][repo] ||= []
  pkg = File.basename path

  if @cfg[:packages][repo].include?(pkg)
    Tools.error "you already have #{pkg} in your #{repo} repo"
  end

  @cfg[:packages][repo] << pkg

  save
end
remove_pkg(repo, path) click to toggle source
# File lib/repo_mgr/config.rb, line 68
def remove_pkg(repo, path)
  if @cfg[:repos][repo].nil?
    Tools.error "unable to remove packages from #{repo} "\
      '- repo does not exist'
  end

  @cfg[:packages] ||= {}
  @cfg[:packages][repo] ||= []
  pkg = File.basename path
  @cfg[:packages][repo].delete pkg

  save
end
save() click to toggle source
# File lib/repo_mgr/config.rb, line 25
def save
  File.write @cfg_file, @cfg.to_yaml
end
upsert_repo(options) click to toggle source
# File lib/repo_mgr/config.rb, line 29
def upsert_repo(options)
  name = options[:name]
  type = options[:type]

  if @cfg[:repos][name] && @cfg[:repos][name][:type] != type
    Tools.error "unable to change type for #{name} repository"
  end

  @cfg[:repos][name] = {
    type: type,
    path: options[:path],
    keyid: options[:keyid]
  }

  if options[:publisher]
    @cfg[:repos][name][:publisher] = options[:publisher]
  end

  save
end