Class: Spaceship::Tunes::BuildTrain
- Defined in:
- lib/spaceship/tunes/build_train.rb
Overview
Represents a build train of builds from iTunes Connect A build train is all builds for a given version number with different build numbers
Instance Attribute Summary collapse
-
#application ⇒ Spaceship::Tunes::Application
A reference to the application this train is for.
-
#builds ⇒ Array
readonly
An array of all builds that are inside this train (Spaceship::Tunes::Build).
-
#external_testing_enabled ⇒ Bool
readonly
Is external beta testing enabled for this train? Only one train can have enabled testing.
-
#internal_testing_enabled ⇒ Bool
readonly
Is internal beta testing enabled for this train? Only one train can have enabled testing.
-
#platform ⇒ String
readonly
Platform (e.g. “ios”).
-
#processing_builds ⇒ Array
readonly
An array of all builds that are inside this train (Spaceship::Tunes::Build) I never got this to work to properly try and debug this.
-
#version_string ⇒ String
readonly
The version number of this train.
Attributes inherited from Base
Class Method Summary collapse
- .all(application, app_id) ⇒ Object
-
.factory(attrs) ⇒ Object
Create a new object based on a hash.
Instance Method Summary collapse
-
#latest_build ⇒ Spaceship::Tunes::Build
The latest build for this train, sorted by upload time.
-
#setup ⇒ Object
Setup all the builds and processing builds.
- #update_testing_status!(new_value, testing_type, build = nil) ⇒ Object
Methods inherited from TunesBase
Methods inherited from Base
attr_accessor, attr_mapping, #attributes, attributes, #initialize, #inspect, mapping_module, method_missing, set_client, #to_s
Constructor Details
This class inherits a constructor from Spaceship::Base
Instance Attribute Details
#application ⇒ Spaceship::Tunes::Application
Returns A reference to the application this train is for.
8 9 10 |
# File 'lib/spaceship/tunes/build_train.rb', line 8 def application @application end |
#builds ⇒ Array (readonly)
Returns An array of all builds that are inside this train (Spaceship::Tunes::Build).
11 12 13 |
# File 'lib/spaceship/tunes/build_train.rb', line 11 def builds @builds end |
#external_testing_enabled ⇒ Bool (readonly)
Returns Is external beta testing enabled for this train? Only one train can have enabled testing.
20 21 22 |
# File 'lib/spaceship/tunes/build_train.rb', line 20 def external_testing_enabled @external_testing_enabled end |
#internal_testing_enabled ⇒ Bool (readonly)
Returns Is internal beta testing enabled for this train? Only one train can have enabled testing.
23 24 25 |
# File 'lib/spaceship/tunes/build_train.rb', line 23 def internal_testing_enabled @internal_testing_enabled end |
#platform ⇒ String (readonly)
Returns Platform (e.g. “ios”).
17 18 19 |
# File 'lib/spaceship/tunes/build_train.rb', line 17 def platform @platform end |
#processing_builds ⇒ Array (readonly)
Returns An array of all builds that are inside this train (Spaceship::Tunes::Build) I never got this to work to properly try and debug this.
27 28 29 |
# File 'lib/spaceship/tunes/build_train.rb', line 27 def processing_builds @processing_builds end |
#version_string ⇒ String (readonly)
Returns The version number of this train.
14 15 16 |
# File 'lib/spaceship/tunes/build_train.rb', line 14 def version_string @version_string end |
Class Method Details
.all(application, app_id) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/spaceship/tunes/build_train.rb', line 45 def all(application, app_id) trains = [] trains += client.build_trains(app_id, 'internal')['trains'] trains += client.build_trains(app_id, 'external')['trains'] result = {} trains.each do |attrs| attrs[:application] = application current = self.factory(attrs) result[current.version_string] = current end result end |
.factory(attrs) ⇒ Object
Create a new object based on a hash. This is used to create a new object based on the server response.
39 40 41 |
# File 'lib/spaceship/tunes/build_train.rb', line 39 def factory(attrs) self.new(attrs) end |
Instance Method Details
#latest_build ⇒ Spaceship::Tunes::Build
Returns The latest build for this train, sorted by upload time.
81 82 83 |
# File 'lib/spaceship/tunes/build_train.rb', line 81 def latest_build @builds.max_by(&:upload_date) end |
#setup ⇒ Object
Setup all the builds and processing builds
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/spaceship/tunes/build_train.rb', line 61 def setup super @builds = (self.raw_data['builds'] || []).collect do |attrs| attrs[:build_train] = self Tunes::Build.factory(attrs) end @processing_builds = (self.raw_data['buildsInProcessing'] || []).collect do |attrs| attrs[:build_train] = self Tunes::Build.factory(attrs) end # since buildsInProcessing appears empty, fallback to also including processing state from @builds @builds.each do |build| @processing_builds << build if build.processing == true && build.valid == true end end |
#update_testing_status!(new_value, testing_type, build = nil) ⇒ Object
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 |
# File 'lib/spaceship/tunes/build_train.rb', line 86 def update_testing_status!(new_value, testing_type, build = nil) data = client.build_trains(self.application.apple_id, testing_type) build ||= latest_build if testing_type == 'external' testing_key = "#{testing_type}Testing" # Delete the irrelevant trains and update the relevant one to enable testing data['trains'].delete_if do |train| if train['versionString'] != version_string true else train[testing_key]['value'] = new_value # also update the builds train['builds'].delete_if do |b| return true if b[testing_key].nil? if build && b["buildVersion"] == build.build_version b[testing_key]['value'] = new_value false elsif b[testing_key]['value'] == true b[testing_key]['value'] = false false else true end end false end end result = client.update_build_trains!(application.apple_id, testing_type, data) self.internal_testing_enabled = new_value if testing_type == 'internal' self.external_testing_enabled = new_value if testing_type == 'external' result end |