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.
- 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
|