supply 0.7.1 → 0.8.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: 3a10bfd71eb3cc61e7083797bb49b4f5f4d92edd
4
- data.tar.gz: f6354b200670a8785e715cb5d0779dde7a0816c2
3
+ metadata.gz: b80b8bd3de26da54834384517a37b949a83753c7
4
+ data.tar.gz: b4686049115f0ec20e60bb1e50963e42eee75f6c
5
5
  SHA512:
6
- metadata.gz: 1c002d9e9647c2ac40e0049111e0f6ac2b60af4ad342a08881c36c3cae9268246efea2920585e811a559113fad32625773b63837f0efb260e502bb9e3292f6f3
7
- data.tar.gz: 7d94f55922d4eb4727ff0bb5c088ab052e481dbab1f35c98d2f8b732a35d04afb57015f65ca286141e2d58a99db4b56be6b62aefcc9966a992a95b3022fae949
6
+ metadata.gz: 0393c751ec015a5849cc7b122c9203afdd6c09a1ddd0a65f8fe63b6e492973431747e5d1a97f9cc0037d0e76be112cf70c9e3bdff777dde1a0e046795ac14762
7
+ data.tar.gz: 5a5a1cd23e48b4a91ca28eac37270c9304045c7a5ab250ebdbda72cb37c67fc57ab943a0d51f7b0067c0520c22c1cb033aba9833a0469451b2dc540c16062c5b
data/README.md CHANGED
@@ -32,7 +32,6 @@ supply
32
32
  [![Twitter: @FastlaneTools](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
33
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/circleci/project/fastlane/fastlane/master.svg?style=flat)](https://circleci.com/gh/fastlane/fastlane)
36
35
 
37
36
  ###### Command line tool for updating Android apps and their metadata on the Google Play Store
38
37
 
@@ -54,7 +53,7 @@ Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.c
54
53
 
55
54
  -------
56
55
 
57
- <h5 align="center"><code>supply</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate building and releasing your iOS and Android apps.</h5>
56
+ <h5 align="center"><code>supply</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
58
57
 
59
58
  ## Features
60
59
  - Update existing Android applications on Google Play via the command line
@@ -75,15 +74,20 @@ Install the gem
75
74
 
76
75
  Setup consists of setting up your Google Developers Service Account
77
76
 
78
- - Open the [Google Play Console](https://play.google.com/apps/publish/)
79
- - Select **Settings** tab, followed by the **API access** tab
80
- - Click the **Create Service Account** button and follow the **Google Developers Console** link in the dialog
81
- - Click **Create credentials** and select **Service account**
82
- - Select **JSON** as the Key type and click **Create**
83
- - Make a note of the file name of the JSON file downloaded to your computer, and close the dialog
84
- - Back on the Google Play developer console, click **Done** to close the dialog
85
- - Click on **Grant Access** for the newly added service account
86
- - Choose **Release Manager** from the **Role** dropdown and click **Send Invitation** to close the dialog
77
+ 1. Open the [Google Play Console](https://play.google.com/apps/publish/)
78
+ 1. Select **Settings** tab, followed by the **API access** tab
79
+ 1. Click the **Create Service Account** button and follow the **Google API Console** link in the dialog
80
+ 1. Click the **Create Service account** button at the top of the developers console screen
81
+ 1. Provide a name for the service account
82
+ 1. Click **Select a role** and choose **Project > Service Account Actor**
83
+ 1. Check the **Furnish a new private key** checkbox
84
+ 1. Select **JSON** as the Key type
85
+ 1. Click **Create** to close the dialog
86
+ 1. Make a note of the file name of the JSON file downloaded to your computer
87
+ 1. Back on the Google Play developer console, click **Done** to close the dialog
88
+ 1. Click on **Grant Access** for the newly added service account
89
+ 1. Choose **Release Manager** from the **Role** dropdown
90
+ 1. Click **Add user** to close the dialog
87
91
 
88
92
  ### Migrating Google credential format (from .p12 key file to .json)
89
93
 
@@ -173,7 +177,7 @@ You can add changelog files under the `changelogs/` directory for each locale. T
173
177
 
174
178
  ## Track Promotion
175
179
 
176
- A common Play publishing scenario might involve uploading an APK version to a test track, testing it, and finally promoting that version to production.
180
+ A common Play publishing scenario might involve uploading an APK version to a test track, testing it, and finally promoting that version to production.
177
181
 
178
182
  This can be done using the `--track_promote_to` parameter. The `--track_promote_to` parameter works with the `--track` parameter to command the Play API to promote existing Play track APK version(s) (those active on the track identified by the `--track` param value) to a new track (`--track_promote_to` value).
179
183
 
@@ -181,7 +185,7 @@ This can be done using the `--track_promote_to` parameter. The `--track_promote
181
185
 
182
186
  ### [`fastlane`](https://fastlane.tools) Toolchain
183
187
 
184
- - [`fastlane`](https://fastlane.tools): The easiest way to automate building and releasing your iOS and Android apps
188
+ - [`fastlane`](https://fastlane.tools): The easiest way to automate beta deployments and releases for your iOS and Android apps
185
189
  - [`deliver`](https://github.com/fastlane/fastlane/tree/master/deliver): Upload screenshots, metadata and your app to the App Store
186
190
  - [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
187
191
  - [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
@@ -20,10 +20,11 @@ module Supply
20
20
  # @!group Login
21
21
  #####################################################
22
22
 
23
- # instanciate a client given the supplied configuration
23
+ # instantiate a client given the supplied configuration
24
24
  def self.make_from_config
25
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'"
26
+ UI.important("To not be asked about this value, you can specify it using 'json_key'")
27
+ Supply.config[:json_key] = UI.input("The service account json file used to authenticate with Google: ")
27
28
  end
28
29
 
29
30
  return Client.new(path_to_key: Supply.config[:key],
@@ -93,6 +94,13 @@ module Supply
93
94
  self.current_package_name = nil
94
95
  end
95
96
 
97
+ # Validates the current edit - does not change data on Google Play
98
+ def validate_current_edit!
99
+ ensure_active_edit!
100
+
101
+ call_google_api { android_publisher.validate_edit(current_package_name, current_edit.id) }
102
+ end
103
+
96
104
  # Commits the current edit saving all pending changes on Google Play
97
105
  def commit_current_edit!
98
106
  ensure_active_edit!
@@ -22,11 +22,12 @@ module Supply
22
22
  end),
23
23
  FastlaneCore::ConfigItem.new(key: :rollout,
24
24
  short_option: "-r",
25
- description: "The percentage of the rollout",
26
- default_value: '1.0',
25
+ description: "The percentage of the user fraction when uploading to the rollout track",
26
+ default_value: '0.1',
27
27
  verify_block: proc do |value|
28
- available = %w(0.005 0.01 0.05 0.1 0.2 0.5 1.0)
29
- UI.user_error! "Invalid value '#{value}', must be #{available.join(', ')}" unless available.include? value
28
+ min = 0.05
29
+ max = 0.5
30
+ UI.user_error! "Invalid value '#{value}', must be between #{min} and #{max}" unless value.to_f.between?(min, max)
30
31
  end),
31
32
  FastlaneCore::ConfigItem.new(key: :metadata_path,
32
33
  env_name: "SUPPLY_METADATA_PATH",
@@ -120,7 +121,13 @@ module Supply
120
121
  verify_block: proc do |value|
121
122
  available = valid_tracks
122
123
  UI.user_error! "Invalid value '#{value}', must be #{available.join(', ')}" unless available.include? value
123
- end)
124
+ end),
125
+ FastlaneCore::ConfigItem.new(key: :validate_only,
126
+ env_name: "SUPPLY_VALIDATE_ONLY",
127
+ optional: true,
128
+ description: "Indicate that changes will only be validated with Google Play rather than actually published",
129
+ is_string: false,
130
+ default_value: false)
124
131
 
125
132
  ]
126
133
  end
@@ -27,16 +27,24 @@ module Supply
27
27
 
28
28
  promote_track if Supply.config[:track_promote_to]
29
29
 
30
- UI.message("Uploading all changes to Google Play...")
31
- client.commit_current_edit!
32
- UI.success("Successfully finished the upload to Google Play")
30
+ if Supply.config[:validate_only]
31
+ UI.message("Validating all changes with Google Play...")
32
+ client.validate_current_edit!
33
+ UI.success("Successfully validated the upload to Google Play")
34
+ else
35
+ UI.message("Uploading all changes to Google Play...")
36
+ client.commit_current_edit!
37
+ UI.success("Successfully finished the upload to Google Play")
38
+ end
33
39
  end
34
40
 
35
41
  def promote_track
36
42
  version_codes = client.track_version_codes(Supply.config[:track])
37
- client.update_track(Supply.config[:track], 1.0, nil)
43
+ # the actual value passed for the rollout argument does not matter because it will be ignored by the Google Play API
44
+ # but it has to be between 0.05 and 0.5 to pass the validity check. So we are passing the default value 0.1
45
+ client.update_track(Supply.config[:track], 0.1, nil)
38
46
  version_codes.each do |apk_version_code|
39
- client.update_track(Supply.config[:track_promote_to], 1.0, apk_version_code)
47
+ client.update_track(Supply.config[:track_promote_to], Supply.config[:rollout], apk_version_code)
40
48
  end
41
49
  end
42
50
 
@@ -1,4 +1,4 @@
1
1
  module Supply
2
- VERSION = "0.7.1".freeze
2
+ VERSION = "0.8.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.7.1
4
+ version: 0.8.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-08-29 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: google-api-client
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.43.4
33
+ version: 0.52.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.43.4
40
+ version: 0.52.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: credentials_manager
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.15.0
47
+ version: 0.16.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.15.0
54
+ version: 0.16.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 0.38.0
187
+ version: 0.44.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 0.38.0
194
+ version: 0.44.0
195
195
  description: Command line tool for updating Android apps and their metadata on the
196
196
  Google Play Store
197
197
  email: