supply 0.5.2 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +36 -37
- data/lib/supply/client.rb +3 -3
- data/lib/supply/commands_generator.rb +1 -1
- data/lib/supply/options.rb +2 -3
- data/lib/supply/setup.rb +10 -10
- data/lib/supply/uploader.rb +19 -14
- data/lib/supply/version.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eff55accd696bce7ea7f682dbe1f1201abaab960
|
4
|
+
data.tar.gz: 6904059222901364058d75845490675f9a001df2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8443859f5876dd6dd7bc1015f91ab49a96cc0c96a28045e5ff4402be07b6fb3d77e4385b94551df679b8506994760274331c52a80aa3b208a99c5ca64dee35e1
|
7
|
+
data.tar.gz: 9d879c1ae4f98e4a119970306277f807d5d3cf38a7312f8e1401ab8ac09353da6b52967299031d4f3afad94af87e483865c434be9cde9ee36e002c3805d087e2
|
data/README.md
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
<h3 align="center">
|
2
|
-
<a href="https://github.com/fastlane/fastlane">
|
3
|
-
<img src="assets/fastlane.png" width="150" />
|
2
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/fastlane">
|
3
|
+
<img src="../fastlane/assets/fastlane.png" width="150" />
|
4
4
|
<br />
|
5
5
|
fastlane
|
6
6
|
</a>
|
7
7
|
</h3>
|
8
8
|
<p align="center">
|
9
|
-
<a href="https://github.com/fastlane/deliver">deliver</a> •
|
10
|
-
<a href="https://github.com/fastlane/snapshot">snapshot</a> •
|
11
|
-
<a href="https://github.com/fastlane/frameit">frameit</a> •
|
12
|
-
<a href="https://github.com/fastlane/pem">pem</a> •
|
13
|
-
<a href="https://github.com/fastlane/sigh">sigh</a> •
|
14
|
-
<a href="https://github.com/fastlane/produce">produce</a> •
|
15
|
-
<a href="https://github.com/fastlane/cert">cert</a> •
|
16
|
-
<a href="https://github.com/fastlane/spaceship">spaceship</a> •
|
17
|
-
<a href="https://github.com/fastlane/pilot">pilot</a> •
|
9
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/deliver">deliver</a> •
|
10
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/snapshot">snapshot</a> •
|
11
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/frameit">frameit</a> •
|
12
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pem">pem</a> •
|
13
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/sigh">sigh</a> •
|
14
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/produce">produce</a> •
|
15
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/cert">cert</a> •
|
16
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/spaceship">spaceship</a> •
|
17
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pilot">pilot</a> •
|
18
18
|
<a href="https://github.com/fastlane/boarding">boarding</a> •
|
19
|
-
<a href="https://github.com/fastlane/gym">gym</a> •
|
20
|
-
<a href="https://github.com/fastlane/scan">scan</a> •
|
21
|
-
<a href="https://github.com/fastlane/match">match</a>
|
19
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/gym">gym</a> •
|
20
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/scan">scan</a> •
|
21
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/match">match</a>
|
22
22
|
</p>
|
23
23
|
-------
|
24
24
|
|
@@ -30,9 +30,9 @@ supply
|
|
30
30
|
============
|
31
31
|
|
32
32
|
[![Twitter: @FastlaneTools](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
|
33
|
-
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/
|
33
|
+
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/supply/LICENSE)
|
34
34
|
[![Gem](https://img.shields.io/gem/v/supply.svg?style=flat)](http://rubygems.org/gems/supply)
|
35
|
-
[![Build Status](https://img.shields.io/
|
35
|
+
[![Build Status](https://img.shields.io/circleci/project/fastlane/fastlane/master.svg?style=flat)](https://circleci.com/gh/fastlane/fastlane)
|
36
36
|
|
37
37
|
###### Command line tool for updating Android apps and their metadata on the Google Play Store
|
38
38
|
|
@@ -41,12 +41,12 @@ Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.c
|
|
41
41
|
|
42
42
|
-------
|
43
43
|
<p align="center">
|
44
|
-
<a href="#features">Features</a> •
|
45
|
-
<a href="#installation">Installation</a> •
|
46
|
-
<a href="#setup">Setup</a> •
|
47
|
-
<a href="#quick-start">Quick Start</a> •
|
48
|
-
<a href="#available-commands">Commands</a> •
|
49
|
-
<a href="#uploading-an-apk">Uploading an APK</a> •
|
44
|
+
<a href="#features">Features</a> •
|
45
|
+
<a href="#installation">Installation</a> •
|
46
|
+
<a href="#setup">Setup</a> •
|
47
|
+
<a href="#quick-start">Quick Start</a> •
|
48
|
+
<a href="#available-commands">Commands</a> •
|
49
|
+
<a href="#uploading-an-apk">Uploading an APK</a> •
|
50
50
|
<a href="#images-and-screenshots">Images</a>
|
51
51
|
</p>
|
52
52
|
|
@@ -161,7 +161,7 @@ You can add changelog files under the `changelogs/` directory for each locale. T
|
|
161
161
|
```
|
162
162
|
└── fastlane
|
163
163
|
└── metadata
|
164
|
-
└── android
|
164
|
+
└── android
|
165
165
|
├── en-US
|
166
166
|
│ └── changelogs
|
167
167
|
│ ├── 100000.txt
|
@@ -176,19 +176,18 @@ You can add changelog files under the `changelogs/` directory for each locale. T
|
|
176
176
|
### [`fastlane`](https://fastlane.tools) Toolchain
|
177
177
|
|
178
178
|
- [`fastlane`](https://fastlane.tools): Connect all deployment tools into one streamlined workflow
|
179
|
-
- [`deliver`](https://github.com/fastlane/deliver): Upload screenshots, metadata and your app to the App Store
|
180
|
-
- [`snapshot`](https://github.com/fastlane/snapshot): Automate taking localized screenshots of your iOS app on every device
|
181
|
-
- [`frameit`](https://github.com/fastlane/frameit): Quickly put your screenshots into the right device frames
|
182
|
-
- [`pem`](https://github.com/fastlane/pem): Automatically generate and renew your push notification profiles
|
183
|
-
- [`sigh`](https://github.com/fastlane/sigh): Because you would rather spend your time building stuff than fighting provisioning
|
184
|
-
- [`produce`](https://github.com/fastlane/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
|
185
|
-
- [`cert`](https://github.com/fastlane/cert): Automatically create and maintain iOS code signing certificates
|
186
|
-
- [`
|
187
|
-
- [`
|
188
|
-
- [`
|
189
|
-
- [`
|
190
|
-
- [`
|
191
|
-
- [`match`](https://github.com/fastlane/match): Easily sync your certificates and profiles across your team using git
|
179
|
+
- [`deliver`](https://github.com/fastlane/fastlane/tree/master/deliver): Upload screenshots, metadata and your app to the App Store
|
180
|
+
- [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
|
181
|
+
- [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
|
182
|
+
- [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
|
183
|
+
- [`sigh`](https://github.com/fastlane/fastlane/tree/master/sigh): Because you would rather spend your time building stuff than fighting provisioning
|
184
|
+
- [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
|
185
|
+
- [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
|
186
|
+
- [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
|
187
|
+
- [`pilot`](https://github.com/fastlane/fastlane/tree/master/pilot): The best way to manage your TestFlight testers and builds from your terminal
|
188
|
+
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
189
|
+
- [`gym`](https://github.com/fastlane/fastlane/tree/master/gym): Building your iOS apps has never been easier
|
190
|
+
- [`match`](https://github.com/fastlane/fastlane/tree/master/match): Easily sync your certificates and profiles across your team using git
|
192
191
|
|
193
192
|
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
194
193
|
|
@@ -196,7 +195,7 @@ You can add changelog files under the `changelogs/` directory for each locale. T
|
|
196
195
|
Please submit an issue on GitHub and provide information about your setup
|
197
196
|
|
198
197
|
# Code of Conduct
|
199
|
-
Help us keep `supply` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/
|
198
|
+
Help us keep `supply` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
|
200
199
|
|
201
200
|
## License
|
202
201
|
|
data/lib/supply/client.rb
CHANGED
@@ -52,7 +52,7 @@ module Supply
|
|
52
52
|
|
53
53
|
auth_client = Google::Auth::ServiceAccountCredentials.make_creds(json_key_io: key_io, scope: scope)
|
54
54
|
|
55
|
-
|
55
|
+
UI.verbose("Fetching a new access token from Google...")
|
56
56
|
|
57
57
|
auth_client.fetch_access_token!
|
58
58
|
|
@@ -76,7 +76,7 @@ module Supply
|
|
76
76
|
|
77
77
|
# Begin modifying a certain package
|
78
78
|
def begin_edit(package_name: nil)
|
79
|
-
|
79
|
+
UI.user_error!("You currently have an active edit") if @current_edit
|
80
80
|
|
81
81
|
self.current_edit = android_publisher.insert_edit(package_name)
|
82
82
|
|
@@ -280,7 +280,7 @@ module Supply
|
|
280
280
|
private
|
281
281
|
|
282
282
|
def ensure_active_edit!
|
283
|
-
|
283
|
+
UI.user_error!("You need to have an active edit, make sure to call `begin_edit`") unless @current_edit
|
284
284
|
end
|
285
285
|
end
|
286
286
|
end
|
@@ -22,7 +22,7 @@ module Supply
|
|
22
22
|
program :description, Supply::DESCRIPTION
|
23
23
|
program :help, 'Author', 'Felix Krause <supply@krausefx.com>'
|
24
24
|
program :help, 'Website', 'https://fastlane.tools'
|
25
|
-
program :help, 'GitHub', 'https://github.com/fastlane/supply'
|
25
|
+
program :help, 'GitHub', 'https://github.com/fastlane/fastlane/tree/master/supply'
|
26
26
|
program :help_formatter, :compact
|
27
27
|
|
28
28
|
always_trace!
|
data/lib/supply/options.rb
CHANGED
@@ -37,18 +37,17 @@ module Supply
|
|
37
37
|
env_name: "SUPPLY_KEY",
|
38
38
|
short_option: "-k",
|
39
39
|
conflicting_options: [:json_key],
|
40
|
-
|
40
|
+
deprecated: 'Use --json_key instead',
|
41
41
|
description: "The p12 File used to authenticate with Google",
|
42
42
|
default_value: Dir["*.p12"].first || CredentialsManager::AppfileConfig.try_fetch_value(:keyfile),
|
43
43
|
verify_block: proc do |value|
|
44
|
-
UI.important("DEPRECATED --key OPTION. Use --json_key instead")
|
45
44
|
UI.user_error! "Could not find p12 file at path '#{File.expand_path(value)}'" unless File.exist?(File.expand_path(value))
|
46
45
|
end),
|
47
46
|
FastlaneCore::ConfigItem.new(key: :issuer,
|
48
47
|
env_name: "SUPPLY_ISSUER",
|
49
48
|
short_option: "-i",
|
50
49
|
conflicting_options: [:json_key],
|
51
|
-
|
50
|
+
deprecated: 'Use --json_key instead',
|
52
51
|
description: "The issuer of the p12 file (email address of the service account)",
|
53
52
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:issuer),
|
54
53
|
verify_block: proc do |value|
|
data/lib/supply/setup.rb
CHANGED
@@ -2,7 +2,7 @@ module Supply
|
|
2
2
|
class Setup
|
3
3
|
def perform_download
|
4
4
|
if File.exist?(metadata_path)
|
5
|
-
|
5
|
+
UI.important("Metadata already exists at path '#{metadata_path}'")
|
6
6
|
return
|
7
7
|
end
|
8
8
|
|
@@ -22,7 +22,7 @@ module Supply
|
|
22
22
|
|
23
23
|
client.abort_current_edit
|
24
24
|
|
25
|
-
|
25
|
+
UI.success("Successfully stored metadata in '#{metadata_path}'")
|
26
26
|
end
|
27
27
|
|
28
28
|
def store_metadata(listing)
|
@@ -31,8 +31,8 @@ module Supply
|
|
31
31
|
|
32
32
|
Supply::AVAILABLE_METADATA_FIELDS.each do |key|
|
33
33
|
path = File.join(containing, "#{key}.txt")
|
34
|
-
|
35
|
-
File.
|
34
|
+
UI.message("Writing to #{path}...")
|
35
|
+
File.open(path, 'w:UTF-8') { |file| file.write(listing.send(key)) }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -44,12 +44,12 @@ module Supply
|
|
44
44
|
IMAGES_TYPES.each do |image_type|
|
45
45
|
if ['featureGraphic'].include?(image_type)
|
46
46
|
# we don't get all files in full resolution :(
|
47
|
-
|
47
|
+
UI.message("Due to the limit of the Google Play API `supply` can't download your existing feature graphics...")
|
48
48
|
next
|
49
49
|
end
|
50
50
|
|
51
51
|
begin
|
52
|
-
|
52
|
+
UI.message("Downloading #{image_type} for #{listing.language}...")
|
53
53
|
|
54
54
|
url = client.fetch_images(image_type: image_type, language: listing.language).last
|
55
55
|
next unless url
|
@@ -57,8 +57,8 @@ module Supply
|
|
57
57
|
path = File.join(metadata_path, listing.language, IMAGES_FOLDER_NAME, "#{image_type}.png")
|
58
58
|
File.write(path, Net::HTTP.get(URI.parse(url)))
|
59
59
|
rescue => ex
|
60
|
-
|
61
|
-
|
60
|
+
UI.error(ex.to_s)
|
61
|
+
UI.error("Error downloading '#{image_type}' for #{listing.language}...")
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -71,7 +71,7 @@ module Supply
|
|
71
71
|
FileUtils.mkdir_p(File.join(containing, IMAGES_FOLDER_NAME, screenshot_type))
|
72
72
|
end
|
73
73
|
|
74
|
-
|
74
|
+
UI.message("Due to the limit of the Google Play API `supply` can't download your existing screenshots...")
|
75
75
|
end
|
76
76
|
|
77
77
|
def store_apk_listing(apk_listing)
|
@@ -81,7 +81,7 @@ module Supply
|
|
81
81
|
end
|
82
82
|
|
83
83
|
path = File.join(containing, "#{apk_listing.apk_version_code}.txt")
|
84
|
-
|
84
|
+
UI.message("Writing to #{path}...")
|
85
85
|
File.write(path, apk_listing.recent_changes)
|
86
86
|
end
|
87
87
|
|
data/lib/supply/uploader.rb
CHANGED
@@ -5,14 +5,14 @@ module Supply
|
|
5
5
|
|
6
6
|
client.begin_edit(package_name: Supply.config[:package_name])
|
7
7
|
|
8
|
-
|
8
|
+
UI.user_error!("No local metadata found, make sure to run `supply init` to setup supply") unless metadata_path || Supply.config[:apk]
|
9
9
|
|
10
10
|
if metadata_path
|
11
11
|
UI.user_error!("Could not find folder #{metadata_path}") unless File.directory? metadata_path
|
12
12
|
|
13
13
|
all_languages.each do |language|
|
14
14
|
next if language.start_with?('.') # e.g. . or .. or hidden folders
|
15
|
-
|
15
|
+
UI.message("Preparing to upload for language '#{language}'...")
|
16
16
|
|
17
17
|
listing = client.listing_for_language(language)
|
18
18
|
|
@@ -25,9 +25,9 @@ module Supply
|
|
25
25
|
|
26
26
|
upload_binary unless Supply.config[:skip_upload_apk]
|
27
27
|
|
28
|
-
|
28
|
+
UI.message("Uploading all changes to Google Play...")
|
29
29
|
client.commit_current_edit!
|
30
|
-
|
30
|
+
UI.success("Successfully finished the upload to Google Play")
|
31
31
|
end
|
32
32
|
|
33
33
|
def upload_changelogs(language)
|
@@ -39,7 +39,7 @@ module Supply
|
|
39
39
|
def upload_changelog(language, apk_version_code)
|
40
40
|
path = File.join(metadata_path, language, Supply::CHANGELOGS_FOLDER_NAME, "#{apk_version_code}.txt")
|
41
41
|
if File.exist?(path)
|
42
|
-
|
42
|
+
UI.message("Updating changelog for code version '#{apk_version_code}' and language '#{language}'...")
|
43
43
|
apk_listing = ApkListing.new(File.read(path), language, apk_version_code)
|
44
44
|
client.update_apk_listing_for_language(apk_listing)
|
45
45
|
end
|
@@ -50,7 +50,12 @@ module Supply
|
|
50
50
|
path = File.join(metadata_path, language, "#{key}.txt")
|
51
51
|
listing.send("#{key}=".to_sym, File.read(path)) if File.exist?(path)
|
52
52
|
end
|
53
|
-
|
53
|
+
begin
|
54
|
+
listing.save
|
55
|
+
rescue Encoding::InvalidByteSequenceError => ex
|
56
|
+
message = (ex.message || '').capitalize
|
57
|
+
UI.user_error!("Metadata must be UTF-8 encoded. #{message}")
|
58
|
+
end
|
54
59
|
end
|
55
60
|
|
56
61
|
def upload_images(language)
|
@@ -59,7 +64,7 @@ module Supply
|
|
59
64
|
path = Dir.glob(search, File::FNM_CASEFOLD).last
|
60
65
|
next unless path
|
61
66
|
|
62
|
-
|
67
|
+
UI.message("Uploading image file #{path}...")
|
63
68
|
client.upload_image(image_path: File.expand_path(path),
|
64
69
|
image_type: image_type,
|
65
70
|
language: language)
|
@@ -75,7 +80,7 @@ module Supply
|
|
75
80
|
client.clear_screenshots(image_type: screenshot_type, language: language)
|
76
81
|
|
77
82
|
paths.sort.each do |path|
|
78
|
-
|
83
|
+
UI.message("Uploading screenshot #{path}...")
|
79
84
|
client.upload_image(image_path: File.expand_path(path),
|
80
85
|
image_type: screenshot_type,
|
81
86
|
language: language)
|
@@ -87,10 +92,10 @@ module Supply
|
|
87
92
|
apk_path = Supply.config[:apk]
|
88
93
|
|
89
94
|
if apk_path
|
90
|
-
|
95
|
+
UI.message("Preparing apk at path '#{apk_path}' for upload...")
|
91
96
|
apk_version_code = client.upload_apk(apk_path)
|
92
97
|
|
93
|
-
|
98
|
+
UI.message("Updating track '#{Supply.config[:track]}'...")
|
94
99
|
if Supply.config[:track].eql? "rollout"
|
95
100
|
client.update_track(Supply.config[:track], Supply.config[:rollout], apk_version_code)
|
96
101
|
else
|
@@ -107,7 +112,7 @@ module Supply
|
|
107
112
|
end
|
108
113
|
|
109
114
|
else
|
110
|
-
|
115
|
+
UI.message("No apk file found, you can pass the path to your apk using the `apk` option")
|
111
116
|
end
|
112
117
|
end
|
113
118
|
|
@@ -149,8 +154,8 @@ module Supply
|
|
149
154
|
type = obb_expansion_file_type(path)
|
150
155
|
next unless type
|
151
156
|
if expansion_paths[type]
|
152
|
-
|
153
|
-
|
157
|
+
UI.important("Can only upload one '#{type}' apk expansion. Skipping obb upload entirely.")
|
158
|
+
UI.important("If you'd like this to work differently, please submit an issue.")
|
154
159
|
return {}
|
155
160
|
end
|
156
161
|
expansion_paths[type] = path
|
@@ -159,7 +164,7 @@ module Supply
|
|
159
164
|
end
|
160
165
|
|
161
166
|
def upload_obb(obb_path, expansion_file_type, apk_version_code)
|
162
|
-
|
167
|
+
UI.message("Uploading obb file #{obb_path}...")
|
163
168
|
client.upload_obb(obb_file_path: obb_path,
|
164
169
|
apk_version_code: apk_version_code,
|
165
170
|
expansion_file_type: expansion_file_type)
|
data/lib/supply/version.rb
CHANGED
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.5.
|
4
|
+
version: 0.5.3
|
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-03-
|
11
|
+
date: 2016-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-api-client
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.40.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.40.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: credentials_manager
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 3.1.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec_junit_formatter
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.2.3
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.2.3
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: pry
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +184,14 @@ dependencies:
|
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
187
|
+
version: 0.38.0
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
194
|
+
version: 0.38.0
|
181
195
|
description: Command line tool for updating Android apps and their metadata on the
|
182
196
|
Google Play Store
|
183
197
|
email:
|