deliver 1.15.1 → 1.16.0

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