watchbuild 0.1.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +24 -50
- data/bin/watchbuild +5 -2
- data/lib/watchbuild.rb +1 -0
- data/lib/watchbuild/options.rb +34 -7
- data/lib/watchbuild/runner.rb +86 -27
- data/lib/watchbuild/version.rb +2 -2
- metadata +39 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a03ca1f40b90511ba492c3b27da024554abc0c5abf6bcdd5b67ca36051cfc74e
|
4
|
+
data.tar.gz: 7c2eef0896e8bfd34b15cc65ed7562fc05faba03b8ba77ea2464593620c1ae90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94e2dd7cbad063ea42b536e2e406eb264d72d5f9f0d667470d0eb508f5b5f3bd7cfeb8d332be900a79a30c76fd5d5b13213409bfad0ba6a82c2a5e5b40c91cc8
|
7
|
+
data.tar.gz: a4f47cf386d5dc91da2398355b80faa6558afd0f5852a6bf6059597574a555413fb3c5dece3c29cf3e6e0a2ea1916a29c092bbcc4127e5e26b5fa2440d91aba9
|
data/README.md
CHANGED
@@ -1,25 +1,11 @@
|
|
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=".assets/fastlane.png" width="150" />
|
4
4
|
<br />
|
5
5
|
fastlane
|
6
6
|
</a>
|
7
7
|
</h3>
|
8
|
-
|
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> •
|
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>
|
22
|
-
</p>
|
8
|
+
|
23
9
|
-------
|
24
10
|
|
25
11
|
WatchBuild
|
@@ -29,31 +15,32 @@ WatchBuild
|
|
29
15
|
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/watchbuild/blob/master/LICENSE)
|
30
16
|
[![Gem](https://img.shields.io/gem/v/watchbuild.svg?style=flat)](http://rubygems.org/gems/watchbuild)
|
31
17
|
|
32
|
-
###### Get a notification once your
|
18
|
+
###### Get a notification once your App Store Connect build is finished processing
|
33
19
|
|
34
|
-
<img src="assets/screenshot.png" width=350>
|
20
|
+
<img src=".assets/screenshot.png" width=350>
|
21
|
+
<br>
|
22
|
+
<img src=".assets/slack-screenshot.png" width=350>
|
35
23
|
|
36
|
-
When you upload a new binary from Xcode to
|
24
|
+
When you upload a new binary from Xcode to App Store Connect, you have to wait until it's done processing before you can submit it to the App Store.
|
37
25
|
|
38
|
-
As the [#iosprocessingtime](https://twitter.com/search?q=%23iosprocessingtime) varies from a few minutes to multiple hours, it's easy to forget to check
|
26
|
+
As the [#iosprocessingtime](https://twitter.com/search?q=%23iosprocessingtime) varies from a few minutes to multiple hours, it's easy to forget to check App Store Connect to see if the build is ready. WatchBuild lets you know as soon as it is done.
|
39
27
|
|
40
|
-
WatchBuild is a simple standalone tool that shows a notification once your newly uploaded build was successfully processed by
|
28
|
+
WatchBuild is a simple standalone tool that shows a notification once your newly uploaded build was successfully processed by App Store Connect.
|
41
29
|
|
42
|
-
Once the build is ready to be pushed to TestFlight or for review, you get a
|
30
|
+
Once the build is ready to be pushed to TestFlight or for review, you get a macOS notification. You can even directly click on the notification to open the build on App Store Connect.
|
43
31
|
|
44
32
|
### Why use WatchBuild?
|
45
33
|
|
46
|
-
WatchBuild is a standalone tool and can be used without any of the other [fastlane tools](https://fastlane.tools). This is *big*, since you can use WatchBuild also if you use Xcode to upload your app.
|
34
|
+
WatchBuild is a standalone tool and can be used without any of the other [fastlane tools](https://fastlane.tools). This is *big*, since you can use WatchBuild also if you use Xcode to upload your app.
|
47
35
|
|
48
|
-
This tool is not a replacement for [deliver](https://github.com/fastlane/deliver) (Upload metadata and builds to
|
36
|
+
This tool is not a replacement for [deliver](https://github.com/fastlane/fastlane/tree/master/deliver) (Upload metadata and builds to App Store Connect) or [pilot](https://github.com/fastlane/fastlane/tree/master/pilot) (Upload and distribute new builds to TestFlight), but is meant as a small helpful utility with the main purpose to wait for the binary processing to be finished.
|
49
37
|
|
50
38
|
Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.com/FastlaneTools)
|
51
39
|
|
52
40
|
-------
|
53
41
|
<p align="center">
|
54
|
-
<a href="#installation">Installation</a> •
|
55
|
-
<a href="#usage">Usage</a> •
|
56
|
-
<a href="#tips">Tips</a> •
|
42
|
+
<a href="#installation">Installation</a> •
|
43
|
+
<a href="#usage">Usage</a> •
|
57
44
|
<a href="#need-help">Need help?</a>
|
58
45
|
</p>
|
59
46
|
|
@@ -75,39 +62,26 @@ You can pass your bundle identifier and username like this:
|
|
75
62
|
|
76
63
|
watchbuild -a com.krausefx.app -u felix@krausefx.com
|
77
64
|
|
65
|
+
You can also include a Slack webhook url for notifications via Slack:
|
66
|
+
|
67
|
+
watchbuild -a com.krausefx.app -u felix@krausefx.com --slack_url https://hooks.slack.com/services/<your-webhook>
|
68
|
+
|
78
69
|
For a list of available parameters and commands run
|
79
70
|
|
80
71
|
watchbuild --help
|
81
72
|
|
82
|
-
<img src="assets/terminal.png">
|
73
|
+
<img src=".assets/terminal.png">
|
83
74
|
|
84
75
|
## How is my password stored?
|
85
76
|
|
86
|
-
`WatchBuild` uses the secure [CredentialsManager](https://github.com/fastlane/credentials_manager) from [fastlane](https://fastlane.tools) that stores credentials in your local keychain.
|
87
|
-
|
88
|
-
# Tips
|
89
|
-
## [`fastlane`](https://fastlane.tools) Toolchain
|
90
|
-
|
91
|
-
- [`fastlane`](https://fastlane.tools): Connect all deployment tools into one streamlined workflow
|
92
|
-
- [`deliver`](https://github.com/fastlane/deliver): Upload screenshots, metadata and your app to the App Store
|
93
|
-
- [`snapshot`](https://github.com/fastlane/snapshot): Automate taking localized screenshots of your iOS app on every device
|
94
|
-
- [`frameit`](https://github.com/fastlane/frameit): Quickly put your screenshots into the right device frames
|
95
|
-
- [`pem`](https://github.com/fastlane/pem): Automatically generate and renew your push notification profiles
|
96
|
-
- [`sigh`](https://github.com/fastlane/sigh): Because you would rather spend your time building stuff than fighting provisioning
|
97
|
-
- [`produce`](https://github.com/fastlane/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
|
98
|
-
- [`cert`](https://github.com/fastlane/cert): Automatically create and maintain iOS code signing certificates
|
99
|
-
- [`spaceship`](https://github.com/fastlane/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
|
100
|
-
- [`pilot`](https://github.com/fastlane/pilot): The best way to manage your TestFlight testers and builds from your terminal
|
101
|
-
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
102
|
-
- [`gym`](https://github.com/fastlane/gym): Building your iOS apps has never been easier
|
103
|
-
- [`scan`](https://github.com/fastlane/scan): The easiest way to run tests of your iOS and Mac app
|
104
|
-
- [`match`](https://github.com/fastlane/match): Easily sync your certificates and profiles across your team using git
|
105
|
-
|
106
|
-
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
77
|
+
`WatchBuild` uses the secure [CredentialsManager](https://github.com/fastlane/fastlane/tree/master/credentials_manager) from [fastlane](https://fastlane.tools) that stores credentials in your local keychain.
|
107
78
|
|
108
79
|
# Need help?
|
109
80
|
Please submit an issue on GitHub and provide information about your setup
|
110
81
|
|
82
|
+
# Code of Conduct
|
83
|
+
Help us keep `watchbuild` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
|
84
|
+
|
111
85
|
# License
|
112
86
|
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
113
87
|
|
data/bin/watchbuild
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
3
|
+
$LOAD_PATH.push File.expand_path('../../lib', __FILE__)
|
4
4
|
|
5
5
|
require 'watchbuild'
|
6
6
|
require 'commander'
|
@@ -13,6 +13,7 @@ class WatchBuildApplication
|
|
13
13
|
include Commander::Methods
|
14
14
|
|
15
15
|
def run
|
16
|
+
program :name, 'watchbuild'
|
16
17
|
program :version, WatchBuild::VERSION
|
17
18
|
program :description, WatchBuild::DESCRIPTION
|
18
19
|
program :help, 'Author', 'Felix Krause <watchbuild@krausefx.com>'
|
@@ -20,13 +21,15 @@ class WatchBuildApplication
|
|
20
21
|
program :help, 'GitHub', 'https://github.com/fastlane/watchbuild'
|
21
22
|
program :help_formatter, :compact
|
22
23
|
|
24
|
+
global_option('--verbose') { $verbose = true }
|
25
|
+
|
23
26
|
FastlaneCore::CommanderGenerator.new.generate(WatchBuild::Options.available_options)
|
24
27
|
|
25
28
|
command :run do |c|
|
26
29
|
c.syntax = 'watchbuild'
|
27
30
|
c.description = 'Renews the certificate (in case it expired) and outputs the path to the generated file'
|
28
31
|
|
29
|
-
c.action do |
|
32
|
+
c.action do |_args, options|
|
30
33
|
WatchBuild.config = FastlaneCore::Configuration.create(WatchBuild::Options.available_options, options.__hash__)
|
31
34
|
WatchBuild::Runner.new.run
|
32
35
|
end
|
data/lib/watchbuild.rb
CHANGED
data/lib/watchbuild/options.rb
CHANGED
@@ -9,15 +9,42 @@ module WatchBuild
|
|
9
9
|
|
10
10
|
[
|
11
11
|
FastlaneCore::ConfigItem.new(key: :app_identifier,
|
12
|
-
short_option:
|
13
|
-
env_name:
|
14
|
-
description:
|
12
|
+
short_option: '-a',
|
13
|
+
env_name: 'APP_IDENTIFIER',
|
14
|
+
description: 'The bundle identifier of your app',
|
15
|
+
code_gen_sensitive: true,
|
15
16
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)),
|
16
17
|
FastlaneCore::ConfigItem.new(key: :username,
|
17
|
-
short_option:
|
18
|
-
env_name:
|
19
|
-
description:
|
20
|
-
|
18
|
+
short_option: '-u',
|
19
|
+
env_name: 'FASTLANE_USER',
|
20
|
+
description: 'Your Apple ID Username',
|
21
|
+
code_gen_sensitive: true,
|
22
|
+
default_value: user),
|
23
|
+
FastlaneCore::ConfigItem.new(key: :itc_team_id,
|
24
|
+
short_option: '-k',
|
25
|
+
env_name: 'FASTLANE_ITC_TEAM_ID',
|
26
|
+
description: "The ID of your App Store Connect team if you're in multiple teams",
|
27
|
+
optional: true,
|
28
|
+
code_gen_sensitive: true,
|
29
|
+
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_id),
|
30
|
+
default_value_dynamic: true),
|
31
|
+
FastlaneCore::ConfigItem.new(key: :itc_team_name,
|
32
|
+
short_option: '-p',
|
33
|
+
env_name: 'FASTLANE_ITC_TEAM_NAME',
|
34
|
+
description: "The name of your App Store Connect team if you're in multiple teams",
|
35
|
+
optional: true,
|
36
|
+
code_gen_sensitive: true,
|
37
|
+
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_name),
|
38
|
+
default_value_dynamic: true),
|
39
|
+
FastlaneCore::ConfigItem.new(key: :sample_only_once,
|
40
|
+
description: 'Only check for the build once, instead of waiting for it to process',
|
41
|
+
is_string: false,
|
42
|
+
default_value: false),
|
43
|
+
FastlaneCore::ConfigItem.new(key: :slack_url,
|
44
|
+
env_name: 'SLACK_URL',
|
45
|
+
description: 'Provide a slack webhook URL to notify a channel of a build',
|
46
|
+
is_string: true,
|
47
|
+
default_value: "")
|
21
48
|
]
|
22
49
|
end
|
23
50
|
end
|
data/lib/watchbuild/runner.rb
CHANGED
@@ -8,51 +8,78 @@ module WatchBuild
|
|
8
8
|
# returns the path the newly created provisioning profile (in /tmp usually)
|
9
9
|
def run
|
10
10
|
FastlaneCore::PrintTable.print_values(config: WatchBuild.config,
|
11
|
-
|
12
|
-
|
11
|
+
hide_keys: [],
|
12
|
+
title: "Summary for WatchBuild #{WatchBuild::VERSION}")
|
13
|
+
|
14
|
+
UI.message("Starting login with user '#{WatchBuild.config[:username]}'")
|
15
|
+
|
16
|
+
ENV['FASTLANE_ITC_TEAM_ID'] = WatchBuild.config[:itc_team_id] if WatchBuild.config[:itc_team_id]
|
17
|
+
ENV['FASTLANE_ITC_TEAM_NAME'] = WatchBuild.config[:itc_team_name] if WatchBuild.config[:itc_team_name]
|
18
|
+
ENV['SLACK_URL'] = WatchBuild.config[:slack_url]
|
13
19
|
|
14
|
-
Helper.log.info "Starting login with user '#{WatchBuild.config[:username]}'"
|
15
20
|
Spaceship::Tunes.login(WatchBuild.config[:username], nil)
|
16
|
-
|
21
|
+
Spaceship::Tunes.select_team
|
22
|
+
UI.message('Successfully logged in')
|
17
23
|
|
18
24
|
start = Time.now
|
19
|
-
build = wait_for_build
|
25
|
+
build = wait_for_build(start)
|
20
26
|
minutes = ((Time.now - start) / 60).round
|
21
27
|
notification(build, minutes)
|
22
28
|
end
|
23
29
|
|
24
|
-
def wait_for_build
|
25
|
-
|
30
|
+
def wait_for_build(start_time)
|
31
|
+
UI.user_error!("Could not find app with app identifier #{WatchBuild.config[:app_identifier]}") unless app
|
26
32
|
|
27
33
|
loop do
|
28
34
|
begin
|
29
35
|
build = find_build
|
30
36
|
return build if build.processing == false
|
31
|
-
|
37
|
+
|
38
|
+
seconds_elapsed = (Time.now - start_time).to_i.abs
|
39
|
+
case seconds_elapsed
|
40
|
+
when 0..59
|
41
|
+
time_elapsed = Time.at(seconds_elapsed).utc.strftime '%S seconds'
|
42
|
+
when 60..3599
|
43
|
+
time_elapsed = Time.at(seconds_elapsed).utc.strftime '%M:%S minutes'
|
44
|
+
else
|
45
|
+
time_elapsed = Time.at(seconds_elapsed).utc.strftime '%H:%M:%S hours'
|
46
|
+
end
|
47
|
+
|
48
|
+
UI.message("Waiting #{time_elapsed} for App Store Connect to process the build #{build.train_version} (#{build.build_version})... this might take a while...")
|
32
49
|
rescue => ex
|
33
|
-
|
34
|
-
|
50
|
+
UI.error(ex)
|
51
|
+
UI.message('Something failed... trying again to recover')
|
52
|
+
end
|
53
|
+
if WatchBuild.config[:sample_only_once] == false
|
54
|
+
sleep 30
|
55
|
+
else
|
56
|
+
break
|
35
57
|
end
|
36
|
-
sleep 30
|
37
58
|
end
|
38
59
|
nil
|
39
60
|
end
|
40
61
|
|
41
62
|
def notification(build, minutes)
|
42
|
-
|
63
|
+
if build.nil?
|
64
|
+
UI.message 'Application build is still processing'
|
65
|
+
return
|
66
|
+
end
|
43
67
|
|
44
|
-
url = "https://
|
45
|
-
TerminalNotifier.notify("Build finished processing",
|
46
|
-
title: build.app_name,
|
47
|
-
subtitle: "#{build.train_version} (#{build.build_version})",
|
48
|
-
execute: "open '#{url}'")
|
68
|
+
url = "https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/#{@app.apple_id}/activity/ios/builds/#{build.train_version}/#{build.build_version}/details"
|
49
69
|
|
50
|
-
|
70
|
+
slack_url = ENV['SLACK_URL'].to_s
|
71
|
+
if !slack_url.empty?
|
72
|
+
notify_slack(build, minutes, slack_url)
|
73
|
+
else
|
74
|
+
notify_terminal(build, minutes, url)
|
75
|
+
end
|
76
|
+
|
77
|
+
UI.success('Successfully finished processing the build')
|
51
78
|
if minutes > 0 # it's 0 minutes if there was no new build uploaded
|
52
|
-
|
53
|
-
|
79
|
+
UI.message('You can now tweet: ')
|
80
|
+
UI.important("App Store Connect #iosprocessingtime #{minutes} minutes")
|
54
81
|
end
|
55
|
-
|
82
|
+
UI.message(url)
|
56
83
|
end
|
57
84
|
|
58
85
|
private
|
@@ -61,20 +88,52 @@ module WatchBuild
|
|
61
88
|
@app ||= Spaceship::Application.find(WatchBuild.config[:app_identifier])
|
62
89
|
end
|
63
90
|
|
91
|
+
def notify_slack(build, minutes, url)
|
92
|
+
require 'net/http'
|
93
|
+
require 'uri'
|
94
|
+
require 'json'
|
95
|
+
|
96
|
+
message = "App Store build #{build.train_version} (#{build.build_version}) has finished processing in #{minutes} minutes"
|
97
|
+
slack_url = URI.parse(url)
|
98
|
+
slack_message = {
|
99
|
+
"text": message
|
100
|
+
}
|
101
|
+
|
102
|
+
header = {'Content-Type': 'application/json'}
|
103
|
+
|
104
|
+
http = Net::HTTP.new(slack_url.host, slack_url.port)
|
105
|
+
http.use_ssl = true
|
106
|
+
request = Net::HTTP::Post.new(slack_url.request_uri, header)
|
107
|
+
request.body = slack_message.to_json
|
108
|
+
response = http.request(request)
|
109
|
+
|
110
|
+
if response.kind_of?(Net::HTTPSuccess)
|
111
|
+
UI.success('Message sent to Slack.')
|
112
|
+
else
|
113
|
+
UI.user_error!('Error sending Slack notification.')
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def notify_terminal(build, minutes, url)
|
118
|
+
require 'terminal-notifier'
|
119
|
+
|
120
|
+
TerminalNotifier.notify('Build finished processing',
|
121
|
+
title: build.app_name,
|
122
|
+
subtitle: "#{build.train_version} (#{build.build_version})",
|
123
|
+
execute: "open '#{url}'")
|
124
|
+
end
|
125
|
+
|
64
126
|
def find_build
|
65
127
|
build = nil
|
66
128
|
app.latest_version.candidate_builds.each do |b|
|
67
|
-
if !build
|
68
|
-
build = b
|
69
|
-
end
|
129
|
+
build = b if !build || b.upload_date > build.upload_date
|
70
130
|
end
|
71
131
|
|
72
132
|
unless build
|
73
|
-
|
74
|
-
raise "Could not find build".red
|
133
|
+
UI.user_error!("No processing builds available for app #{WatchBuild.config[:app_identifier]}")
|
75
134
|
end
|
76
135
|
|
77
|
-
|
136
|
+
build
|
78
137
|
end
|
79
138
|
end
|
80
139
|
end
|
data/lib/watchbuild/version.rb
CHANGED
metadata
CHANGED
@@ -1,49 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watchbuild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: fastlane
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 2.0.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 3.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 2.0.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: spaceship
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 0.18.0
|
40
|
-
type: :runtime
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.18.0
|
32
|
+
version: 3.0.0
|
47
33
|
- !ruby/object:Gem::Dependency
|
48
34
|
name: terminal-notifier
|
49
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,16 +62,16 @@ dependencies:
|
|
76
62
|
name: rake
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
78
64
|
requirements:
|
79
|
-
- - "
|
65
|
+
- - "<"
|
80
66
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
67
|
+
version: '12'
|
82
68
|
type: :development
|
83
69
|
prerelease: false
|
84
70
|
version_requirements: !ruby/object:Gem::Requirement
|
85
71
|
requirements:
|
86
|
-
- - "
|
72
|
+
- - "<"
|
87
73
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
74
|
+
version: '12'
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
76
|
name: rspec
|
91
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +86,20 @@ dependencies:
|
|
100
86
|
- - "~>"
|
101
87
|
- !ruby/object:Gem::Version
|
102
88
|
version: 3.1.0
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rspec_junit_formatter
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 0.2.3
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 0.2.3
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: pry
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,16 +118,16 @@ dependencies:
|
|
118
118
|
name: yard
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- - "
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: 0.
|
123
|
+
version: 0.9.11
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- - "
|
128
|
+
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.
|
130
|
+
version: 0.9.11
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: webmock
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,34 +157,20 @@ dependencies:
|
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: '0'
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
160
|
+
name: rubocop
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - ">="
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
165
|
+
version: 0.49.0
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - ">="
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
173
|
-
|
174
|
-
name: rubocop
|
175
|
-
requirement: !ruby/object:Gem::Requirement
|
176
|
-
requirements:
|
177
|
-
- - "~>"
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: '0.34'
|
180
|
-
type: :development
|
181
|
-
prerelease: false
|
182
|
-
version_requirements: !ruby/object:Gem::Requirement
|
183
|
-
requirements:
|
184
|
-
- - "~>"
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version: '0.34'
|
187
|
-
description: Get a notification once your iTunes Connect build is finished processing
|
172
|
+
version: 0.49.0
|
173
|
+
description: Get a notification once your App Store Connect build is finished processing
|
188
174
|
email:
|
189
175
|
- watchbuild@krausefx.com
|
190
176
|
executables:
|
@@ -203,7 +189,7 @@ homepage: https://fastlane.tools
|
|
203
189
|
licenses:
|
204
190
|
- MIT
|
205
191
|
metadata: {}
|
206
|
-
post_install_message:
|
192
|
+
post_install_message:
|
207
193
|
rdoc_options: []
|
208
194
|
require_paths:
|
209
195
|
- lib
|
@@ -218,10 +204,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
204
|
- !ruby/object:Gem::Version
|
219
205
|
version: '0'
|
220
206
|
requirements: []
|
221
|
-
rubyforge_project:
|
222
|
-
rubygems_version: 2.
|
223
|
-
signing_key:
|
207
|
+
rubyforge_project:
|
208
|
+
rubygems_version: 2.7.6.2
|
209
|
+
signing_key:
|
224
210
|
specification_version: 4
|
225
|
-
summary: Get a notification once your
|
211
|
+
summary: Get a notification once your App Store Connect build is finished processing
|
226
212
|
test_files: []
|
227
|
-
has_rdoc:
|