Sha256: ee7fbbfdcd0609a5ab4a067c29fd5737e560bead1a556673cabf290a6b987233
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
require 'basiccache' module S3Repo ## # Repo object, represents an Arch repo inside an S3 bucket class Repo < Base def initialize(params = {}) super end def build_packages(paths) paths.each do |path| dir = File.dirname(path) puts "Building #{File.basename(dir)}" Dir.chdir(dir) { run 'makepkg --force --nodeps --clean' } end end def add_packages(paths) paths.each do |path| key = File.basename(path) next if include? key client.upload!(key, path) end metadata.add_packages(paths) end def packages package_cache.cache { parse_packages } end def include?(key) !packages.find { |x| x.key == key }.nil? end def serve(key) refresh = !key.match(/\.pkg\.tar\.xz$/) file_cache.serve(key, refresh) end private def metadata @metadata ||= Metadata.new(client: client, file_cache: file_cache) end def package_cache @package_cache ||= BasicCache::TimeCache.new lifetime: 600 end def parse_packages client.list_objects(bucket: bucket).contents.select do |x| x.key.match(/.*\.pkg\.tar\.xz$/) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
s3repo-0.1.3 | lib/s3repo/repo.rb |
s3repo-0.1.2 | lib/s3repo/repo.rb |