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.
- checksums.yaml +4 -4
- data/README.md +9 -208
- data/bin/deliver +1 -1
- data/lib/assets/DeliverfileDefault +2 -22
- data/lib/assets/summary.html.erb +27 -39
- data/lib/deliver.rb +16 -14
- data/lib/deliver/app_screenshot.rb +43 -33
- data/lib/deliver/commands_generator.rb +30 -108
- data/lib/deliver/detect_values.rb +23 -0
- data/lib/deliver/download_screenshots.rb +30 -9
- data/lib/deliver/html_generator.rb +7 -8
- data/lib/deliver/options.rb +126 -0
- data/lib/deliver/runner.rb +75 -0
- data/lib/deliver/setup.rb +84 -0
- data/lib/deliver/submit_for_review.rb +60 -0
- data/lib/deliver/upload_assets.rb +22 -0
- data/lib/deliver/upload_metadata.rb +100 -0
- data/lib/deliver/upload_price_tier.rb +21 -0
- data/lib/deliver/upload_screenshots.rb +63 -0
- data/lib/deliver/version.rb +2 -1
- metadata +37 -62
- data/lib/assets/DeliverLanguageMapping.json +0 -187
- data/lib/assets/DeliverfileExample +0 -38
- data/lib/deliver/app.rb +0 -167
- data/lib/deliver/app_metadata.rb +0 -419
- data/lib/deliver/app_metadata_screenshots.rb +0 -189
- data/lib/deliver/deliver_process.rb +0 -426
- data/lib/deliver/deliverer.rb +0 -138
- data/lib/deliver/deliverfile/deliverfile.rb +0 -35
- data/lib/deliver/deliverfile/deliverfile_creator.rb +0 -135
- data/lib/deliver/deliverfile/dsl.rb +0 -142
- data/lib/deliver/dependency_checker.rb +0 -19
- data/lib/deliver/ipa_file_analyser.rb +0 -44
- data/lib/deliver/ipa_uploader.rb +0 -148
- data/lib/deliver/itunes_connect/itunes_connect.rb +0 -12
- data/lib/deliver/itunes_connect/itunes_connect_additional.rb +0 -105
- data/lib/deliver/itunes_connect/itunes_connect_app_icon.rb +0 -41
- data/lib/deliver/itunes_connect/itunes_connect_app_rating.rb +0 -90
- data/lib/deliver/itunes_connect/itunes_connect_apple_watch_app_icon.rb +0 -42
- data/lib/deliver/itunes_connect/itunes_connect_information.rb +0 -34
- data/lib/deliver/itunes_connect/itunes_connect_new_version.rb +0 -67
- data/lib/deliver/itunes_connect/itunes_connect_reader.rb +0 -46
- data/lib/deliver/itunes_connect/itunes_connect_screenshot_fetcher.rb +0 -54
- data/lib/deliver/itunes_connect/itunes_connect_submission.rb +0 -282
- data/lib/deliver/itunes_transporter.rb +0 -221
- data/lib/deliver/metadata_item.rb +0 -94
- 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
|
data/lib/deliver/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
46
|
+
version: 0.8.1
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: spaceship
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
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:
|
63
|
+
version: 0.9.0
|
64
|
+
- - "<="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.0.0
|
61
67
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
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.
|
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.
|
80
|
+
version: 1.6.5
|
75
81
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
82
|
+
name: fastimage
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
78
84
|
requirements:
|
79
85
|
- - "~>"
|
80
86
|
- !ruby/object:Gem::Version
|
81
|
-
version: 1.
|
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.
|
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:
|
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:
|
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/
|
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/
|
247
|
-
- lib/deliver/
|
248
|
-
- lib/deliver/
|
249
|
-
- lib/deliver/
|
250
|
-
- lib/deliver/
|
251
|
-
- lib/deliver/
|
252
|
-
- lib/deliver/
|
253
|
-
- lib/deliver/
|
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:
|
254
|
+
version: 1.3.1
|
280
255
|
requirements: []
|
281
256
|
rubyforge_project:
|
282
|
-
rubygems_version: 2.4.
|
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
|