fastlane-plugin-bundletool 1.0.7 → 1.0.9

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
  SHA256:
3
- metadata.gz: 8a1ce147b19920327f7ca4a32519214316955aa906469ec9eb2edb5f249e9f72
4
- data.tar.gz: abb7030269fda53b86f532da8a137a5fafc593c69be5fbb164f01157c5b5e36d
3
+ metadata.gz: 7fb3b3676492fd3f6a4bfc64426a28937f6c92bf98024ccacf761169d2443383
4
+ data.tar.gz: 861566dc3312e4cfe2199f773f0ae10a33a8e43bb096d5a0a0b194595d97c427
5
5
  SHA512:
6
- metadata.gz: 0f6c1a75aa421ef5184da894a6ebdf2a15824698479b90927f86188d8953ddccaa55fcdd62276c18258a4f9beb6d9c4110335e69ecfc9711f693ac851f579d1d
7
- data.tar.gz: eadcb068dd75527b1eb35ac1683c43e029d824a859202cff77d8a7de901b516b94243722e34f543cb8714822ae0a7ec9af5679efe6156d64be7f4bed759ba2c4
6
+ metadata.gz: 7b51d6b7495b427fb35c3c6f8c429299da981d7eae09847577af154735cde54d99ea1dda1e5eb3d4c12a0cbf27fabeaede25299a62696778ecdaa2fc52cf20dc
7
+ data.tar.gz: a06d8c3ab1aaf481295abe63a31c2afaa9fcdfce0eef51de05f8c5a246502883660ebd47a02d84ec418d488b96852d3cd1e5fca4f8ac023fcbcc279f2106ff56
data/README.md CHANGED
@@ -13,7 +13,7 @@ fastlane add_plugin bundletool
13
13
  or in your Pluginfile under fastlane folder write the following line and run `bundle install`.
14
14
 
15
15
  ```
16
- gem 'fastlane-plugin-bundletool', '1.0.6'
16
+ gem 'fastlane-plugin-bundletool', '1.0.8'
17
17
  ```
18
18
 
19
19
  ## About bundletool
@@ -37,12 +37,31 @@ bundletool(
37
37
  bundletool_version: '1.10.0', # For searching a specific version of bundletool visit https://github.com/google/bundletool/releases
38
38
  aab_path: aab_path,
39
39
  apk_output_path: apk_output_path,
40
- verbose: true
40
+ verbose: true,
41
+ cache_path: cache_path
41
42
  )
42
43
  ```
43
44
 
44
45
  This will output the universal `.apk` in the output path you set.
45
46
 
47
+ ## Options
48
+
49
+ | Key | Description | Env Var(s) | Default |
50
+ |-----------------------|---------------------------------------------------------|---------------------------------|---------|
51
+ | ks_path | Path to .jks file | FL_BUNDLETOOL_KEYSTORE_FILE | |
52
+ | ks_password | .jks password | FL_BUNDLETOOL_KEYSTORE_PASSWORD | |
53
+ | ks_key_alias | Alias for jks | FL_BUNDLETOOL_KEY_ALIAS | |
54
+ | ks_key_alias_password | Alias password for .jks | FL_BUNDLETOOL_KEY_PASSWORD | |
55
+ | bundletool_version | Version of bundletool to use, by default 0.11.0 will | FL_BUNDLETOOL_VERSION | 0.11.0 |
56
+ | | be used | | |
57
+ | download_url | Url to download bundletool from, should point to a jar | FL_BUNDLETOOL_DOWNLOAD_URL | |
58
+ | | file | | |
59
+ | aab_path | Path where the aab file is | FL_BUNDLETOOL_AAB_PATH | |
60
+ | apk_output_path | Path where the apk file is going to be placed | FL_BUNDLETOOL_APK_OUTPUT_PATH | . |
61
+ | verbose | Show every messages of the action | FL_BUNDLETOOL_VERBOSE | false |
62
+ | cache_path | Cache downloaded bundletool binary into the cache path | FL_BUNDLETOOL_CACHE_PATH | |
63
+ |-----------------------|---------------------------------------------------------|---------------------------------|---------|
64
+
46
65
  ## Use case
47
66
 
48
67
  Here you can find a post I did explaining why I have to create this action.
@@ -23,12 +23,33 @@ module Fastlane
23
23
  download_url = params[:download_url]
24
24
  aab_path = params[:aab_path]
25
25
  output_path = params[:apk_output_path] || '.'
26
+ cache_path = params[:cache_path]
26
27
 
27
28
  return unless validate_aab!(aab_path)
28
29
 
29
- return unless download_bundletool(bundletool_version, download_url)
30
+ if(cache_path.nil?)
31
+ installation_path = @bundletool_temp_path
32
+ else
33
+ installation_path = Pathname.new(File.expand_path(cache_path)).to_s
34
+ end
35
+
36
+ unless(Dir.exist?(installation_path))
37
+ Dir.mkdir(installation_path)
38
+ end
39
+
40
+ unless(Dir.exist?(@bundletool_temp_path))
41
+ Dir.mkdir(@bundletool_temp_path)
42
+ end
30
43
 
31
- extract_universal_apk_from(aab_path, output_path, keystore_info)
44
+ unless download_url.nil?
45
+ bundletool_filename = "bundletool_#{id = Digest::SHA256.hexdigest(download_url)}.jar"
46
+ else
47
+ bundletool_filename = "bundletool_#{bundletool_version}.jar"
48
+ end
49
+
50
+ return unless download_bundletool(bundletool_version, download_url, bundletool_filename, installation_path)
51
+
52
+ extract_universal_apk_from(aab_path, output_path, keystore_info, bundletool_filename, installation_path)
32
53
  end
33
54
 
34
55
  def self.validate_aab!(aab_path)
@@ -41,29 +62,24 @@ module Fastlane
41
62
  return true
42
63
  end
43
64
 
44
- def self.download_bundletool(version, download_url)
45
- Dir.mkdir "#{@project_root}/bundletool_temp"
46
-
65
+ def self.download_bundletool(version, download_url, bundletool_filename, cache_path)
47
66
  unless download_url.nil?
48
- puts "Downloading bundletool from #{download_url}"
49
- puts_message("Downloading bundletool from #{download_url}")
50
- download_and_write_bundletool(download_url)
67
+ download_and_write_bundletool(download_url, bundletool_filename, cache_path)
51
68
  else
52
- puts_message("Downloading bundletool (#{version}) from https://github.com/google/bundletool/releases/download/#{version}/bundletool-all-#{version}.jar...")
53
- download_and_write_bundletool("https://github.com/google/bundletool/releases/download/#{version}/bundletool-all-#{version}.jar")
54
- end
55
- puts_success('Downloaded bundletool')
56
- true
69
+ bundletool_url = "https://github.com/google/bundletool/releases/download/#{version}/bundletool-all-#{version}.jar"
70
+ download_and_write_bundletool(bundletool_url, bundletool_filename, cache_path)
71
+ end
72
+ return true
57
73
  rescue OpenURI::HTTPError => e
58
74
  clean_temp!
59
75
  puts_error!("Something went wrong when downloading bundletool version #{version}" + ". \nError message\n #{e.message}")
60
- false
76
+ return false
61
77
  end
62
78
 
63
- def self.extract_universal_apk_from(aab_path, apk_output_path, keystore_info)
79
+ def self.extract_universal_apk_from(aab_path, apk_output_path, keystore_info, bundletool_filename, installation_path)
64
80
  aab_absolute_path = Pathname.new(File.expand_path(aab_path)).to_s
65
81
  apk_output_absolute_path = Pathname.new(File.expand_path(apk_output_path)).to_s
66
- output_path = run_bundletool!(aab_absolute_path, keystore_info)
82
+ output_path = run_bundletool!(aab_absolute_path, keystore_info, bundletool_filename, installation_path)
67
83
  prepare_apk!(output_path, apk_output_absolute_path)
68
84
  rescue StandardError => e
69
85
  puts_error!("Bundletool could not extract universal apk from aab at #{aab_absolute_path}. \nError message\n #{e.message}")
@@ -71,7 +87,7 @@ module Fastlane
71
87
  clean_temp!
72
88
  end
73
89
 
74
- def self.run_bundletool!(aab_path, keystore_info)
90
+ def self.run_bundletool!(aab_path, keystore_info, bundletool_filename, installation_path)
75
91
  puts_message("Extracting apk from #{aab_path}...")
76
92
  output_path = "#{@bundletool_temp_path}/output.apks"
77
93
  keystore_params = ''
@@ -80,7 +96,7 @@ module Fastlane
80
96
  keystore_params = "--ks='#{keystore_info[:keystore_path]}' --ks-pass='pass:#{keystore_info[:keystore_password]}' --ks-key-alias='#{keystore_info[:alias]}' --key-pass='pass:#{keystore_info[:alias_password]}'"
81
97
  end
82
98
 
83
- cmd = "java -jar #{@bundletool_temp_path}/bundletool.jar build-apks --bundle=\"#{aab_path}\" --output=\"#{output_path}\" --mode=universal #{keystore_params}"
99
+ cmd = "java -jar #{installation_path}/#{bundletool_filename} build-apks --bundle=\"#{aab_path}\" --output=\"#{output_path}\" --mode=universal #{keystore_params}"
84
100
 
85
101
  Open3.popen3(cmd) do |_, _, stderr, wait_thr|
86
102
  exit_status = wait_thr.value
@@ -142,30 +158,37 @@ module Fastlane
142
158
  def self.available_options
143
159
  [
144
160
  FastlaneCore::ConfigItem.new(key: :ks_path,
161
+ env_name: 'FL_BUNDLETOOL_KEYSTORE_FILE',
145
162
  description: 'Path to .jks file',
146
163
  is_string: true,
147
164
  optional: true),
148
165
  FastlaneCore::ConfigItem.new(key: :ks_password,
166
+ env_name: 'FL_BUNDLETOOL_KEYSTORE_PASSWORD',
149
167
  description: '.jks password',
150
168
  is_string: true,
151
169
  optional: true),
152
170
  FastlaneCore::ConfigItem.new(key: :ks_key_alias,
171
+ env_name: 'FL_BUNDLETOOL_KEY_ALIAS',
153
172
  description: 'Alias for jks',
154
173
  is_string: true,
155
174
  optional: true),
156
175
  FastlaneCore::ConfigItem.new(key: :ks_key_alias_password,
176
+ env_name: 'FL_BUNDLETOOL_KEY_PASSWORD',
157
177
  description: 'Alias password for .jks',
158
178
  is_string: true,
159
179
  optional: true),
160
180
  FastlaneCore::ConfigItem.new(key: :bundletool_version,
181
+ env_name: 'FL_BUNDLETOOL_VERSION',
161
182
  description: 'Version of bundletool to use, by default 0.11.0 will be used',
162
183
  is_string: true,
163
184
  default_value: '0.11.0'),
164
185
  FastlaneCore::ConfigItem.new(key: :download_url,
186
+ env_name: 'FL_BUNDLETOOL_DOWNLOAD_URL',
165
187
  description: 'Url to download bundletool from, should point to a jar file',
166
188
  is_string: true,
167
189
  optional: true),
168
190
  FastlaneCore::ConfigItem.new(key: :aab_path,
191
+ env_name: 'FL_BUNDLETOOL_AAB_PATH',
169
192
  description: 'Path where the aab file is',
170
193
  is_string: true,
171
194
  optional: false,
@@ -175,17 +198,23 @@ module Fastlane
175
198
  end
176
199
  end),
177
200
  FastlaneCore::ConfigItem.new(key: :apk_output_path,
201
+ env_name: 'FL_BUNDLETOOL_APK_OUTPUT_PATH',
178
202
  description: 'Path where the apk file is going to be placed',
179
203
  is_string: true,
180
204
  optional: true,
181
205
  default_value: '.'),
182
206
  FastlaneCore::ConfigItem.new(key: :verbose,
207
+ env_name: 'FL_BUNDLETOOL_VERBOSE',
183
208
  description: 'Show every messages of the action',
184
209
  is_string: false,
185
210
  type: Boolean,
186
211
  optional: true,
187
- default_value: false)
188
-
212
+ default_value: false),
213
+ FastlaneCore::ConfigItem.new(key: :cache_path,
214
+ env_name: 'FL_BUNDLETOOL_CACHE_PATH',
215
+ description: 'Cache downloaded bundletool binary into the cache path specified',
216
+ is_string: true,
217
+ optional: true)
189
218
  ]
190
219
  end
191
220
 
@@ -214,12 +243,21 @@ module Fastlane
214
243
 
215
244
  private
216
245
 
217
- def self.download_and_write_bundletool(download_url)
246
+ def self.download_and_write_bundletool(download_url, bundletool_filename, installation_path)
247
+ if(File.exist?"#{installation_path}/#{bundletool_filename}")
248
+ puts_message("Using binary cached at #{installation_path}/#{bundletool_filename}")
249
+ return
250
+ end
251
+
252
+ puts_message("Downloading bundletool from #{download_url}")
253
+
218
254
  URI.open(download_url) do |bundletool|
219
- File.open("#{@bundletool_temp_path}/bundletool.jar", 'wb') do |file|
255
+ File.open("#{installation_path}/#{bundletool_filename}", 'wb') do |file|
220
256
  file.write(bundletool.read)
221
257
  end
222
258
  end
259
+
260
+ puts_success('Downloaded bundletool')
223
261
  end
224
262
  end
225
263
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Bundletool
3
- VERSION = "1.0.7"
3
+ VERSION = "1.0.9"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-bundletool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Gonzalez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-16 00:00:00.000000000 Z
11
+ date: 2023-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry