deliver 0.13.5 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -208
  3. data/bin/deliver +1 -1
  4. data/lib/assets/DeliverfileDefault +2 -22
  5. data/lib/assets/summary.html.erb +27 -39
  6. data/lib/deliver.rb +16 -14
  7. data/lib/deliver/app_screenshot.rb +43 -33
  8. data/lib/deliver/commands_generator.rb +30 -108
  9. data/lib/deliver/detect_values.rb +23 -0
  10. data/lib/deliver/download_screenshots.rb +30 -9
  11. data/lib/deliver/html_generator.rb +7 -8
  12. data/lib/deliver/options.rb +126 -0
  13. data/lib/deliver/runner.rb +75 -0
  14. data/lib/deliver/setup.rb +84 -0
  15. data/lib/deliver/submit_for_review.rb +60 -0
  16. data/lib/deliver/upload_assets.rb +22 -0
  17. data/lib/deliver/upload_metadata.rb +100 -0
  18. data/lib/deliver/upload_price_tier.rb +21 -0
  19. data/lib/deliver/upload_screenshots.rb +63 -0
  20. data/lib/deliver/version.rb +2 -1
  21. metadata +37 -62
  22. data/lib/assets/DeliverLanguageMapping.json +0 -187
  23. data/lib/assets/DeliverfileExample +0 -38
  24. data/lib/deliver/app.rb +0 -167
  25. data/lib/deliver/app_metadata.rb +0 -419
  26. data/lib/deliver/app_metadata_screenshots.rb +0 -189
  27. data/lib/deliver/deliver_process.rb +0 -426
  28. data/lib/deliver/deliverer.rb +0 -138
  29. data/lib/deliver/deliverfile/deliverfile.rb +0 -35
  30. data/lib/deliver/deliverfile/deliverfile_creator.rb +0 -135
  31. data/lib/deliver/deliverfile/dsl.rb +0 -142
  32. data/lib/deliver/dependency_checker.rb +0 -19
  33. data/lib/deliver/ipa_file_analyser.rb +0 -44
  34. data/lib/deliver/ipa_uploader.rb +0 -148
  35. data/lib/deliver/itunes_connect/itunes_connect.rb +0 -12
  36. data/lib/deliver/itunes_connect/itunes_connect_additional.rb +0 -105
  37. data/lib/deliver/itunes_connect/itunes_connect_app_icon.rb +0 -41
  38. data/lib/deliver/itunes_connect/itunes_connect_app_rating.rb +0 -90
  39. data/lib/deliver/itunes_connect/itunes_connect_apple_watch_app_icon.rb +0 -42
  40. data/lib/deliver/itunes_connect/itunes_connect_information.rb +0 -34
  41. data/lib/deliver/itunes_connect/itunes_connect_new_version.rb +0 -67
  42. data/lib/deliver/itunes_connect/itunes_connect_reader.rb +0 -46
  43. data/lib/deliver/itunes_connect/itunes_connect_screenshot_fetcher.rb +0 -54
  44. data/lib/deliver/itunes_connect/itunes_connect_submission.rb +0 -282
  45. data/lib/deliver/itunes_transporter.rb +0 -221
  46. data/lib/deliver/metadata_item.rb +0 -94
  47. data/lib/deliver/testflight.rb +0 -27
@@ -0,0 +1,75 @@
1
+ module Deliver
2
+ class Runner
3
+ attr_accessor :options
4
+
5
+ def initialize(options)
6
+ self.options = options
7
+ login
8
+ Deliver::DetectValues.new.run!(self.options)
9
+ end
10
+
11
+ def login
12
+ Helper.log.info "Login to iTunes Connect (#{options[:username]})"
13
+ Spaceship::Tunes.login(options[:username])
14
+ Helper.log.info "Login successful"
15
+ end
16
+
17
+ def run
18
+ upload_metadata unless options[:skip_metadata]
19
+ upload_binary if options[:ipa]
20
+
21
+ Helper.log.info "Finished the upload to iTunes Connect".green
22
+
23
+ submit_for_review if options[:submit_for_review]
24
+ end
25
+
26
+ def upload_binary
27
+ Helper.log.info "Uploading binary to iTunes Connect"
28
+ package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
29
+ app_id: options[:app].apple_id,
30
+ ipa_path: options[:ipa],
31
+ package_path: "/tmp"
32
+ )
33
+
34
+ transporter = FastlaneCore::ItunesTransporter.new(options[:username])
35
+ transporter.upload(options[:app].apple_id, package_path)
36
+ end
37
+
38
+ def upload_metadata
39
+ # First, collect all the things for the HTML Report
40
+ screenshots = UploadScreenshots.new.collect_screenshots(options)
41
+ UploadMetadata.new.load_from_filesystem(options)
42
+
43
+ # Validate
44
+ validate_html(screenshots)
45
+
46
+ # Commit
47
+ UploadMetadata.new.upload(options)
48
+ UploadScreenshots.new.upload(options, screenshots)
49
+ UploadPriceTier.new.upload(options)
50
+ UploadAssets.new.upload(options) # e.g. app icon
51
+ end
52
+
53
+ def submit_for_review
54
+ SubmitForReview.new.submit!(options)
55
+ end
56
+
57
+ private
58
+
59
+ def validate_html(screenshots)
60
+ html_path = HtmlGenerator.new.render(options, screenshots, '.')
61
+ return if options[:force]
62
+ puts "----------------------------------------------------------------------------"
63
+ puts "Verifying the upload via the HTML file can be disabled by either adding"
64
+ puts "'skip_pdf true' to your Deliverfile or using the flag --force."
65
+ puts "----------------------------------------------------------------------------"
66
+
67
+ system("open '#{html_path}'")
68
+ okay = agree("Does the Preview on path '#{html_path}' look okay for you? (blue = updated) (y/n)", true)
69
+
70
+ unless okay
71
+ raise "Did not upload the metadata, because the HTML file was rejected by the user".yellow
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,84 @@
1
+ module Deliver
2
+ class Setup
3
+ def run(options)
4
+ containing = (File.directory?("fastlane") ? 'fastlane' : '.')
5
+ create_based_on_identifier(containing, options)
6
+ end
7
+
8
+ # This will download all the app metadata and store its data into JSON files
9
+ # @param deliver_path (String) The directory in which the Deliverfile should be created
10
+ # @param identifier (String) The app identifier we want to create Deliverfile based on
11
+ # @param project_name (String) The default name of the project, which is used in the generated Deliverfile
12
+ def create_based_on_identifier(deliver_path, options)
13
+ file_path = File.join(deliver_path, 'Deliverfile')
14
+ data = generate_deliver_file(deliver_path, options)
15
+ File.write(file_path, data)
16
+
17
+ download_screenshots(deliver_path, options)
18
+
19
+ # Add a README to the screenshots folder
20
+ FileUtils.mkdir_p File.join(deliver_path, 'screenshots') # just in case the fetching didn't work
21
+ File.write(File.join(deliver_path, 'screenshots', 'README.txt'), File.read("#{Helper.gem_path('deliver')}/lib/assets/ScreenshotsHelp"))
22
+
23
+ Helper.log.info "Successfully created new Deliverfile at path '#{file_path}'".green
24
+ end
25
+
26
+ private
27
+
28
+ # This method takes care of creating a new 'deliver' folder, containg the app metadata
29
+ # and screenshots folders
30
+ def generate_deliver_file(deliver_path, options)
31
+ v = options[:app].latest_version
32
+ generate_metadata_files(v, deliver_path)
33
+
34
+ # Generate the final Deliverfile here
35
+ gem_path = Helper.gem_path('deliver')
36
+ deliver = File.read("#{gem_path}/lib/assets/DeliverfileDefault")
37
+ deliver.gsub!("[[APP_IDENTIFIER]]", options[:app].bundle_id)
38
+ deliver.gsub!("[[USERNAME]]", Spaceship::Tunes.client.user)
39
+
40
+ return deliver
41
+ end
42
+
43
+ def generate_metadata_files(v, deliver_path)
44
+ app_details = v.application.details
45
+ containing = File.join(deliver_path, 'metadata')
46
+
47
+ # All the localised metadata
48
+ (UploadMetadata::LOCALISED_VERSION_VALUES + UploadMetadata::LOCALISED_APP_VALUES).each do |key|
49
+ v.description.languages.each do |language|
50
+ if UploadMetadata::LOCALISED_VERSION_VALUES.include?(key)
51
+ content = v.send(key)[language]
52
+ else
53
+ content = app_details.send(key)[language]
54
+ end
55
+
56
+ resulting_path = File.join(containing, language, "#{key}.txt")
57
+ FileUtils.mkdir_p(File.expand_path('..', resulting_path))
58
+ File.write(resulting_path, content)
59
+ Helper.log.debug "Writing to '#{resulting_path}'"
60
+ end
61
+ end
62
+
63
+ # All non-localised metadata
64
+ (UploadMetadata::NON_LOCALISED_VERSION_VALUES + UploadMetadata::NON_LOCALISED_APP_VALUES).each do |key|
65
+ if UploadMetadata::NON_LOCALISED_VERSION_VALUES.include?(key)
66
+ content = v.send(key)
67
+ else
68
+ content = app_details.send(key)
69
+ end
70
+
71
+ resulting_path = File.join(containing, "#{key}.txt")
72
+ File.write(resulting_path, content)
73
+ Helper.log.debug "Writing to '#{resulting_path}'"
74
+ end
75
+
76
+ puts "Successfully created new configuration files.".green
77
+ end
78
+
79
+ def download_screenshots(deliver_path, options)
80
+ FileUtils.mkdir_p(File.join(deliver_path, 'screenshots'))
81
+ Deliver::DownloadScreenshots.run(options, deliver_path)
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,60 @@
1
+ module Deliver
2
+ class SubmitForReview
3
+ def submit!(options)
4
+ app = options[:app]
5
+ select_build(options)
6
+
7
+ Helper.log.info "Submitting the app for review..."
8
+ submission = app.create_submission
9
+
10
+ # Set app submission information
11
+ submission.content_rights_contains_third_party_content = false
12
+ submission.content_rights_has_rights = true
13
+ submission.add_id_info_uses_idfa = false
14
+
15
+ # Finalize app submission
16
+ submission.complete!
17
+
18
+ Helper.log.info "Successfully submitted the app for review!".green
19
+ end
20
+
21
+ def select_build(options)
22
+ Helper.log.info "Selecting the latest build..."
23
+ app = options[:app]
24
+ v = app.edit_version
25
+
26
+ start = Time.now
27
+
28
+ loop do
29
+ processing = v.candidate_builds.find_all(&:processing)
30
+ break if processing.count == 0
31
+
32
+ Helper.log.info "Waiting iTunes Connect processing... this might take a while..."
33
+ if (Time.now - start) > (60 * 5)
34
+ Helper.log.info ""
35
+ Helper.log.info "You can tweet: \"iTunes Connect #iosprocessingtime #{((Time.now - start) / 60).round} minutes\""
36
+ end
37
+ sleep 10
38
+ end
39
+
40
+ build = nil
41
+ v.candidate_builds.each do |b|
42
+ if !build or b.upload_date > build.upload_date
43
+ build = b
44
+ end
45
+ end
46
+
47
+ unless build
48
+ Helper.log.fatal v.candidate_builds
49
+ raise "Could not find build to select".red
50
+ end
51
+
52
+ Helper.log.info "Selecting build #{build.train_version} (#{build.build_version})..."
53
+
54
+ v.select_build(build)
55
+ v.save!
56
+
57
+ Helper.log.info "Successfully selected build".green
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,22 @@
1
+ module Deliver
2
+ class UploadAssets
3
+ def upload(options)
4
+ app = options[:app]
5
+
6
+ v = app.edit_version
7
+ raise "Could not find a version to edit for app '#{app.name}'".red unless v
8
+
9
+ if options[:app_icon]
10
+ Helper.log.info "Uploading app icon..."
11
+ v.upload_large_icon!(options[:app_icon])
12
+ end
13
+
14
+ if options[:apple_watch_app_icon]
15
+ Helper.log.info "Uploading apple watchapp icon..."
16
+ v.upload_watch_icon!(options[:apple_watch_app_icon])
17
+ end
18
+
19
+ v.save!
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,100 @@
1
+ module Deliver
2
+ # upload description, rating, etc.
3
+ class UploadMetadata
4
+ # All the localised values attached to the version
5
+ LOCALISED_VERSION_VALUES = [:description, :keywords, :release_notes, :support_url, :marketing_url]
6
+
7
+ # Everything attached to the version but not being localised
8
+ NON_LOCALISED_VERSION_VALUES = [:copyright]
9
+
10
+ # Localised app details values
11
+ LOCALISED_APP_VALUES = [:name, :privacy_url]
12
+
13
+ # Non localized app details values
14
+ NON_LOCALISED_APP_VALUES = [:primary_category, :secondary_category]
15
+
16
+ # Make sure to call `load_from_filesystem` before calling upload
17
+ def upload(options)
18
+ app = options[:app]
19
+
20
+ details = app.details
21
+ v = app.edit_version
22
+ raise "Could not find a version to edit for app '#{app.name}'".red unless v
23
+
24
+ # TODO: Create new language
25
+
26
+ (LOCALISED_VERSION_VALUES + LOCALISED_APP_VALUES).each do |key|
27
+ current = options[key]
28
+ next unless current
29
+
30
+ unless current.kind_of?(Hash)
31
+ Helper.log.error "Error with provided '#{key}'. Must be a hash, the key being the language.".red
32
+ next
33
+ end
34
+
35
+ current.each do |language, value|
36
+ next unless value.to_s.length > 0
37
+ v.send(key)[language] = value if LOCALISED_VERSION_VALUES.include?(key)
38
+ details.send(key)[language] = value if LOCALISED_APP_VALUES.include?(key)
39
+ end
40
+ end
41
+
42
+ (NON_LOCALISED_VERSION_VALUES + NON_LOCALISED_APP_VALUES).each do |key|
43
+ current = options[key]
44
+ next unless current.to_s.length > 0
45
+ v.send("#{key}=", current) if NON_LOCALISED_VERSION_VALUES.include?(key)
46
+ details.send("#{key}=", current) if NON_LOCALISED_APP_VALUES.include?(key)
47
+ end
48
+
49
+ set_review_information(v, options) if options[:app_review_information]
50
+
51
+ Helper.log.info "Uploading metadata to iTunes Connect"
52
+ v.save!
53
+ details.save!
54
+ Helper.log.info "Successfully uploaded initial set of metadata to iTunes Connect".green
55
+ end
56
+
57
+ # Loads the metadata files and stores them into the options object
58
+ def load_from_filesystem(options)
59
+ # Load localised data
60
+ Dir.glob(File.join(options[:metadata_folder], "*")).each do |lng_folder|
61
+ next unless File.directory?(lng_folder) # We don't want to read txt as they are non localised
62
+
63
+ language = File.basename(lng_folder)
64
+
65
+ (LOCALISED_VERSION_VALUES + LOCALISED_APP_VALUES).each do |key|
66
+ path = File.join(lng_folder, "#{key}.txt")
67
+ next unless File.exist?(path)
68
+
69
+ Helper.log.info "Loading '#{path}'..."
70
+ options[key] ||= {}
71
+ options[key][language] ||= File.read(path)
72
+ end
73
+ end
74
+
75
+ # Load non localised data
76
+ (NON_LOCALISED_VERSION_VALUES + NON_LOCALISED_APP_VALUES).each do |key|
77
+ path = File.join(options[:metadata_folder], "#{key}.txt")
78
+ next unless File.exist?(path)
79
+
80
+ Helper.log.info "Loading '#{path}'..."
81
+ options[key] ||= File.read(path)
82
+ end
83
+ end
84
+
85
+ private
86
+
87
+ def set_review_information(v, options)
88
+ info = options[:app_review_information]
89
+ raise "`app_review_information` must be a hash" unless info.kind_of?(Hash)
90
+
91
+ v.review_first_name = info[:first_name] if info[:first_name]
92
+ v.review_last_name = info[:last_name] if info[:last_name]
93
+ v.review_phone_number = info[:phone_number] if info[:phone_number]
94
+ v.review_email = info[:email_address] if info[:email_address]
95
+ v.review_demo_user = info[:demo_user] if info[:demo_user]
96
+ v.review_demo_password = info[:demo_password] if info[:demo_password]
97
+ v.review_notes = info[:notes] if info[:notes]
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,21 @@
1
+ module Deliver
2
+ # Set the app's pricing
3
+ class UploadPriceTier
4
+ def upload(options)
5
+ return unless options[:price_tier]
6
+ app = options[:app]
7
+
8
+ # just to be sure, the user might have passed an int (which is fine with us)
9
+ options[:price_tier] = options[:price_tier].to_s
10
+
11
+ old_price = app.price_tier
12
+ if options[:price_tier] == old_price
13
+ Helper.log.info "Price Tier unchanged (tier #{options[:price_tier]})".green
14
+ return
15
+ end
16
+
17
+ app.update_price_tier!(options[:price_tier])
18
+ Helper.log.info "Successfully updated the pricing from #{old_price} to #{options[:price_tier]}".green
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,63 @@
1
+ module Deliver
2
+ # upload screenshots to iTunes Connect
3
+ class UploadScreenshots
4
+ def upload(options, screenshots)
5
+ app = options[:app]
6
+
7
+ v = app.edit_version
8
+ raise "Could not find a version to edit for app '#{app.name}'".red unless v
9
+
10
+ Helper.log.info "Starting with the upload of screenshots..."
11
+
12
+ # First, clear all previously uploaded screenshots, but only where we have new ones
13
+ # screenshots.each do |screenshot|
14
+ # to_remove = v.screenshots[screenshot.language].find_all do |current|
15
+ # current.device_type == screenshot.device_type
16
+ # end
17
+ # to_remove.each { |t| t.reset! }
18
+ # end
19
+ # This part is not working yet...
20
+
21
+ # Now, fill in the new ones
22
+ indized = {} # per language and device type
23
+ screenshots.each do |screenshot|
24
+ indized[screenshot.language] ||= {}
25
+ indized[screenshot.language][screenshot.device_type] ||= 0
26
+ indized[screenshot.language][screenshot.device_type] += 1 # we actually start with 1... wtf iTC
27
+
28
+ index = indized[screenshot.language][screenshot.device_type]
29
+
30
+ if index > 5
31
+ Helper.log.error "Too many screenshots found for device '#{screenshot.device_type}' in '#{screenshot.language}'"
32
+ next
33
+ end
34
+
35
+ Helper.log.info "Uploading '#{screenshot.path}'..."
36
+ v.upload_screenshot!(screenshot.path,
37
+ index,
38
+ screenshot.language,
39
+ screenshot.device_type)
40
+ end
41
+
42
+ Helper.log.info "Saving changes"
43
+ v.save!
44
+ Helper.log.info "Successfully uploaded screenshots to iTunes Connect".green
45
+ end
46
+
47
+ def collect_screenshots(options)
48
+ screenshots = []
49
+ Dir.glob(File.join(options[:screenshots_path], "*"), File::FNM_CASEFOLD).sort.each do |lng_folder|
50
+ language = File.basename(lng_folder)
51
+
52
+ files = Dir.glob(File.join(lng_folder, '*.png'))
53
+ next if files.count == 0
54
+
55
+ files.each do |path|
56
+ screenshots << AppScreenshot.new(path, language)
57
+ end
58
+ end
59
+
60
+ return screenshots
61
+ end
62
+ end
63
+ end
@@ -1,3 +1,4 @@
1
1
  module Deliver
2
- VERSION = "0.13.5"
2
+ VERSION = "1.0.0.beta1"
3
+ DESCRIPTION = 'Upload screenshots, metadata and your app to the App Store using a single command'
3
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deliver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.5
4
+ version: 1.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-25 00:00:00.000000000 Z
11
+ date: 2015-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane_core
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.17.1
19
+ version: 0.18.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.17.1
29
+ version: 0.18.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.0
@@ -36,84 +36,76 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.3.0
39
+ version: 0.8.1
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.3.0
46
+ version: 0.8.1
47
47
  - !ruby/object:Gem::Dependency
48
- name: nokogiri
48
+ name: spaceship
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 1.6.5
53
+ version: 0.9.0
54
+ - - "<="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.0.0
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
- - - "~>"
61
+ - - ">="
59
62
  - !ruby/object:Gem::Version
60
- version: 1.6.5
63
+ version: 0.9.0
64
+ - - "<="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.0.0
61
67
  - !ruby/object:Gem::Dependency
62
- name: fastimage
68
+ name: nokogiri
63
69
  requirement: !ruby/object:Gem::Requirement
64
70
  requirements:
65
71
  - - "~>"
66
72
  - !ruby/object:Gem::Version
67
- version: 1.6.3
73
+ version: 1.6.5
68
74
  type: :runtime
69
75
  prerelease: false
70
76
  version_requirements: !ruby/object:Gem::Requirement
71
77
  requirements:
72
78
  - - "~>"
73
79
  - !ruby/object:Gem::Version
74
- version: 1.6.3
80
+ version: 1.6.5
75
81
  - !ruby/object:Gem::Dependency
76
- name: rubyzip
82
+ name: fastimage
77
83
  requirement: !ruby/object:Gem::Requirement
78
84
  requirements:
79
85
  - - "~>"
80
86
  - !ruby/object:Gem::Version
81
- version: 1.1.6
87
+ version: 1.6.3
82
88
  type: :runtime
83
89
  prerelease: false
84
90
  version_requirements: !ruby/object:Gem::Requirement
85
91
  requirements:
86
92
  - - "~>"
87
93
  - !ruby/object:Gem::Version
88
- version: 1.1.6
94
+ version: 1.6.3
89
95
  - !ruby/object:Gem::Dependency
90
96
  name: plist
91
97
  requirement: !ruby/object:Gem::Requirement
92
98
  requirements:
93
99
  - - "~>"
94
100
  - !ruby/object:Gem::Version
95
- version: '3.1'
101
+ version: 3.1.0
96
102
  type: :runtime
97
103
  prerelease: false
98
104
  version_requirements: !ruby/object:Gem::Requirement
99
105
  requirements:
100
106
  - - "~>"
101
107
  - !ruby/object:Gem::Version
102
- version: '3.1'
103
- - !ruby/object:Gem::Dependency
104
- name: excon
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :runtime
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
108
+ version: 3.1.0
117
109
  - !ruby/object:Gem::Dependency
118
110
  name: bundler
119
111
  requirement: !ruby/object:Gem::Requirement
@@ -224,40 +216,23 @@ files:
224
216
  - LICENSE
225
217
  - README.md
226
218
  - bin/deliver
227
- - lib/assets/DeliverLanguageMapping.json
228
219
  - lib/assets/DeliverfileDefault
229
- - lib/assets/DeliverfileExample
230
220
  - lib/assets/ScreenshotsHelp
231
221
  - lib/assets/summary.html.erb
232
222
  - lib/deliver.rb
233
- - lib/deliver/app.rb
234
- - lib/deliver/app_metadata.rb
235
- - lib/deliver/app_metadata_screenshots.rb
236
223
  - lib/deliver/app_screenshot.rb
237
224
  - lib/deliver/commands_generator.rb
238
- - lib/deliver/deliver_process.rb
239
- - lib/deliver/deliverer.rb
240
- - lib/deliver/deliverfile/deliverfile.rb
241
- - lib/deliver/deliverfile/deliverfile_creator.rb
242
- - lib/deliver/deliverfile/dsl.rb
243
- - lib/deliver/dependency_checker.rb
225
+ - lib/deliver/detect_values.rb
244
226
  - lib/deliver/download_screenshots.rb
245
227
  - lib/deliver/html_generator.rb
246
- - lib/deliver/ipa_file_analyser.rb
247
- - lib/deliver/ipa_uploader.rb
248
- - lib/deliver/itunes_connect/itunes_connect.rb
249
- - lib/deliver/itunes_connect/itunes_connect_additional.rb
250
- - lib/deliver/itunes_connect/itunes_connect_app_icon.rb
251
- - lib/deliver/itunes_connect/itunes_connect_app_rating.rb
252
- - lib/deliver/itunes_connect/itunes_connect_apple_watch_app_icon.rb
253
- - lib/deliver/itunes_connect/itunes_connect_information.rb
254
- - lib/deliver/itunes_connect/itunes_connect_new_version.rb
255
- - lib/deliver/itunes_connect/itunes_connect_reader.rb
256
- - lib/deliver/itunes_connect/itunes_connect_screenshot_fetcher.rb
257
- - lib/deliver/itunes_connect/itunes_connect_submission.rb
258
- - lib/deliver/itunes_transporter.rb
259
- - lib/deliver/metadata_item.rb
260
- - lib/deliver/testflight.rb
228
+ - lib/deliver/options.rb
229
+ - lib/deliver/runner.rb
230
+ - lib/deliver/setup.rb
231
+ - lib/deliver/submit_for_review.rb
232
+ - lib/deliver/upload_assets.rb
233
+ - lib/deliver/upload_metadata.rb
234
+ - lib/deliver/upload_price_tier.rb
235
+ - lib/deliver/upload_screenshots.rb
261
236
  - lib/deliver/version.rb
262
237
  homepage: https://fastlane.tools
263
238
  licenses:
@@ -274,12 +249,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
274
249
  version: 2.0.0
275
250
  required_rubygems_version: !ruby/object:Gem::Requirement
276
251
  requirements:
277
- - - ">="
252
+ - - ">"
278
253
  - !ruby/object:Gem::Version
279
- version: '0'
254
+ version: 1.3.1
280
255
  requirements: []
281
256
  rubyforge_project:
282
- rubygems_version: 2.4.5
257
+ rubygems_version: 2.4.6
283
258
  signing_key:
284
259
  specification_version: 4
285
260
  summary: Upload screenshots, metadata and your app to the App Store using a single