fastlane-plugin-github_status 0.1.0 → 0.2.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 +4 -4
- data/README.md +32 -4
- data/lib/fastlane/plugin/github_status.rb +1 -0
- data/lib/fastlane/plugin/github_status/actions/github_status_action.rb +12 -16
- data/lib/fastlane/plugin/github_status/message.rb +17 -1
- data/lib/fastlane/plugin/github_status/options.rb +29 -0
- data/lib/fastlane/plugin/github_status/ui.rb +4 -0
- data/lib/fastlane/plugin/github_status/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d590ee426df3c9db50f0c1145891c3af01fe5862
|
4
|
+
data.tar.gz: 13759d5e23f9abc36a533144889d6d9b21798025
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be1ad13915e6c6b296e5b13cd22a1455561d0fe043f46254f7bf7387c7df399f711b74b5a97f507ec09855f12d5fa375780d562e40f312fe6d2bbb23408ece82
|
7
|
+
data.tar.gz: 03e59a44d8e3ef7485ce76e9e3e715f9bdec4801a9682ab1614bb60ce7092c3fa3f5778ecd08b1b47b6f1ae48c068ea3b31e190c56a9e62cb9a74dd8b5caf9a9
|
data/README.md
CHANGED
@@ -12,16 +12,44 @@ fastlane add_plugin github_status
|
|
12
12
|
|
13
13
|
## About github_status
|
14
14
|
|
15
|
-
Provides the ability to
|
15
|
+
Provides the ability to display and act upon GitHub server status as part of your build
|
16
16
|
|
17
|
-
|
17
|
+
#### Status display
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
# Display the status of the GitHub APIs as part of your build
|
21
|
+
github_status
|
22
|
+
```
|
23
|
+
|
24
|
+

|
25
|
+
|
26
|
+
#### Stop your build preemptively
|
27
|
+
|
28
|
+
If you use GitHub as part of your build and release process, it can be important to know that their APIs are having trouble before you start taking release actions.
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
# Stop the build if the status of the GitHub APIs is currently at or above a certain level of trouble
|
32
|
+
github_status(abort_level: 'major') # 'minor' or 'major'
|
33
|
+
```
|
34
|
+
|
35
|
+
If you want to see how your build will behave when GitHub returns a particular status, you can temporarily force the plugin to return a particular status value by setting the `GITHUB_STATUS_TEST_STATUS` environment variable before your run, like:
|
36
|
+
|
37
|
+
```bash
|
38
|
+
GITHUB_STATUS_TEST_STATUS=major fastlane your_lane
|
39
|
+
```
|
40
|
+
|
41
|
+
#### Retrieve the status for your own use
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
# Capture the GitHub APIs status information, and use it however you'd like
|
45
|
+
message = github_status
|
46
|
+
puts "✅ #{message.body} ✅" if message.status == 'good'
|
47
|
+
```
|
18
48
|
|
19
49
|
## Example
|
20
50
|
|
21
51
|
Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
|
22
52
|
|
23
|
-
**Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
|
24
|
-
|
25
53
|
## Run tests for this plugin
|
26
54
|
|
27
55
|
To run both the tests, and code style validation, run
|
@@ -7,6 +7,7 @@ require 'fastlane/plugin/github_status/version'
|
|
7
7
|
require 'fastlane/plugin/github_status/ui'
|
8
8
|
require 'fastlane/plugin/github_status/message'
|
9
9
|
require 'fastlane/plugin/github_status/client'
|
10
|
+
require 'fastlane/plugin/github_status/options'
|
10
11
|
|
11
12
|
module Fastlane
|
12
13
|
module GithubStatus
|
@@ -2,7 +2,14 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
class GithubStatusAction < Action
|
4
4
|
def self.run(params)
|
5
|
-
|
5
|
+
message = client.last_message
|
6
|
+
ui.print_message(message)
|
7
|
+
|
8
|
+
if message.status_at_least?(params[:abort_level])
|
9
|
+
ui.abort!("Aborting because of GitHub status: #{ui.status_statement(message)}")
|
10
|
+
end
|
11
|
+
|
12
|
+
message
|
6
13
|
end
|
7
14
|
|
8
15
|
def self.description
|
@@ -14,13 +21,7 @@ module Fastlane
|
|
14
21
|
end
|
15
22
|
|
16
23
|
def self.available_options
|
17
|
-
|
18
|
-
# FastlaneCore::ConfigItem.new(key: :your_option,
|
19
|
-
# env_name: "GITHUB_STATUS_YOUR_OPTION",
|
20
|
-
# description: "A description of your option",
|
21
|
-
# optional: false,
|
22
|
-
# type: String)
|
23
|
-
]
|
24
|
+
Plugin::GitHubStatus::Options.available_options
|
24
25
|
end
|
25
26
|
|
26
27
|
def self.is_supported?(platform)
|
@@ -31,20 +32,15 @@ module Fastlane
|
|
31
32
|
# collaborators
|
32
33
|
#
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
class << self
|
36
|
+
attr_accessor :ui
|
37
|
+
attr_accessor :client
|
37
38
|
end
|
38
39
|
|
39
40
|
def self.ui
|
40
41
|
@ui ||= Plugin::GitHubStatus::UI.new
|
41
42
|
end
|
42
43
|
|
43
|
-
# Used to override the Client for testing
|
44
|
-
def self.client=(client)
|
45
|
-
@client = client
|
46
|
-
end
|
47
|
-
|
48
44
|
def self.client
|
49
45
|
@client ||= Plugin::GitHubStatus::Client.new
|
50
46
|
end
|
@@ -4,6 +4,8 @@ module Fastlane
|
|
4
4
|
# Immutable module object representing the last status message
|
5
5
|
# provided by GitHub
|
6
6
|
class Message
|
7
|
+
STATUS_RANKING = ['good', 'minor', 'major'].freeze
|
8
|
+
|
7
9
|
# String representing one of three possible statuses:
|
8
10
|
# * 'good' - Everything is OK
|
9
11
|
# * 'minor' - GitHub is experiencing minor problems
|
@@ -28,10 +30,24 @@ module Fastlane
|
|
28
30
|
# 'created_on' => '2016-06-01T16:40:35Z'
|
29
31
|
# }
|
30
32
|
def initialize(data_hash)
|
31
|
-
@status = data_hash['status']
|
33
|
+
@status = ENV['GITHUB_STATUS_TEST_STATUS'] || data_hash['status']
|
32
34
|
@body = data_hash['body']
|
33
35
|
@created_on = Time.parse(data_hash['created_on'])
|
34
36
|
end
|
37
|
+
|
38
|
+
def status_at_least?(other_status)
|
39
|
+
self.class.valid_status?(other_status) && (status_ranking(status) >= status_ranking(other_status))
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.valid_status?(status)
|
43
|
+
STATUS_RANKING.include?(status)
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def status_ranking(status)
|
49
|
+
STATUS_RANKING.find_index(status)
|
50
|
+
end
|
35
51
|
end
|
36
52
|
end
|
37
53
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Plugin
|
3
|
+
module GitHubStatus
|
4
|
+
class Options
|
5
|
+
# Excludes 'good' as a valid choice for wanting to abort the build
|
6
|
+
ABORT_STATUSES = Plugin::GitHubStatus::Message::STATUS_RANKING.drop(1)
|
7
|
+
ABORT_CHOICES = "'#{ABORT_STATUSES.join("', '")}'"
|
8
|
+
|
9
|
+
def self.available_options
|
10
|
+
[
|
11
|
+
FastlaneCore::ConfigItem.new(key: :abort_level,
|
12
|
+
env_name: "GITHUB_STATUS_ABORT_LEVEL",
|
13
|
+
description: "The GitHub status at or above which execution should abort. Valid values are: #{ABORT_CHOICES}",
|
14
|
+
optional: true,
|
15
|
+
type: String,
|
16
|
+
default_value: nil,
|
17
|
+
verify_block: proc do |value|
|
18
|
+
valid = value.nil? || ABORT_STATUSES.include?(value)
|
19
|
+
|
20
|
+
unless valid
|
21
|
+
FastlaneCore::UI.user_error!("abort_level must be one of: #{ABORT_CHOICES}")
|
22
|
+
end
|
23
|
+
end)
|
24
|
+
]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-github_status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Furtak
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- lib/fastlane/plugin/github_status/actions/github_status_action.rb
|
107
107
|
- lib/fastlane/plugin/github_status/client.rb
|
108
108
|
- lib/fastlane/plugin/github_status/message.rb
|
109
|
+
- lib/fastlane/plugin/github_status/options.rb
|
109
110
|
- lib/fastlane/plugin/github_status/ui.rb
|
110
111
|
- lib/fastlane/plugin/github_status/version.rb
|
111
112
|
homepage: https://github.com/mfurtak/fastlane-plugin-github_status
|
@@ -131,6 +132,7 @@ rubyforge_project:
|
|
131
132
|
rubygems_version: 2.4.5.1
|
132
133
|
signing_key:
|
133
134
|
specification_version: 4
|
134
|
-
summary: Provides the ability to
|
135
|
+
summary: Provides the ability to display and act upon GitHub server status as part
|
136
|
+
of your build
|
135
137
|
test_files: []
|
136
138
|
has_rdoc:
|