Class: Fastlane::Helper::GetNewBuildNumberHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane/plugin/get_new_build_number/helper/get_new_build_number_helper.rb

Class Method Summary collapse

Class Method Details

.get_google_play_build_number(track:, package_name:, json_key:) ⇒ Object

Returns the latest build number (“version code”, in Android terminology) for the given Google Play track.



117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/fastlane/plugin/get_new_build_number/helper/get_new_build_number_helper.rb', line 117

def self.get_google_play_build_number(track:, package_name:, json_key:)
  codes = Fastlane::Actions::GooglePlayTrackVersionCodesAction.run(
    track: track,
    package_name: package_name,
    json_key: json_key
  )

  return codes.max
rescue StandardError
  UI.message("No build numbers found for track #{track} (Google Play Store)")
  return 0
end

.get_latest_build_number(bundle_identifier: nil, package_name: nil, google_play_json_key_path: nil, app_store_initial_build_number: nil, firebase_json_key_path: nil, firebase_app_ios: nil, firebase_app_android: nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
# File 'lib/fastlane/plugin/get_new_build_number/helper/get_new_build_number_helper.rb', line 8

def self.get_latest_build_number(
  bundle_identifier: nil,
  package_name: nil,
  google_play_json_key_path: nil,
  app_store_initial_build_number: nil,
  firebase_json_key_path: nil,
  firebase_app_ios: nil,
  firebase_app_android: nil
)
  if bundle_identifier.nil? && package_name.nil?
    UI.error("Both bundle_identifier and package_name are nil")
    return nil
  end

  if package_name.nil? && google_play_json_key_path.nil?
    UI.error("Both package_name and google_play_json_key_path are nil")
    return nil
  end

  app_store_build_number = 0
  unless bundle_identifier.nil?
    app_store_build_number = Fastlane::Actions::AppStoreBuildNumberAction.run(
      app_identifier: bundle_identifier,
      platform: "IOS",
      initial_build_number: app_store_initial_build_number || 1
    )

    UI.message("Latest build number (App Store): #{app_store_build_number}")
  end

  google_play_build_number_prod = get_google_play_build_number(
    track: "production",
    package_name: package_name,
    json_key: google_play_json_key_path
  )

  google_play_build_number_beta = get_google_play_build_number(
    track: "beta",
    package_name: package_name,
    json_key: google_play_json_key_path
  )

  google_play_build_number_alpha = get_google_play_build_number(
    track: "alpha",
    package_name: package_name,
    json_key: google_play_json_key_path
  )

  google_play_build_number_internal = get_google_play_build_number(
    track: "internal",
    package_name: package_name,
    json_key: google_play_json_key_path
  )

  google_play_build_number = [
    google_play_build_number_prod,
    google_play_build_number_beta,
    google_play_build_number_alpha,
    google_play_build_number_internal
  ].max

  UI.message("Latest build number (Google Play Store): #{google_play_build_number}")

  fad_build_number_ios = 0
  begin
    unless firebase_app_ios.nil?
      response = Fastlane::Actions::FirebaseAppDistributionGetLatestReleaseAction.run(
        app: firebase_app_ios,
        service_credentials_file: firebase_json_key_path
      )

      unless response.nil?
        fad_build_number_ios = response[:buildVersion].to_i
      end

      UI.message("Latest build (Firebase App Distribution iOS): #{fad_build_number_ios}")
    end
  rescue StandardError => e
    UI.error("Error getting latest build number (Firebase App Distribution iOS): #{e.message}")
  end

  fad_build_number_android = 0
  begin
    unless firebase_app_android.nil?
      response = Fastlane::Actions::FirebaseAppDistributionGetLatestReleaseAction.run(
        app: firebase_app_android,
        service_credentials_file: firebase_json_key_path
      )

      unless response.nil?
        fad_build_number_android = response[:buildVersion].to_i
      end

      UI.message("Latest build (Firebase App Distribution Android): #{fad_build_number_android}")
    end
  rescue StandardError => e
    UI.error("Error getting latest build number (Firebase App Distribution Android): #{e.message}")
  end

  return [
    app_store_build_number,
    google_play_build_number,
    fad_build_number_ios,
    fad_build_number_android
  ].max
end