supply 0.4.0 → 0.5.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: 9697a1089d5497d72524a149bed1fef5891cea92
4
- data.tar.gz: 21e4ebade53c3955817f1bc7c96181d3a68aa7c9
3
+ metadata.gz: c35292abbffd6e72b05753b44d20421d64277a77
4
+ data.tar.gz: 3d01830e5a7b445fbf3fa6048faa1140400e1b87
5
5
  SHA512:
6
- metadata.gz: 885050ae365c1dba5af3570cbeb641cf4836a8faa2404453be88b6c5cbdb5058a4181b9a5262c689ce1d6b8fd28c22f7618bba833b84fa8f371372813dfbd2b2
7
- data.tar.gz: 558ce0fbcf00b10e29fbfa210ac8ce0e61b563931f234109b03deb913a2f5aa23f18dc941a5b668898d22799f255f4bd2a9d85e4aa04bc7de2af9865ce613e05
6
+ metadata.gz: 45213fa053b29bbcd62b51e1148017596e9111c4f4b7b774aab7579fba3c762f432e1b58be579f5d8373c81ec17bfd16d28fc2784c38137cc54c252d4145af47
7
+ data.tar.gz: 041a7d12da918735ea8873c1a8f1222b6e4371302f3de33fb6d871017a50e8d88a8ad7d1be8881c06231da0ede07b928c00073b1e1757873c216874e4e918e6c
data/README.md CHANGED
@@ -128,6 +128,11 @@ To gradually roll out a new build use
128
128
  supply --apk path/app.apk --track rollout --rollout 0.5
129
129
  ```
130
130
 
131
+ Expansion files (obbs) found under the same directory as your APK will also be uploaded together with your APK as long as:
132
+
133
+ - they are identified as type 'main' or 'patch' (by containing 'main' or 'patch' in their file name)
134
+ - you have at most one of each type
135
+
131
136
  ## Images and Screenshots
132
137
 
133
138
  After running `supply init`, you will have a metadata directory. This directory contains one or more locale directories (e.g. en-US, en-GB, etc.), and inside this directory are text files such as `title.txt` and `short_description.txt`.
data/lib/supply/client.rb CHANGED
@@ -22,6 +22,10 @@ module Supply
22
22
 
23
23
  # instanciate a client given the supplied configuration
24
24
  def self.make_from_config
25
+ unless Supply.config[:json_key] || (Supply.config[:key] && Supply.config[:issuer])
26
+ UI.user_error! "Missing auth credentials: You must specify either 'json_key' or 'key' and 'issuer'"
27
+ end
28
+
25
29
  return Client.new(path_to_key: Supply.config[:key],
26
30
  issuer: Supply.config[:issuer],
27
31
  path_to_service_account_json: Supply.config[:json_key])
@@ -253,6 +257,19 @@ module Supply
253
257
  image_type)
254
258
  end
255
259
 
260
+ def upload_obb(obb_file_path: nil, apk_version_code: nil, expansion_file_type: nil)
261
+ ensure_active_edit!
262
+
263
+ android_publisher.upload_expansion_file(
264
+ current_package_name,
265
+ current_edit.id,
266
+ apk_version_code,
267
+ expansion_file_type,
268
+ upload_source: obb_file_path,
269
+ content_type: 'application/octet-stream'
270
+ )
271
+ end
272
+
256
273
  private
257
274
 
258
275
  def ensure_active_edit!
@@ -85,9 +85,11 @@ module Supply
85
85
  end
86
86
 
87
87
  def upload_binary
88
- if Supply.config[:apk]
89
- Helper.log.info "Preparing apk at path '#{Supply.config[:apk]}' for upload..."
90
- apk_version_code = client.upload_apk(Supply.config[:apk])
88
+ apk_path = Supply.config[:apk]
89
+
90
+ if apk_path
91
+ Helper.log.info "Preparing apk at path '#{apk_path}' for upload..."
92
+ apk_version_code = client.upload_apk(apk_path)
91
93
 
92
94
  Helper.log.info "Updating track '#{Supply.config[:track]}'..."
93
95
  if Supply.config[:track].eql? "rollout"
@@ -96,6 +98,8 @@ module Supply
96
98
  client.update_track(Supply.config[:track], 1.0, apk_version_code)
97
99
  end
98
100
 
101
+ upload_obbs(apk_path, apk_version_code)
102
+
99
103
  if metadata_path
100
104
  Dir.foreach(metadata_path) do |language|
101
105
  next if language.start_with?('.') # e.g. . or .. or hidden folders
@@ -117,5 +121,54 @@ module Supply
117
121
  def metadata_path
118
122
  Supply.config[:metadata_path]
119
123
  end
124
+
125
+ # searches for obbs in the directory where the apk is located and
126
+ # upload at most one main and one patch file. Do nothing if it finds
127
+ # more than one of either of them.
128
+ def upload_obbs(apk_path, apk_version_code)
129
+ expansion_paths = find_obbs(apk_path)
130
+ ['main', 'patch'].each do |type|
131
+ if expansion_paths[type]
132
+ upload_obb(expansion_paths[type], type, apk_version_code)
133
+ end
134
+ end
135
+ end
136
+
137
+ # @return a map of the obb paths for that apk
138
+ # keyed by their detected expansion file type
139
+ # E.g.
140
+ # { 'main' => 'path/to/main.obb', 'patch' => 'path/to/patch.obb' }
141
+ def find_obbs(apk_path)
142
+ search = File.join(File.dirname(apk_path), '*.obb')
143
+ paths = Dir.glob(search, File::FNM_CASEFOLD)
144
+ expansion_paths = {}
145
+ paths.each do |path|
146
+ type = obb_expansion_file_type(path)
147
+ next unless type
148
+ if expansion_paths[type]
149
+ Helper.log.warn("Can only upload one '#{type}' apk expansion. Skipping obb upload entirely.")
150
+ Helper.log.warn("If you'd like this to work differently, please submit an issue.")
151
+ return {}
152
+ end
153
+ expansion_paths[type] = path
154
+ end
155
+ expansion_paths
156
+ end
157
+
158
+ def upload_obb(obb_path, expansion_file_type, apk_version_code)
159
+ Helper.log.info "Uploading obb file #{obb_path}..."
160
+ client.upload_obb(obb_file_path: obb_path,
161
+ apk_version_code: apk_version_code,
162
+ expansion_file_type: expansion_file_type)
163
+ end
164
+
165
+ def obb_expansion_file_type(obb_file_path)
166
+ filename = File.basename(obb_file_path, ".obb")
167
+ if filename.include?('main')
168
+ 'main'
169
+ elsif filename.include?('patch')
170
+ 'patch'
171
+ end
172
+ end
120
173
  end
121
174
  end
@@ -1,4 +1,4 @@
1
1
  module Supply
2
- VERSION = "0.4.0".freeze
2
+ VERSION = "0.5.0".freeze
3
3
  DESCRIPTION = "Command line tool for updating Android apps and their metadata on the Google Play Store"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supply
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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-02-18 00:00:00.000000000 Z
11
+ date: 2016-02-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-api-client