fastlane-plugin-polidea 2.2.0.pre → 3.0.1
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 -13
- data/lib/fastlane/plugin/polidea.rb +4 -0
- data/lib/fastlane/plugin/polidea/actions/fota_mail.rb +13 -3
- data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +36 -29
- data/lib/fastlane/plugin/polidea/actions/release_notes.rb +1 -1
- data/lib/fastlane/plugin/polidea/actions/release_notes_from_commits.rb +1 -1
- data/lib/fastlane/plugin/polidea/helper/page_generator.rb +28 -56
- data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +7 -42
- data/lib/fastlane/plugin/polidea/version.rb +1 -1
- data/templates/install.erb +238 -0
- data/{lib/fastlane/plugin/polidea/templates/download.erb → templates/mail.erb} +18 -23
- metadata +10 -111
- data/lib/fastlane/plugin/polidea/actions/extract_app_icon.rb +0 -172
- data/lib/fastlane/plugin/polidea/actions/extract_app_name.rb +0 -100
- data/lib/fastlane/plugin/polidea/actions/extract_version.rb +0 -106
- data/lib/fastlane/plugin/polidea/actions/get_binary_size.rb +0 -57
- data/lib/fastlane/plugin/polidea/templates/images/cover-shuttle.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/polidea-logo.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-behance.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-dribbble.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-facebook.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-github.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-instagram.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-linkedin.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-twitter.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css +0 -4895
- data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css.map +0 -7
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/bg.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1024.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1280.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1360.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1440.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1680.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_768.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_1024.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_768.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo.svg +0 -32
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo_square.svg +0 -12
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation.min.js +0 -10
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.abide.js +0 -294
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.accordion.js +0 -65
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.alert.js +0 -43
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.clearing.js +0 -558
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.dropdown.js +0 -313
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.equalizer.js +0 -74
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.interchange.js +0 -344
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.joyride.js +0 -915
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.js +0 -625
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.magellan.js +0 -189
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.offcanvas.js +0 -139
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.orbit.js +0 -472
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.reveal.js +0 -443
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.slider.js +0 -231
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tab.js +0 -167
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tooltip.js +0 -298
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.topbar.js +0 -436
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/aes.js +0 -35
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/enc-base64-min.js +0 -8
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/fastclick.js +0 -9
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.cookie.js +0 -8
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.js +0 -26
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/modernizr.js +0 -8
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/pbkdf2.js +0 -19
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/placeholder.js +0 -2
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/fonts.scss +0 -64
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation.scss +0 -45
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_functions.scss +0 -101
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_settings.scss +0 -1441
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_accordion.scss +0 -156
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_alert-boxes.scss +0 -126
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_block-grid.scss +0 -132
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_breadcrumbs.scss +0 -132
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_button-groups.scss +0 -200
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_buttons.scss +0 -252
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_clearing.scss +0 -247
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown-buttons.scss +0 -129
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown.scss +0 -248
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_flex-video.scss +0 -51
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_forms.scss +0 -570
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_global.scss +0 -447
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_grid.scss +0 -275
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_icon-bar.scss +0 -293
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_inline-lists.scss +0 -57
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_joyride.scss +0 -222
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_keystrokes.scss +0 -61
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_labels.scss +0 -105
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_magellan.scss +0 -34
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_offcanvas.scss +0 -510
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_orbit.scss +0 -368
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pagination.scss +0 -162
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_panels.scss +0 -93
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pricing-tables.scss +0 -150
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_progress-bars.scss +0 -79
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_range-slider.scss +0 -168
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_reveal.scss +0 -220
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_side-nav.scss +0 -116
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_split-buttons.scss +0 -191
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_sub-nav.scss +0 -125
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_switches.scss +0 -226
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tables.scss +0 -135
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tabs.scss +0 -123
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_thumbs.scss +0 -66
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_toolbar.scss +0 -70
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tooltips.scss +0 -142
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_top-bar.scss +0 -676
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_type.scss +0 -523
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_visibility.scss +0 -408
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/installation-page.scss +0 -171
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/normalize.scss +0 -425
- data/lib/fastlane/plugin/polidea/templates/installation_template.erb +0 -54
- data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +0 -1257
- data/lib/fastlane/plugin/polidea/templates/secure_installation_template.erb +0 -130
@@ -1,172 +0,0 @@
|
|
1
|
-
require 'ruby_apk'
|
2
|
-
|
3
|
-
Zip.warn_invalid_date = false
|
4
|
-
|
5
|
-
module Fastlane
|
6
|
-
module Actions
|
7
|
-
module SharedValues
|
8
|
-
ICON_OUTPUT_PATH = :ICON_OUTPUT_PATH
|
9
|
-
end
|
10
|
-
|
11
|
-
class ExtractAppIconAction < Action
|
12
|
-
def self.run(config)
|
13
|
-
Fastlane::Polidea.session.action_launched("extract_app_icon", config)
|
14
|
-
|
15
|
-
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_sym
|
16
|
-
icon_output_path = config[:icon_output_path]
|
17
|
-
|
18
|
-
# Gets icon from ipa/apk
|
19
|
-
icon_file = extract_icon(platform, config)
|
20
|
-
|
21
|
-
if icon_file
|
22
|
-
Actions.lane_context[SharedValues::ICON_OUTPUT_PATH] = icon_output_path
|
23
|
-
ENV[SharedValues::ICON_OUTPUT_PATH.to_s] = icon_output_path
|
24
|
-
UI.success("Successfully extracted app icon file to '#{Actions.lane_context[SharedValues::ICON_OUTPUT_PATH]}'")
|
25
|
-
icon_file
|
26
|
-
else
|
27
|
-
UI.important("No icon found.")
|
28
|
-
end
|
29
|
-
|
30
|
-
Fastlane::Polidea.session.action_completed("extract_app_icon")
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.extract_icon(platform, config)
|
34
|
-
validate_common(config)
|
35
|
-
case platform
|
36
|
-
when :ios
|
37
|
-
extract_icon_from_ipa(config[:ipa], config[:icon_output_path]) if validate_ios(config)
|
38
|
-
when :android
|
39
|
-
extract_icon_from_apk(config[:apk], config[:icon_output_path]) if validate_android(config)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
######## ios specific
|
44
|
-
|
45
|
-
def self.validate_ios(config)
|
46
|
-
UI.user_error!("No IPA file path given, pass using `ipa: 'ipa path'`") unless config[:ipa].to_s.length > 0
|
47
|
-
true
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.extract_icon_from_ipa(ipa_file, icon_output_path)
|
51
|
-
info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa_file)
|
52
|
-
icon_files = ipa_icon_files(info)
|
53
|
-
return if icon_files.empty?
|
54
|
-
icon_file_name = icon_files.first
|
55
|
-
Zip::File.open(ipa_file) do |zipfile|
|
56
|
-
icon_file = self.largest_ios_icon(zipfile.glob("**/Payload/**/#{icon_file_name}*.png"))
|
57
|
-
return nil unless icon_file
|
58
|
-
tmp_path = "/tmp/app_icon.png"
|
59
|
-
File.write(tmp_path, zipfile.read(icon_file))
|
60
|
-
Actions.sh("xcrun -sdk iphoneos pngcrush -revert-iphone-optimizations #{tmp_path} #{icon_output_path}")
|
61
|
-
File.delete(tmp_path)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def self.ipa_icon_files(info)
|
66
|
-
icons = info['CFBundleIcons']
|
67
|
-
unless icons.nil?
|
68
|
-
primary_icon = icons['CFBundlePrimaryIcon']
|
69
|
-
unless primary_icon.nil?
|
70
|
-
return primary_icon['CFBundleIconFiles']
|
71
|
-
end
|
72
|
-
end
|
73
|
-
[]
|
74
|
-
end
|
75
|
-
|
76
|
-
def self.largest_ios_icon(icons)
|
77
|
-
icons.max_by do |file, _|
|
78
|
-
case file.name
|
79
|
-
when /@(\d+)x/
|
80
|
-
$1.to_i
|
81
|
-
else
|
82
|
-
1
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
######## android specific
|
88
|
-
|
89
|
-
def self.validate_android(config)
|
90
|
-
UI.user_error!("No APK file path given, pass using `apk: 'apk path'`") unless config[:apk].to_s.length > 0
|
91
|
-
true
|
92
|
-
end
|
93
|
-
|
94
|
-
def self.extract_icon_from_apk(apk_file, icon_output_path)
|
95
|
-
apk = Android::Apk.new(apk_file)
|
96
|
-
icon = largest_android_icon(apk)
|
97
|
-
return unless icon
|
98
|
-
icon_file = File.open(icon_output_path, 'wb')
|
99
|
-
icon_file.write icon[:data]
|
100
|
-
icon_file
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.largest_android_icon(apk)
|
104
|
-
icons = apk.icon
|
105
|
-
selected_icon = icons.max_by do |name, _|
|
106
|
-
case name
|
107
|
-
when /x*hdpi/
|
108
|
-
name.count "x"
|
109
|
-
when /mdpi/
|
110
|
-
-1
|
111
|
-
when %r{\/drawable\/}
|
112
|
-
-2
|
113
|
-
else
|
114
|
-
-3
|
115
|
-
end
|
116
|
-
end
|
117
|
-
{ name: selected_icon[0], data: selected_icon[1] } if selected_icon
|
118
|
-
rescue
|
119
|
-
nil
|
120
|
-
end
|
121
|
-
|
122
|
-
######## common
|
123
|
-
|
124
|
-
def self.validate_common(config)
|
125
|
-
UI.user_error!("No icon path given, pass using `icon_output_path: 'icon path'`") unless config[:icon_output_path].to_s.length > 0
|
126
|
-
true
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.description
|
130
|
-
"Extracts largest icon from .ipa/.apk, use `extract_app_info` instead"
|
131
|
-
end
|
132
|
-
|
133
|
-
def self.available_options
|
134
|
-
[
|
135
|
-
FastlaneCore::ConfigItem.new(key: :ipa,
|
136
|
-
env_name: "",
|
137
|
-
description: ".ipa file to extract icon",
|
138
|
-
optional: true,
|
139
|
-
default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
|
140
|
-
FastlaneCore::ConfigItem.new(key: :apk,
|
141
|
-
env_name: "",
|
142
|
-
description: ".apk file to extract icon",
|
143
|
-
optional: true,
|
144
|
-
default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]),
|
145
|
-
FastlaneCore::ConfigItem.new(key: :icon_output_path,
|
146
|
-
env_name: "",
|
147
|
-
description: "icon output path",
|
148
|
-
optional: true,
|
149
|
-
default_value: "./app_icon.png")
|
150
|
-
]
|
151
|
-
end
|
152
|
-
|
153
|
-
def self.output
|
154
|
-
[
|
155
|
-
['ICON_OUTPUT_PATH', 'Path to app icon extracted from .ipa/.apk']
|
156
|
-
]
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.author
|
160
|
-
"Piotrek Dubiel"
|
161
|
-
end
|
162
|
-
|
163
|
-
def self.is_supported?(platform)
|
164
|
-
[:ios, :android].include? platform
|
165
|
-
end
|
166
|
-
|
167
|
-
def self.category
|
168
|
-
:deprecated
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
require 'ruby_apk'
|
2
|
-
|
3
|
-
Zip.warn_invalid_date = false
|
4
|
-
|
5
|
-
module Fastlane
|
6
|
-
module Actions
|
7
|
-
module SharedValues
|
8
|
-
APP_NAME = :APP_NAME
|
9
|
-
end
|
10
|
-
|
11
|
-
class ExtractAppNameAction < Action
|
12
|
-
def self.run(config)
|
13
|
-
Fastlane::Polidea.session.action_launched("extract_app_name", config)
|
14
|
-
|
15
|
-
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_sym
|
16
|
-
|
17
|
-
# Gets name from ipa/apk
|
18
|
-
app_name = extract_app_name(platform, config)
|
19
|
-
|
20
|
-
Actions.lane_context[SharedValues::APP_NAME] = app_name
|
21
|
-
ENV[SharedValues::APP_NAME.to_s] = app_name
|
22
|
-
|
23
|
-
UI.success("Successfully extracted app name: '#{Actions.lane_context[SharedValues::APP_NAME]}'")
|
24
|
-
|
25
|
-
Fastlane::Polidea.session.action_completed("extract_app_name")
|
26
|
-
app_name
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.extract_app_name(platform, config)
|
30
|
-
case platform
|
31
|
-
when :ios
|
32
|
-
extract_name_from_ipa(config[:ipa]) if validate_ios(config)
|
33
|
-
when :android
|
34
|
-
extract_name_from_apk(config[:apk]) if validate_android(config)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
######## ios specific
|
39
|
-
|
40
|
-
def self.validate_ios(config)
|
41
|
-
UI.user_error!("No IPA file path given, pass using `ipa: 'ipa path'`") unless config[:ipa].to_s.length > 0
|
42
|
-
true
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.extract_name_from_ipa(ipa_file)
|
46
|
-
info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa_file)
|
47
|
-
info['CFBundleDisplayName'] || info['CFBundleName']
|
48
|
-
end
|
49
|
-
|
50
|
-
######## android specific
|
51
|
-
|
52
|
-
def self.validate_android(config)
|
53
|
-
UI.user_error!("No APK file path given, pass using `apk: 'apk path'`") unless config[:apk].to_s.length > 0
|
54
|
-
true
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.extract_name_from_apk(apk_file)
|
58
|
-
apk = Android::Apk.new(apk_file)
|
59
|
-
apk.manifest.label
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.description
|
63
|
-
"Extracts application name from .apk/.ipa, use `extract_app_info` instead"
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.available_options
|
67
|
-
[
|
68
|
-
FastlaneCore::ConfigItem.new(key: :ipa,
|
69
|
-
env_name: "",
|
70
|
-
description: ".ipa file to extract icon",
|
71
|
-
optional: true,
|
72
|
-
default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
|
73
|
-
FastlaneCore::ConfigItem.new(key: :apk,
|
74
|
-
env_name: "",
|
75
|
-
description: ".apk file to extract icon",
|
76
|
-
optional: true,
|
77
|
-
default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH])
|
78
|
-
]
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.output
|
82
|
-
[
|
83
|
-
['APP_NAME', 'App name extracted from .ipa/.apk']
|
84
|
-
]
|
85
|
-
end
|
86
|
-
|
87
|
-
def self.author
|
88
|
-
"Piotrek Dubiel"
|
89
|
-
end
|
90
|
-
|
91
|
-
def self.is_supported?(platform)
|
92
|
-
[:ios, :android].include? platform
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.category
|
96
|
-
:deprecated
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
@@ -1,106 +0,0 @@
|
|
1
|
-
require 'ruby_apk'
|
2
|
-
|
3
|
-
Zip.warn_invalid_date = false
|
4
|
-
|
5
|
-
module Fastlane
|
6
|
-
module Actions
|
7
|
-
module SharedValues
|
8
|
-
APP_VERSION = :APP_VERSION
|
9
|
-
BUILD_NUMBER = :BUILD_NUMBER
|
10
|
-
end
|
11
|
-
|
12
|
-
class ExtractVersionAction < Action
|
13
|
-
def self.run(config)
|
14
|
-
Fastlane::Polidea.session.action_launched("extract_version", config)
|
15
|
-
|
16
|
-
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_sym
|
17
|
-
|
18
|
-
# Gets version from ipa/apk
|
19
|
-
app_version, build_number = extract_version(platform, config)
|
20
|
-
|
21
|
-
Actions.lane_context[SharedValues::APP_VERSION] = app_version
|
22
|
-
ENV[SharedValues::APP_VERSION.to_s] = app_version
|
23
|
-
|
24
|
-
Actions.lane_context[SharedValues::BUILD_NUMBER] = build_number
|
25
|
-
ENV[SharedValues::BUILD_NUMBER.to_s] = build_number.to_s
|
26
|
-
|
27
|
-
UI.success("Successfully extracted app version: '#{Actions.lane_context[SharedValues::APP_VERSION]}', build number: #{Actions.lane_context[SharedValues::BUILD_NUMBER]}")
|
28
|
-
|
29
|
-
Fastlane::Polidea.session.action_completed("extract_version")
|
30
|
-
|
31
|
-
return app_version, build_number
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.extract_version(platform, config)
|
35
|
-
case platform
|
36
|
-
when :ios
|
37
|
-
extract_version_from_ipa(config[:ipa]) if validate_ios(config)
|
38
|
-
when :android
|
39
|
-
extract_version_from_apk(config[:apk]) if validate_android(config)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
######## ios specific
|
44
|
-
|
45
|
-
def self.validate_ios(config)
|
46
|
-
UI.user_error!("No IPA file path given, pass using `ipa: 'ipa path'`") unless config[:ipa].to_s.length > 0
|
47
|
-
true
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.extract_version_from_ipa(ipa_file)
|
51
|
-
info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa_file)
|
52
|
-
return info['CFBundleShortVersionString'], info['CFBundleVersion']
|
53
|
-
end
|
54
|
-
|
55
|
-
######## android specific
|
56
|
-
|
57
|
-
def self.validate_android(config)
|
58
|
-
UI.user_error!("No APK file path given, pass using `apk: 'apk path'`") unless config[:apk].to_s.length > 0
|
59
|
-
true
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.extract_version_from_apk(apk_file)
|
63
|
-
apk = Android::Apk.new(apk_file)
|
64
|
-
return apk.manifest.version_name, apk.manifest.version_code
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.description
|
68
|
-
"Extracts application version and build number from .ipa/.apk, use `extract_app_info` instead"
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.available_options
|
72
|
-
[
|
73
|
-
FastlaneCore::ConfigItem.new(key: :ipa,
|
74
|
-
env_name: "",
|
75
|
-
description: ".ipa file to extract icon",
|
76
|
-
optional: true,
|
77
|
-
default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
|
78
|
-
FastlaneCore::ConfigItem.new(key: :apk,
|
79
|
-
env_name: "",
|
80
|
-
description: ".apk file to extract icon",
|
81
|
-
optional: true,
|
82
|
-
default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH])
|
83
|
-
]
|
84
|
-
end
|
85
|
-
|
86
|
-
def self.output
|
87
|
-
[
|
88
|
-
['APP_VERSION', 'App version extracted from .ipa/.apk'],
|
89
|
-
['BUILD_NUMBER', 'Build number extracted from .ipa/.apk']
|
90
|
-
]
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.author
|
94
|
-
"Piotrek Dubiel"
|
95
|
-
end
|
96
|
-
|
97
|
-
def self.is_supported?(platform)
|
98
|
-
[:ios, :android].include? platform
|
99
|
-
end
|
100
|
-
|
101
|
-
def self.category
|
102
|
-
:deprecated
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module Fastlane
|
2
|
-
module Actions
|
3
|
-
module SharedValues
|
4
|
-
BINARY_SIZE = :BINARY_SIZE
|
5
|
-
end
|
6
|
-
|
7
|
-
class GetBinarySizeAction < Action
|
8
|
-
def self.run(config)
|
9
|
-
Fastlane::Polidea.session.action_launched("get_binary_size", config)
|
10
|
-
|
11
|
-
binary_file = config[:binary]
|
12
|
-
|
13
|
-
UI.user_error!("No IPA or APK file path given, pass using `binary: 'ipa or apk path'`") unless binary_file.to_s.length > 0
|
14
|
-
|
15
|
-
binary_size = File.open(binary_file).size
|
16
|
-
binary_size_in_mb = (binary_size / 1024.0 / 1024.0).round(2)
|
17
|
-
|
18
|
-
Actions.lane_context[SharedValues::BINARY_SIZE] = binary_size
|
19
|
-
ENV[SharedValues::BINARY_SIZE.to_s] = binary_size.to_s
|
20
|
-
|
21
|
-
UI.success("Size of #{binary_file} is #{binary_size_in_mb} MB (#{binary_size} bytes)")
|
22
|
-
|
23
|
-
Fastlane::Polidea.session.action_completed("get_binary_size")
|
24
|
-
|
25
|
-
binary_size
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.description
|
29
|
-
"Measures binary size in bytes, use `extract_app_info` instead"
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.available_options
|
33
|
-
[
|
34
|
-
FastlaneCore::ConfigItem.new(key: :binary,
|
35
|
-
env_name: "",
|
36
|
-
description: ".ipa or .apk file from the build ",
|
37
|
-
optional: true,
|
38
|
-
default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] || Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH])
|
39
|
-
]
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.output
|
43
|
-
[
|
44
|
-
['BINARY_SIZE', 'Size of .ipa/.apk in bytes']
|
45
|
-
]
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.author
|
49
|
-
"Piotrek Dubiel"
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.is_supported?(platform)
|
53
|
-
[:ios, :android].include? platform
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|