class WarpEngine::BuildsService
Answers what assets each platform builds and which ones the releases of a software have or lack.
Public Instance Methods
Source
# File app/services/warp_engine/builds_service.rb, line 8 def index platforms = WarpEngine::Platform.all.each_with_object({}) do |platform, hash| hash[platform.name] = { label: platform.label, kinds: platform.expected_kinds, required: platform.required_kinds, optional: platform.optional_kinds } end all_kinds = WarpEngine::ReleaseAsset::KINDS { platforms: platforms, allKinds: all_kinds } end
Returns a Hash: platforms maps each platform name to its label, expected kinds, required and optional kinds; allKinds lists every WarpEngine::ReleaseAsset kind.
Source
# File app/services/warp_engine/builds_service.rb, line 24 def show(name) software = WarpEngine::Software.kept.find_by!(name: name) platform = WarpEngine::Platform.find!(software.platform) expected = platform.expected_kinds releases = software.releases.includes(:release_assets).order(updated_at: :desc) release_data = releases.each_with_object({}) do |release, hash| actual = release.release_assets.map(&:kind) hash[release.version] = { actual: actual, missing: expected - actual - platform.optional_kinds } end { platform: software.platform, expected: expected, releases: release_data } end
Returns the asset state of the kept software name: its platform, the expected kinds, and releases mapping each version (most recently updated first) to its actual kinds and the missing ones (optional kinds excluded). Raises ActiveRecord::RecordNotFound for an unknown software and ArgumentError for an unknown platform.