Module: Pkg::Repo
- Defined in:
- lib/packaging/repo.rb
Class Method Summary collapse
- .argument_required?(argument_name, repo_command) ⇒ Boolean
- .create_all_repo_archives(project, versioning) ⇒ Object
- .create_signed_repo_archive(path_to_repo, name_of_archive, versioning) ⇒ Object
- .directories_that_contain_packages(artifact_directory, pkg_ext) ⇒ Object
- .populate_repo_directory(artifact_parent_directory) ⇒ Object
- .update_repo(remote_host, command, options = {}) ⇒ Object
Class Method Details
.argument_required?(argument_name, repo_command) ⇒ Boolean
55 56 57 |
# File 'lib/packaging/repo.rb', line 55 def argument_required?(argument_name, repo_command) repo_command.include?("__#{argument_name.upcase}__") end |
.create_all_repo_archives(project, versioning) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/packaging/repo.rb', line 28 def create_all_repo_archives(project, versioning) platforms = Pkg::Config.platform_repos platforms.each do |platform| archive_name = "#{project}-#{platform['name']}" create_signed_repo_archive(platform['repo_location'], archive_name, versioning) end end |
.create_signed_repo_archive(path_to_repo, name_of_archive, versioning) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/packaging/repo.rb', line 4 def create_signed_repo_archive(path_to_repo, name_of_archive, versioning) tar = Pkg::Util::Tool.check_tool('tar') Dir.chdir("pkg") do if versioning == 'ref' local_target = File.join(Pkg::Config.project, Pkg::Config.ref) elsif versioning == 'version' local_target = File.join(Pkg::Config.project, Pkg::Util::Version.dot_version) end Dir.chdir(local_target) do if Pkg::Util::File.empty_dir?(path_to_repo) if ENV['FAIL_ON_MISSING_TARGET'] == "true" raise "ERROR: missing packages under #{path_to_repo}" else warn "Skipping #{name_of_archive} because #{path_to_repo} has no files" end else puts "Archiving #{path_to_repo} as #{name_of_archive}" stdout, _, _ = Pkg::Util::Execution.capture3("#{tar} --owner=0 --group=0 --create --gzip --file #{File.join('repos', "#{name_of_archive}.tar.gz")} #{path_to_repo}") stdout end end end end |
.directories_that_contain_packages(artifact_directory, pkg_ext) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/packaging/repo.rb', line 36 def directories_that_contain_packages(artifact_directory, pkg_ext) cmd = "[ -d #{artifact_directory} ] || exit 1 ; " cmd << "pushd #{artifact_directory} > /dev/null && " cmd << "find . -name '*.#{pkg_ext}' -print0 | xargs --no-run-if-empty -0 -I {} dirname {} " stdout, stderr = Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.distribution_server, cmd, true) return stdout.split rescue => e fail "Could not retrieve directories that contain #{pkg_ext} packages in #{Pkg::Config.distribution_server}:#{artifact_directory}" end |
.populate_repo_directory(artifact_parent_directory) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/packaging/repo.rb', line 46 def populate_repo_directory(artifact_parent_directory) cmd = "[ -d #{artifact_parent_directory}/artifacts ] || exit 1 ; " cmd << "pushd #{artifact_parent_directory} > /dev/null && " cmd << 'rsync --archive --verbose --one-file-system --ignore-existing artifacts/ repos/ ' Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.distribution_server, cmd) rescue => e fail "Could not populate repos directory in #{Pkg::Config.distribution_server}:#{artifact_parent_directory}" end |
.update_repo(remote_host, command, options = {}) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/packaging/repo.rb', line 59 def update_repo(remote_host, command, = {}) = "Missing required argument '%s', update your build_defaults?" [:repo_name, :repo_path, :repo_host, :repo_url].each do |option| fail % option.to_s if argument_required?(option.to_s, command) && ![option] end whitelist = { __REPO_NAME__: [:repo_name], __REPO_PATH__: [:repo_path], __REPO_HOST__: [:repo_host], __REPO_URL__: [:repo_url], __APT_PLATFORMS__: Pkg::Config.apt_releases.join(' '), __GPG_KEY__: Pkg::Util::Gpg.key } Pkg::Util::Net.remote_ssh_cmd(remote_host, Pkg::Util::Misc.search_and_replace(command, whitelist)) end |