Class: Omnibus::Publisher
- Inherits:
-
Object
- Object
- Omnibus::Publisher
- Includes:
- Digestable, Logging
- Defined in:
- lib/omnibus/publisher.rb
Direct Known Subclasses
Class Method Summary collapse
-
.publish(pattern, options = {}, &block) ⇒ Object
Shortcut class method for creating a new instance of this class and executing the publishing sequence.
Instance Method Summary collapse
-
#initialize(pattern, options = {}) ⇒ Publisher
constructor
Create a new publisher from the given pattern.
-
#packages ⇒ Array<String>
The list of packages that match the pattern in the initializer.
-
#publish(&_block) ⇒ Array<String>
abstract
The list of uploaded packages.
Methods included from Logging
Methods included from Digestable
#digest, #digest_directory, included
Constructor Details
#initialize(pattern, options = {}) ⇒ Publisher
Create a new publisher from the given pattern.
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/omnibus/publisher.rb', line 54 def initialize(pattern, = {}) @pattern = pattern @options = .dup if @options[:platform_mappings] log.info(log_key) do "Publishing will be performed using provided platform mappings." end end end |
Class Method Details
.publish(pattern, options = {}, &block) ⇒ Object
Shortcut class method for creating a new instance of this class and executing the publishing sequence.
28 29 30 |
# File 'lib/omnibus/publisher.rb', line 28 def publish(pattern, = {}, &block) new(pattern, ).publish(&block) end |
Instance Method Details
#packages ⇒ Array<String>
The list of packages that match the pattern in the initializer.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/omnibus/publisher.rb', line 70 def packages @packages ||= begin publish_packages = [] build_packages = FileSyncer.glob(@pattern).map { |path| Package.new(path) } if @options[:platform_mappings] # the platform map is a simple hash with publish to build platform mappings @options[:platform_mappings].each_pair do |build_platform, publish_platforms| # Splits `ubuntu-12.04-x86_64` into `ubuntu`, `12.04` and `x86_64` build_platform, build_platform_version, build_architecture = build_platform.split("-") # locate the package for the build platform packages = build_packages.select do |p| p.[:platform] == build_platform && p.[:platform_version] == build_platform_version && p.[:arch] == build_architecture end if packages.empty? log.warn(log_key) do "Could not locate a package for build platform #{build_platform}-#{build_platform_version}-#{build_architecture}. " \ "Publishing will be skipped for: #{publish_platforms.join(", ")}" end end publish_platforms.each do |publish_platform| publish_platform, publish_platform_version, publish_architecture = publish_platform.split("-") packages.each do |p| # create a copy of our package before mucking with its metadata publish_package = p.dup = p..dup.to_hash # override the platform, platform version and architecture in the metadata [:platform] = publish_platform [:platform_version] = publish_platform_version [:arch] = publish_architecture # Set the updated metadata on the package object publish_package. = Metadata.new(publish_package, ) publish_packages << publish_package end end end else publish_packages.concat(build_packages) end if publish_packages.empty? log.info(log_key) { "No packages found, skipping publish" } end publish_packages end end |
#publish(&_block) ⇒ Array<String>
This method is abstract.
Returns the list of uploaded packages.
136 137 138 |
# File 'lib/omnibus/publisher.rb', line 136 def publish(&_block) raise NotImplementedError end |