fastlane-plugin-appcenter 1.9.0 → 1.11.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
  SHA256:
3
- metadata.gz: 89d582118585c4f375abd0b893ad9648180e33d19308d20c881aea0262356a82
4
- data.tar.gz: 57a447973defb5be52cee9ed03a9d635e442cc30b523152b23d0754b63638c14
3
+ metadata.gz: 1c1262b958ae0ddbf9a6bfa6d63b4f032f1518c706154e6c70b35adbe2c441e2
4
+ data.tar.gz: c2ffa81d7a6e4c8fb369c5d4612a0aea7c02c2cd589a3fdcb900d8b407f2eaae
5
5
  SHA512:
6
- metadata.gz: 3c9c355551542046daffa8383aee7521d9185b76cc4351e494e6645de638a982af60812bb14982ef171707716dce5761d87e98dd9455a2548bde66d3157237db
7
- data.tar.gz: c9a7690e05d9251cae36125ab72669bf11733b2fbf25c8d0f15544fe741b9f09e525d924524eb4daccc7056bdd290c06bc68df5f6a72d64558fc225fb4597544
6
+ metadata.gz: eb06867a95f13d484796bd47be5cad11df03e949ffffbcbf8cbe14d675c8577506e184176248ba8102fc338ab934e9d03e06938030591d9d9a72beec557f7894
7
+ data.tar.gz: b1fadb157505f3138621dffd8e95a64d306f89439ab25259c60c6a9e08d9a9dbe97d0b09b4c1daf8db70e2c9241d87225523784cb3f9c5e900c98d3a85b0b05f
data/README.md CHANGED
@@ -52,7 +52,8 @@ appcenter_upload(
52
52
  appcenter_fetch_version_number(
53
53
  api_token: "<appcenter token>",
54
54
  owner_name: "<appcenter account name of the owner of the app (username or organization URL name)>",
55
- app_name: "<appcenter app name (as seen in app URL)>"
55
+ app_name: "<appcenter app name (as seen in app URL)>",
56
+ version: "a specific version to get the last release for" # optional, don't set this value to get the last upload of all versions
56
57
  )
57
58
  ```
58
59
 
@@ -121,6 +122,7 @@ Here is the list of all existing parameters:
121
122
  | `version` <br/> `APPCENTER_DISTRIBUTE_VERSION` | The build version, required for .pkg, .dmg, .zip and .msi builds, as well as Android ProGuard `mapping.txt` when using `upload_mapping_only` |
122
123
  | `timeout` <br/> `APPCENTER_DISTRIBUTE_TIMEOUT` | Request timeout in seconds applied to individual HTTP requests. Some commands use multiple HTTP requests, large file uploads are also split in multiple HTTP requests |
123
124
  | `dsa_signature` <br/> `APPCENTER_DISTRIBUTE_DSA_SIGNATURE` | DSA signature of the macOS or Windows release for Sparkle update feed |
125
+ | `ed_signature` <br/> `APPCENTER_DISTRIBUTE_ED_SIGNATURE` | EdDSA signature of the macOS or Windows release for Sparkle update feed |
124
126
  | `strict` <br/> `APPCENTER_STRICT_MODE` | Strict mode, set to 'true' to fail early in case a potential error was detected |
125
127
 
126
128
  #### `appcenter_fetch_version_number`
@@ -130,6 +132,7 @@ Here is the list of all existing parameters:
130
132
  | `api_token` <br/> `APPCENTER_API_TOKEN` | API Token for App Center |
131
133
  | `owner_name` <br/> `APPCENTER_OWNER_NAME` | Owner name, as found in the App's URL in App Center |
132
134
  | `app_name` <br/> `APPCENTER_APP_NAME` | App name as found in the App's URL in App Center. If there is no app with such name, you will be prompted to create one |
135
+ | `version` <br/> `APPCENTER_APP_VERSION` | App version to get the last release for instead of the last release of all versions |
133
136
 
134
137
  ## Example
135
138
 
@@ -1,6 +1,6 @@
1
- require 'json'
2
- require 'net/http'
3
- require 'fastlane_core/ui/ui'
1
+ require "json"
2
+ require "net/http"
3
+ require "fastlane_core/ui/ui"
4
4
 
5
5
  module Fastlane
6
6
  UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
@@ -8,38 +8,51 @@ module Fastlane
8
8
  module Actions
9
9
  class AppcenterFetchVersionNumberAction < Action
10
10
  def self.description
11
- "Fetches the latest version number of an app from App Center"
11
+ "Fetches the latest version number of an app or the last build number of a version from App Center"
12
12
  end
13
13
 
14
14
  def self.authors
15
- ["jspargo", "ShopKeep"]
15
+ ["jspargo", "ShopKeep", "Qutaibah"]
16
16
  end
17
17
 
18
18
  def self.run(params)
19
19
  api_token = params[:api_token]
20
20
  app_name = params[:app_name]
21
21
  owner_name = params[:owner_name]
22
+ version = params[:version]
22
23
 
23
24
  releases = Helper::AppcenterHelper.fetch_releases(
24
25
  api_token: api_token,
25
26
  owner_name: owner_name,
26
- app_name: app_name
27
+ app_name: app_name,
27
28
  )
28
29
 
29
30
  UI.abort_with_message!("No versions found for '#{app_name}' owned by #{owner_name}") unless releases
30
- sorted_release = releases.sort_by { |release| release['id'] }.reverse!
31
- latest_release = sorted_release.first
31
+
32
+ sorted_releases = releases
33
+
34
+ if version.nil?
35
+ sorted_releases = releases.sort_by { |release| release["id"] }
36
+ else
37
+ sorted_releases = releases.select { |release| release["short_version"] == version }.sort_by { |release| release["id"] }
38
+ end
39
+
40
+ latest_release = sorted_releases.last
32
41
 
33
42
  if latest_release.nil?
34
- UI.user_error!("This app has no releases yet")
43
+ if version.nil?
44
+ UI.user_error!("This app has no releases yet")
45
+ return nil
46
+ end
47
+ UI.user_error!("The provided version (#{version}) has no releases yet")
35
48
  return nil
36
49
  end
37
50
 
38
51
  return {
39
- "id" => latest_release['id'],
40
- "version" => latest_release['short_version'],
41
- "build_number" => latest_release['version']
42
- }
52
+ "id" => latest_release["id"],
53
+ "version" => latest_release["short_version"],
54
+ "build_number" => latest_release["version"],
55
+ }
43
56
  end
44
57
 
45
58
  def self.available_options
@@ -61,7 +74,13 @@ module Fastlane
61
74
  description: "Name of the application on App Center",
62
75
  verify_block: proc do |value|
63
76
  UI.user_error!("No app name for App Center given, pass using `app_name: 'app name'`") unless value && !value.empty?
64
- end)
77
+ end),
78
+ FastlaneCore::ConfigItem.new(key: :version,
79
+ env_name: "APPCENTER_APP_VERSION",
80
+ description: "The version to get the latest release for",
81
+ optional: true,
82
+ type: String),
83
+
65
84
  ]
66
85
  end
67
86
 
@@ -70,11 +89,11 @@ module Fastlane
70
89
  end
71
90
 
72
91
  def self.get_apps(api_token)
73
- host_uri = URI.parse('https://api.appcenter.ms')
92
+ host_uri = URI.parse("https://api.appcenter.ms")
74
93
  http = Net::HTTP.new(host_uri.host, host_uri.port)
75
94
  http.use_ssl = true
76
95
  apps_request = Net::HTTP::Get.new("/v0.1/apps")
77
- apps_request['X-API-Token'] = api_token
96
+ apps_request["X-API-Token"] = api_token
78
97
  apps_response = http.request(apps_request)
79
98
  return [] unless apps_response.kind_of?(Net::HTTPOK)
80
99
  return JSON.parse(apps_response.body)
@@ -143,6 +143,7 @@ module Fastlane
143
143
  build_number = params[:build_number]
144
144
  version = params[:version]
145
145
  dsa_signature = params[:dsa_signature]
146
+ ed_signature = params[:ed_signature]
146
147
 
147
148
  if release_notes.length >= Constants::MAX_RELEASE_NOTES_LENGTH
148
149
  unless should_clip
@@ -230,7 +231,7 @@ module Fastlane
230
231
  UI.message("Release '#{release_id}' committed: #{release_url}")
231
232
 
232
233
  release = Helper::AppcenterHelper.update_release(api_token, owner_name, app_name, release_id, release_notes)
233
- Helper::AppcenterHelper.update_release_metadata(api_token, owner_name, app_name, release_id, dsa_signature)
234
+ Helper::AppcenterHelper.update_release_metadata(api_token, owner_name, app_name, release_id, dsa_signature, ed_signature)
234
235
 
235
236
  destinations_array = []
236
237
  if destinations == '*'
@@ -643,7 +644,13 @@ module Fastlane
643
644
  description: "DSA signature of the macOS or Windows release for Sparkle update feed",
644
645
  optional: true,
645
646
  type: String),
646
-
647
+
648
+ FastlaneCore::ConfigItem.new(key: :ed_signature,
649
+ env_name: "APPCENTER_DISTRIBUTE_ED_SIGNATURE",
650
+ description: "EdDSA signature of the macOS or Windows release for Sparkle update feed",
651
+ optional: true,
652
+ type: String),
653
+
647
654
  FastlaneCore::ConfigItem.new(key: :strict,
648
655
  env_name: "APPCENTER_STRICT_MODE",
649
656
  description: "Strict mode, set to 'true' to fail early in case a potential error was detected",
@@ -324,6 +324,7 @@ module Fastlane
324
324
  req.options.timeout = timeout
325
325
  req.headers['internal-request-source'] = "fastlane"
326
326
  req.headers['Content-Length'] = chunk.length.to_s
327
+ req.headers['Content-Type'] = 'application/octet-stream'
327
328
  req.body = chunk
328
329
  end
329
330
  UI.message("DEBUG: #{response.status} #{JSON.pretty_generate(response.body)}\n") if ENV['DEBUG']
@@ -545,15 +546,20 @@ module Fastlane
545
546
  end
546
547
 
547
548
  # updates release metadata
548
- def self.update_release_metadata(api_token, owner_name, app_name, release_id, dsa_signature)
549
- return if dsa_signature.to_s == ''
549
+ def self.update_release_metadata(api_token, owner_name, app_name, release_id, dsa_signature = '', ed_signature = '')
550
+ return if dsa_signature.to_s == '' && ed_signature.to_s == ''
550
551
 
551
552
  url = "v0.1/apps/#{owner_name}/#{app_name}/releases/#{release_id}"
552
553
  body = {
553
- metadata: {
554
- dsa_signature: dsa_signature
555
- }
554
+ metadata: {}
556
555
  }
556
+
557
+ if dsa_signature.to_s != ''
558
+ body[:metadata]["dsa_signature"] = dsa_signature
559
+ end
560
+ if ed_signature.to_s != ''
561
+ body[:metadata]["ed_signature"] = ed_signature
562
+ end
557
563
 
558
564
  UI.message("DEBUG: PATCH #{url}") if ENV['DEBUG']
559
565
  UI.message("DEBUG: PATCH body #{JSON.pretty_generate(body)}\n") if ENV['DEBUG']
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Appcenter
3
- VERSION = "1.9.0"
3
+ VERSION = "1.11.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-appcenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Microsoft Corporation
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-10 00:00:00.000000000 Z
11
+ date: 2020-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,8 +122,8 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
- description:
126
- email:
125
+ description:
126
+ email:
127
127
  executables: []
128
128
  extensions: []
129
129
  extra_rdoc_files: []
@@ -140,7 +140,7 @@ homepage: https://github.com/microsoft/fastlane-plugin-appcenter
140
140
  licenses:
141
141
  - MIT
142
142
  metadata: {}
143
- post_install_message:
143
+ post_install_message:
144
144
  rdoc_options: []
145
145
  require_paths:
146
146
  - lib
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  version: '0'
157
157
  requirements: []
158
158
  rubygems_version: 3.0.3
159
- signing_key:
159
+ signing_key:
160
160
  specification_version: 4
161
161
  summary: Fastlane plugin for App Center
162
162
  test_files: []