class S3Repo::Metadata

Metadata object, represents repo's DB file

Public Instance Methods

add_packages(paths) click to toggle source
# File lib/s3repo/metadata.rb, line 8
def add_packages(paths)
  @db_path = nil
  paths.each do |path|
    puts "Adding #{File.basename(path)} to repo.db"
    run("repo-add #{db_path} #{path}")
  end
  update!
end
packages() click to toggle source
# File lib/s3repo/metadata.rb, line 31
def packages
  return @packages if @packages
  cmd = "bsdtar tf #{db_path}"
  @packages = run(cmd).split.map { |x| x.split('/').first }.uniq
end
remove_packages(packages) click to toggle source
# File lib/s3repo/metadata.rb, line 17
def remove_packages(packages)
  @db_path = nil
  packages.each do |package|
    puts "Removing #{package} from repo.db"
    run("repo-remove #{db_path} #{package}")
  end
  update!
end
update!() click to toggle source
# File lib/s3repo/metadata.rb, line 26
def update!
  sign_db if @options[:sign_db]
  db_names.each { |x| client.upload_file(x, db_path) }
end

Private Instance Methods

db_names() click to toggle source
# File lib/s3repo/metadata.rb, line 43
def db_names
  @db_names ||= ['repo', repo_name].flat_map do |x|
    [x + '.db.tar.xz', x + '.db']
  end
end
db_path() click to toggle source
# File lib/s3repo/metadata.rb, line 62
def db_path
  @db_path ||= file_cache.download(db_names.first)
end
repo_name() click to toggle source
# File lib/s3repo/metadata.rb, line 39
def repo_name
  @options[:repo_name] || raise('No repo name given')
end
sig_names() click to toggle source
# File lib/s3repo/metadata.rb, line 49
def sig_names
  @sig_names ||= db_names.map { |x| x + '.sig' }
end
sign_db() click to toggle source
# File lib/s3repo/metadata.rb, line 57
def sign_db
  sig_path = signer.sign(db_path)
  sig_names.each { |x| client.upload_file(x, sig_path) }
end
signer() click to toggle source
# File lib/s3repo/metadata.rb, line 53
def signer
  @options[:signer] ||= Signer.new(@options)
end