mirror of
https://github.com/bitwarden/android.git
synced 2025-12-10 00:06:22 -06:00
try printing version codes again
This commit is contained in:
parent
26c19c3737
commit
79eb9a6098
@ -1,15 +1,9 @@
|
||||
# Patch Description:
|
||||
# Fixes issue where Fastlane 'Supply' doesn't recognize previous builds
|
||||
# when promoting to another track.
|
||||
#
|
||||
# Source: https://github.com/artsy/eigen/pull/10262
|
||||
# Author: Brian Beckerle (@brainbicycle)
|
||||
#
|
||||
|
||||
module Supply
|
||||
class Uploader
|
||||
# Alias the original promote_track method so we can override it
|
||||
alias_method :original_promote_track, :promote_track
|
||||
|
||||
# Override promote_track to use custom logic if skip_release_verification is set
|
||||
def promote_track
|
||||
if Supply.config[:skip_release_verification]
|
||||
custom_promote_track
|
||||
@ -18,20 +12,44 @@ module Supply
|
||||
end
|
||||
end
|
||||
|
||||
# Utility method: Print all version codes for the given version name
|
||||
def print_version_codes_for_name
|
||||
version_name = Supply.config[:version_name]
|
||||
return if version_name.nil? || version_name.empty?
|
||||
|
||||
all_tracks = client.tracks(nil) # nil fetches all tracks
|
||||
all_tracks.each do |track|
|
||||
track.releases.each do |release|
|
||||
if release.name == version_name
|
||||
UI.message("Track '#{track.track}' has release '#{version_name}' with version codes: #{release.version_codes.join(', ')}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Custom promotion logic for handling track promotion
|
||||
def custom_promote_track
|
||||
UI.message("Using custom promotion logic")
|
||||
|
||||
# Always print version codes for the supplied version name (if provided)
|
||||
print_version_codes_for_name
|
||||
|
||||
# Fetch the source track to promote from
|
||||
track_from = client.tracks(Supply.config[:track]).first
|
||||
unless track_from
|
||||
UI.user_error!("Cannot promote from track '#{Supply.config[:track]}' - track doesn't exist")
|
||||
end
|
||||
|
||||
# Gather all releases from the source track and log their version codes
|
||||
releases = track_from.releases
|
||||
releases = releases.select do |release|
|
||||
UI.message("Available version codes in track '#{Supply.config[:track]}': #{release.version_codes.join(', ')} for release '#{release.name}'")
|
||||
UI.message("Available version codes in track '#{Supply.config[:track]}': #{release.version_codes.join(', ')} for release '#{release.name}'")
|
||||
end
|
||||
|
||||
|
||||
# Get the version code to promote
|
||||
version_code = Supply.config[:version_code].to_s
|
||||
|
||||
# If release verification is not skipped, filter releases by version code or status
|
||||
if !Supply.config[:skip_release_verification]
|
||||
if version_code != ""
|
||||
releases = releases.select do |release|
|
||||
@ -43,6 +61,7 @@ module Supply
|
||||
end
|
||||
end
|
||||
|
||||
# Error handling for missing or ambiguous releases
|
||||
if releases.size == 0
|
||||
if version_code != ""
|
||||
UI.user_error!("Cannot find release with version code '#{version_code}' to promote in track '#{Supply.config[:track]}'")
|
||||
@ -53,6 +72,7 @@ module Supply
|
||||
UI.user_error!("Track '#{Supply.config[:track]}' has more than one release - use :version_code to filter the release to promote")
|
||||
end
|
||||
else
|
||||
# If skipping verification, require version code and version name
|
||||
UI.message("Skipping release verification as per configuration.")
|
||||
if version_code == ""
|
||||
UI.user_error!("Must provide a version code when release verification is skipped.")
|
||||
@ -60,6 +80,7 @@ module Supply
|
||||
if Supply.config[:version_name].nil?
|
||||
UI.user_error!("To force promote a :version_code, it is mandatory to enter the :version_name")
|
||||
end
|
||||
# Create a new release object for forced promotion
|
||||
release = AndroidPublisher::TrackRelease.new(
|
||||
name: Supply.config[:version_name],
|
||||
version_codes: [version_code],
|
||||
@ -67,12 +88,16 @@ module Supply
|
||||
)
|
||||
end
|
||||
|
||||
# Select the release to promote if verification is not skipped
|
||||
release = releases.first unless Supply.config[:skip_release_verification]
|
||||
|
||||
# Fetch or create the destination track to promote to
|
||||
track_to = client.tracks(Supply.config[:track_promote_to]).first || AndroidPublisher::Track.new(
|
||||
track: Supply.config[:track_promote_to],
|
||||
releases: []
|
||||
)
|
||||
|
||||
# Set rollout fraction and release status for partial rollouts
|
||||
rollout = (Supply.config[:rollout] || 0).to_f
|
||||
if rollout > 0 && rollout < 1
|
||||
release.status = Supply::ReleaseStatus::IN_PROGRESS
|
||||
@ -82,11 +107,11 @@ module Supply
|
||||
release.user_fraction = nil
|
||||
end
|
||||
|
||||
# Log the promotion action
|
||||
UI.message("Promoting release with version: #{release.name} (#{release.version_codes.first})")
|
||||
|
||||
# Assign the release to the destination track
|
||||
if track_to
|
||||
# Its okay to set releases to an array containing the newest release
|
||||
# Google Play will keep previous releases there this release is a partial rollout
|
||||
track_to.releases = [release]
|
||||
else
|
||||
track_to = AndroidPublisher::Track.new(
|
||||
@ -95,6 +120,7 @@ module Supply
|
||||
)
|
||||
end
|
||||
|
||||
# Update the destination track with the new release
|
||||
client.update_track(Supply.config[:track_promote_to], track_to)
|
||||
UI.message("confirmed that update_track was reached: #{Supply.config[:track_promote_to]} #{release}")
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user