deliver 1.15.1 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31899c3f8e4b64ece2a4ad5e34e5db8d39f6f4fd
4
- data.tar.gz: ed6ec4f61f09b2e6abf6e64ef5fbd8ab82ba774b
3
+ metadata.gz: 0c99d8b6d17d2b023312440d362b54ac541e382c
4
+ data.tar.gz: 952141eed98bd4301bcb4703387ddf2e938cd897
5
5
  SHA512:
6
- metadata.gz: 69b8ae06a957a90efc091b37b19cbf429133f80df3ff4a1541a1e98482c7bf3f4fc673a9b1843fd159bc12c9ba3d532b9f8c73a04db81ba804b986b3c4b69e6b
7
- data.tar.gz: 8cd0dfb98097194fc775853c9b0ca1b96bd7ffd56d54ff77b7d02d33b0cbe2b01aa4bb8445b98929428c4df0175fd999b189fb4ac423fef6c8a63952d35c52a4
6
+ metadata.gz: 4075258ce3d1cbd13a7174ca217c8b021a3ce574cf33a2610dc3ac13a7fc2d9070b6a55737eb6bdc1854d5b259c52ae42101da84316f6b192c3d0b2cb3a1319e
7
+ data.tar.gz: f6a1a1a9532466ea270f7d92f904d10d086dfc0a1ef6184be65ddb8c20b7a65a74dbb5e787892609ebaded8d84582d8e529fe2d901127998dc2c6c6db2e5301a
@@ -1,5 +1,7 @@
1
1
  Put all screenshots you want to use inside the folder of its language (e.g. en-US).
2
2
  The device type will automatically be recognized using the image resolution. Apple TV screenshots
3
- should be stored in a subdirectory named appleTV with language folders inside of it.
3
+ should be stored in a subdirectory named appleTV with language folders inside of it. iMessage
4
+ screenshots, like Apple TV screenshots, should also be stored in a subdirectory named iMessage
5
+ with language folders inside of it.
4
6
 
5
- The screenshots can be named whatever you want, but keep in mind they are sorted alphabetically.
7
+ The screenshots can be named whatever you want, but keep in mind they are sorted alphabetically.
@@ -17,6 +17,16 @@ module Deliver
17
17
  IOS_IPAD = "iOS-iPad"
18
18
  # iPad Pro
19
19
  IOS_IPAD_PRO = "iOS-iPad-Pro"
20
+ # iPhone 5 iMessage
21
+ IOS_40_MESSAGES = "iOS-4-in-messages"
22
+ # iPhone 6 iMessage
23
+ IOS_47_MESSAGES = "iOS-4.7-in-messages"
24
+ # iPhone 6 Plus iMessage
25
+ IOS_55_MESSAGES = "iOS-5.5-in-messages"
26
+ # iPad iMessage
27
+ IOS_IPAD_MESSAGES = "iOS-iPad-messages"
28
+ # iPad Pro iMessage
29
+ IOS_IPAD_PRO_MESSAGES = "iOS-iPad-Pro-messages"
20
30
  # Apple Watch
21
31
  IOS_APPLE_WATCH = "iOS-Apple-Watch"
22
32
  # Mac
@@ -56,6 +66,11 @@ module Deliver
56
66
  ScreenSize::IOS_55 => "iphone6Plus",
57
67
  ScreenSize::IOS_IPAD => "ipad",
58
68
  ScreenSize::IOS_IPAD_PRO => "ipadPro",
69
+ ScreenSize::IOS_40_MESSAGES => "iphone4",
70
+ ScreenSize::IOS_47_MESSAGES => "iphone6",
71
+ ScreenSize::IOS_55_MESSAGES => "iphone6Plus",
72
+ ScreenSize::IOS_IPAD_MESSAGES => "ipad",
73
+ ScreenSize::IOS_IPAD_PRO_MESSAGES => "ipadPro",
59
74
  ScreenSize::MAC => "desktop",
60
75
  ScreenSize::IOS_APPLE_WATCH => "watch",
61
76
  ScreenSize::APPLE_TV => "appleTV"
@@ -72,6 +87,11 @@ module Deliver
72
87
  ScreenSize::IOS_55 => "iPhone 6 Plus",
73
88
  ScreenSize::IOS_IPAD => "iPad",
74
89
  ScreenSize::IOS_IPAD_PRO => "iPad Pro",
90
+ ScreenSize::IOS_40_MESSAGES => "iPhone 5 (iMessage)",
91
+ ScreenSize::IOS_47_MESSAGES => "iPhone 6 (iMessage)",
92
+ ScreenSize::IOS_55_MESSAGES => "iPhone 6 Plus (iMessage)",
93
+ ScreenSize::IOS_IPAD_MESSAGES => "iPad (iMessage)",
94
+ ScreenSize::IOS_IPAD_PRO_MESSAGES => "iPad Pro (iMessage)",
75
95
  ScreenSize::MAC => "Mac",
76
96
  ScreenSize::IOS_APPLE_WATCH => "Watch",
77
97
  ScreenSize::APPLE_TV => "Apple TV"
@@ -86,6 +106,41 @@ module Deliver
86
106
  return self.screen_size == self.class.calculate_screen_size(self.path)
87
107
  end
88
108
 
109
+ def is_messages?
110
+ return [ScreenSize::IOS_40_MESSAGES, ScreenSize::IOS_47_MESSAGES, ScreenSize::IOS_55_MESSAGES, ScreenSize::IOS_IPAD_MESSAGES, ScreenSize::IOS_IPAD_PRO_MESSAGES].include?(self.screen_size)
111
+ end
112
+
113
+ def self.device_messages
114
+ return {
115
+ ScreenSize::IOS_55_MESSAGES => [
116
+ [1080, 1920],
117
+ [1242, 2208]
118
+ ],
119
+ ScreenSize::IOS_47_MESSAGES => [
120
+ [750, 1334]
121
+ ],
122
+ ScreenSize::IOS_40_MESSAGES => [
123
+ [640, 1136],
124
+ [640, 1096],
125
+ [1136, 600] # landscape status bar is smaller
126
+ ],
127
+ ScreenSize::IOS_IPAD_MESSAGES => [
128
+ [1024, 748],
129
+ [1024, 768],
130
+ [2048, 1496],
131
+ [2048, 1536],
132
+ [768, 1004],
133
+ [768, 1024],
134
+ [1536, 2008],
135
+ [1536, 2048]
136
+ ],
137
+ ScreenSize::IOS_IPAD_PRO_MESSAGES => [
138
+ [2732, 2048],
139
+ [2048, 2732]
140
+ ]
141
+ }
142
+ end
143
+
89
144
  def self.devices
90
145
  return {
91
146
  ScreenSize::IOS_55 => [
@@ -145,7 +200,10 @@ module Deliver
145
200
  skip_landscape = true
146
201
  end
147
202
 
148
- self.devices.each do |device_type, array|
203
+ # iMessage screenshots have same resolution as app screenshots so we need to distinguish them
204
+ devices = path_component.eql?("iMessage") ? self.device_messages : self.devices
205
+
206
+ devices.each do |device_type, array|
149
207
  array.each do |resolution|
150
208
  if skip_landscape
151
209
  if size[0] == resolution[0] and size[1] == resolution[1] # portrait
@@ -4,7 +4,9 @@ module Deliver
4
4
  find_app_identifier(options)
5
5
  find_app(options)
6
6
  find_folders(options)
7
+ ensure_folders_created(options)
7
8
  find_version(options) unless skip_params[:skip_version]
9
+ find_platform(options)
8
10
  end
9
11
 
10
12
  def find_app_identifier(options)
@@ -34,10 +36,12 @@ module Deliver
34
36
  end
35
37
 
36
38
  def find_folders(options)
37
- containing = Helper.fastlane_enabled? ? './fastlane' : '.'
39
+ containing = Helper.fastlane_enabled? ? FastlaneCore::FastlaneFolder.path : '.'
38
40
  options[:screenshots_path] ||= File.join(containing, 'screenshots')
39
41
  options[:metadata_path] ||= File.join(containing, 'metadata')
42
+ end
40
43
 
44
+ def ensure_folders_created(options)
41
45
  FileUtils.mkdir_p(options[:screenshots_path])
42
46
  FileUtils.mkdir_p(options[:metadata_path])
43
47
  end
@@ -53,5 +57,13 @@ module Deliver
53
57
  rescue
54
58
  UI.user_error!("Could not infer your app's version")
55
59
  end
60
+
61
+ def find_platform(options)
62
+ if options[:ipa]
63
+ options[:platform] ||= FastlaneCore::IpaFileAnalyser.fetch_app_platform(options[:ipa])
64
+ elsif options[:pkg]
65
+ options[:platform] = 'osx'
66
+ end
67
+ end
56
68
  end
57
69
  end
@@ -2,11 +2,12 @@ require 'fastlane_core/languages'
2
2
 
3
3
  module Deliver
4
4
  module Loader
5
- # The directory 'appleTV' is a special folder that will cause our screenshot gathering code to iterate
5
+ # The directory 'appleTV' and `iMessage` are special folders that will cause our screenshot gathering code to iterate
6
6
  # through it as well searching for language folders.
7
7
  APPLE_TV_DIR_NAME = "appleTV".freeze
8
+ IMESSAGE_DIR_NAME = "iMessage".freeze
8
9
  DEFAULT_DIR_NAME = "default".freeze
9
- ALL_LANGUAGES = (FastlaneCore::Languages::ALL_LANGUAGES + [APPLE_TV_DIR_NAME, APPLE_TV_DIR_NAME, DEFAULT_DIR_NAME]).map(&:downcase).freeze
10
+ ALL_LANGUAGES = (FastlaneCore::Languages::ALL_LANGUAGES + [APPLE_TV_DIR_NAME, APPLE_TV_DIR_NAME, IMESSAGE_DIR_NAME, DEFAULT_DIR_NAME]).map(&:downcase).freeze
10
11
 
11
12
  def self.language_folders(root)
12
13
  Dir.glob(File.join(root, '*')).select do |path|
@@ -52,6 +52,15 @@ module Deliver
52
52
  conflict_block: proc do |value|
53
53
  UI.user_error!("You can't use 'pkg' and '#{value.key}' options in one run.")
54
54
  end),
55
+ FastlaneCore::ConfigItem.new(key: :platform,
56
+ short_option: "-j",
57
+ env_name: "DELIVER_PLATFORM",
58
+ description: "The platform to use (optional)",
59
+ optional: true,
60
+ default_value: "ios",
61
+ verify_block: proc do |value|
62
+ UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include? value
63
+ end),
55
64
  FastlaneCore::ConfigItem.new(key: :metadata_path,
56
65
  short_option: '-m',
57
66
  description: "Path to the folder containing the metadata files",
@@ -36,7 +36,8 @@ module Deliver
36
36
  app_version = options[:app_version]
37
37
  UI.message("Making sure the latest version on iTunes Connect matches '#{app_version}' from the ipa file...")
38
38
 
39
- changed = options[:app].ensure_version!(app_version)
39
+ changed = options[:app].ensure_version!(app_version, platform: options[:pkg] ? 'osx' : 'ios')
40
+
40
41
  if changed
41
42
  UI.success("Successfully set the version to '#{app_version}'")
42
43
  else
@@ -3,7 +3,7 @@ module Deliver
3
3
  def upload(options)
4
4
  app = options[:app]
5
5
 
6
- v = app.edit_version
6
+ v = app.edit_version(platform: options[:platform])
7
7
  UI.user_error!("Could not find a version to edit for app '#{app.name}'") unless v
8
8
 
9
9
  if options[:app_icon]
@@ -23,7 +23,7 @@ module Deliver
23
23
  app = options[:app]
24
24
 
25
25
  details = app.details
26
- v = app.edit_version
26
+ v = app.edit_version(platform: options[:platform])
27
27
 
28
28
  (LOCALISED_VERSION_VALUES + LOCALISED_APP_VALUES).each do |key|
29
29
  current = options[key]
@@ -6,7 +6,7 @@ module Deliver
6
6
 
7
7
  app = options[:app]
8
8
 
9
- v = app.edit_version
9
+ v = app.edit_version(platform: options[:platform])
10
10
  UI.user_error!("Could not find a version to edit for app '#{app.name}'") unless v
11
11
 
12
12
  UI.message("Starting with the upload of screenshots...")
@@ -40,13 +40,13 @@ module Deliver
40
40
  UI.message("Uploading #{screenshots_for_language.length} screenshots for language #{language}")
41
41
  screenshots_for_language.each do |screenshot|
42
42
  indized[screenshot.language] ||= {}
43
- indized[screenshot.language][screenshot.device_type] ||= 0
44
- indized[screenshot.language][screenshot.device_type] += 1 # we actually start with 1... wtf iTC
43
+ indized[screenshot.language][screenshot.formatted_name] ||= 0
44
+ indized[screenshot.language][screenshot.formatted_name] += 1 # we actually start with 1... wtf iTC
45
45
 
46
- index = indized[screenshot.language][screenshot.device_type]
46
+ index = indized[screenshot.language][screenshot.formatted_name]
47
47
 
48
48
  if index > 5
49
- UI.error("Too many screenshots found for device '#{screenshot.device_type}' in '#{screenshot.language}', skipping this one (#{screenshot.path})")
49
+ UI.error("Too many screenshots found for device '#{screenshot.formatted_name}' in '#{screenshot.language}', skipping this one (#{screenshot.path})")
50
50
  next
51
51
  end
52
52
 
@@ -54,7 +54,8 @@ module Deliver
54
54
  v.upload_screenshot!(screenshot.path,
55
55
  index,
56
56
  screenshot.language,
57
- screenshot.device_type)
57
+ screenshot.device_type,
58
+ screenshot.is_messages?)
58
59
  end
59
60
  # ideally we should only save once, but itunes server can't cope it seems
60
61
  # so we save per language. See issue #349
@@ -77,7 +78,7 @@ module Deliver
77
78
  language = File.basename(lng_folder)
78
79
 
79
80
  # Check to see if we need to traverse multiple platforms or just a single platform
80
- if language == Loader::APPLE_TV_DIR_NAME
81
+ if language == Loader::APPLE_TV_DIR_NAME || language == Loader::IMESSAGE_DIR_NAME
81
82
  screenshots.concat(collect_screenshots_for_languages(File.join(path, language)))
82
83
  next
83
84
  end
@@ -1,4 +1,4 @@
1
1
  module Deliver
2
- VERSION = "1.15.1"
2
+ VERSION = "1.16.0"
3
3
  DESCRIPTION = 'Upload screenshots, metadata and your app to the App Store using a single command'
4
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: 1.15.1
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-17 00:00:00.000000000 Z
11
+ date: 2016-11-28 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.56.0
19
+ version: 0.57.1
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.56.0
29
+ version: 0.57.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.0
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.37.0
59
+ version: 0.38.1
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 1.0.0
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.37.0
69
+ version: 0.38.1
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: 1.0.0
@@ -310,7 +310,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
310
  version: '0'
311
311
  requirements: []
312
312
  rubyforge_project:
313
- rubygems_version: 2.5.1
313
+ rubygems_version: 2.2.2
314
314
  signing_key:
315
315
  specification_version: 4
316
316
  summary: Upload screenshots, metadata and your app to the App Store using a single