deliver 0.13.5 → 1.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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