watchbuild 0.1.3 → 0.1.4
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 +39 -36
- data/bin/watchbuild +2 -0
- data/lib/watchbuild/options.rb +5 -1
- data/lib/watchbuild/runner.rb +34 -15
- data/lib/watchbuild/version.rb +1 -1
- metadata +28 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 17678285bf3e93c8ca64a66cf551e4847c1413a2
|
|
4
|
+
data.tar.gz: 5cc363ec3f85c5c00a06869eaf62e78ac497339e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 56185ea87a9c32a028b25c35b2f55f2dbd9b6b8a7853e545ae3e851d968dc42f2a300da698834235a9e21ce24af02159ec311cca43647981d0a320e08c5ea980
|
|
7
|
+
data.tar.gz: 15ee18f38b247e5aef2869af8d6cfb842597c0e9ed549fbc8e80026d629078d4bf254ce9f886762674b88363dd40d746cee2bd7dee8fbad2e9f8dc4ec4685dba
|
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
|
|
|
@@ -26,7 +26,7 @@ WatchBuild
|
|
|
26
26
|
============
|
|
27
27
|
|
|
28
28
|
[](https://twitter.com/FastlaneTools)
|
|
29
|
-
[](https://github.com/fastlane/
|
|
29
|
+
[](https://github.com/fastlane/fastlane/blob/master/watchbuild/LICENSE)
|
|
30
30
|
[](http://rubygems.org/gems/watchbuild)
|
|
31
31
|
|
|
32
32
|
###### Get a notification once your iTunes Connect build is finished processing
|
|
@@ -37,23 +37,23 @@ When you upload a new binary from Xcode to iTunes Connect, you have to wait unti
|
|
|
37
37
|
|
|
38
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 iTunes Connect to see if the build is ready. WatchBuild lets you know as soon as it is done.
|
|
39
39
|
|
|
40
|
-
WatchBuild is a simple standalone tool that shows a notification once your newly uploaded build was successfully processed by iTunes Connect.
|
|
40
|
+
WatchBuild is a simple standalone tool that shows a notification once your newly uploaded build was successfully processed by iTunes Connect.
|
|
41
41
|
|
|
42
42
|
Once the build is ready to be pushed to TestFlight or for review, you get a OS X notification. You can even directly click on the notification to open the build on iTunes Connect.
|
|
43
43
|
|
|
44
44
|
### Why use WatchBuild?
|
|
45
45
|
|
|
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.
|
|
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.
|
|
47
47
|
|
|
48
|
-
This tool is not a replacement for [deliver](https://github.com/fastlane/deliver) (Upload metadata and builds to iTunes Connect) or [pilot](https://github.com/fastlane/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.
|
|
48
|
+
This tool is not a replacement for [deliver](https://github.com/fastlane/fastlane/tree/master/deliver) (Upload metadata and builds to iTunes 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
49
|
|
|
50
50
|
Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.com/FastlaneTools)
|
|
51
51
|
|
|
52
52
|
-------
|
|
53
53
|
<p align="center">
|
|
54
|
-
<a href="#installation">Installation</a> •
|
|
55
|
-
<a href="#usage">Usage</a> •
|
|
56
|
-
<a href="#tips">Tips</a> •
|
|
54
|
+
<a href="#installation">Installation</a> •
|
|
55
|
+
<a href="#usage">Usage</a> •
|
|
56
|
+
<a href="#tips">Tips</a> •
|
|
57
57
|
<a href="#need-help">Need help?</a>
|
|
58
58
|
</p>
|
|
59
59
|
|
|
@@ -83,31 +83,34 @@ For a list of available parameters and commands run
|
|
|
83
83
|
|
|
84
84
|
## How is my password stored?
|
|
85
85
|
|
|
86
|
-
`WatchBuild` uses the secure [CredentialsManager](https://github.com/fastlane/credentials_manager) from [fastlane](https://fastlane.tools) that stores credentials in your local keychain.
|
|
86
|
+
`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.
|
|
87
87
|
|
|
88
88
|
# Tips
|
|
89
89
|
## [`fastlane`](https://fastlane.tools) Toolchain
|
|
90
90
|
|
|
91
|
-
- [`fastlane`](https://fastlane.tools):
|
|
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
|
|
91
|
+
- [`fastlane`](https://fastlane.tools): The easiest way to automate building and releasing your iOS and Android apps
|
|
92
|
+
- [`deliver`](https://github.com/fastlane/fastlane/tree/master/deliver): Upload screenshots, metadata and your app to the App Store
|
|
93
|
+
- [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
|
|
94
|
+
- [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
|
|
95
|
+
- [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
|
|
96
|
+
- [`sigh`](https://github.com/fastlane/fastlane/tree/master/sigh): Because you would rather spend your time building stuff than fighting provisioning
|
|
97
|
+
- [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
|
|
98
|
+
- [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
|
|
99
|
+
- [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
|
|
100
|
+
- [`pilot`](https://github.com/fastlane/fastlane/tree/master/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/fastlane/tree/master/gym): Building your iOS apps has never been easier
|
|
103
|
+
- [`scan`](https://github.com/fastlane/fastlane/tree/master/scan): The easiest way to run tests of your iOS and Mac app
|
|
104
|
+
- [`match`](https://github.com/fastlane/fastlane/tree/master/match): Easily sync your certificates and profiles across your team using git
|
|
105
105
|
|
|
106
106
|
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
|
107
107
|
|
|
108
108
|
# Need help?
|
|
109
109
|
Please submit an issue on GitHub and provide information about your setup
|
|
110
110
|
|
|
111
|
+
# Code of Conduct
|
|
112
|
+
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).
|
|
113
|
+
|
|
111
114
|
# License
|
|
112
115
|
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
|
113
116
|
|
data/bin/watchbuild
CHANGED
|
@@ -20,6 +20,8 @@ class WatchBuildApplication
|
|
|
20
20
|
program :help, 'GitHub', 'https://github.com/fastlane/watchbuild'
|
|
21
21
|
program :help_formatter, :compact
|
|
22
22
|
|
|
23
|
+
global_option('--verbose') { $verbose = true }
|
|
24
|
+
|
|
23
25
|
FastlaneCore::CommanderGenerator.new.generate(WatchBuild::Options.available_options)
|
|
24
26
|
|
|
25
27
|
command :run do |c|
|
data/lib/watchbuild/options.rb
CHANGED
|
@@ -17,7 +17,11 @@ module WatchBuild
|
|
|
17
17
|
short_option: "-u",
|
|
18
18
|
env_name: "FASTLANE_USER",
|
|
19
19
|
description: "Your Apple ID Username",
|
|
20
|
-
default_value: user)
|
|
20
|
+
default_value: user),
|
|
21
|
+
FastlaneCore::ConfigItem.new(key: :sample_only_once,
|
|
22
|
+
description: "Only check for the build once, instead of waiting for it to process",
|
|
23
|
+
is_string: false,
|
|
24
|
+
default_value: false)
|
|
21
25
|
]
|
|
22
26
|
end
|
|
23
27
|
end
|
data/lib/watchbuild/runner.rb
CHANGED
|
@@ -11,29 +11,44 @@ module WatchBuild
|
|
|
11
11
|
hide_keys: [],
|
|
12
12
|
title: "Summary for WatchBuild #{WatchBuild::VERSION}")
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
UI.message("Starting login with user '#{WatchBuild.config[:username]}'")
|
|
15
15
|
Spaceship::Tunes.login(WatchBuild.config[:username], nil)
|
|
16
|
-
|
|
16
|
+
UI.message("Successfully logged in")
|
|
17
17
|
|
|
18
18
|
start = Time.now
|
|
19
|
-
build = wait_for_build
|
|
19
|
+
build = wait_for_build(start)
|
|
20
20
|
minutes = ((Time.now - start) / 60).round
|
|
21
21
|
notification(build, minutes)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
def wait_for_build
|
|
25
|
-
|
|
24
|
+
def wait_for_build(start_time)
|
|
25
|
+
UI.user_error!("Could not find app with app identiifer #{WatchBuild.config[:app_identifier]}") unless app
|
|
26
26
|
|
|
27
27
|
loop do
|
|
28
28
|
begin
|
|
29
29
|
build = find_build
|
|
30
30
|
return build if build.processing == false
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
seconds_elapsed = (Time.now - start_time).to_i.abs
|
|
33
|
+
case seconds_elapsed
|
|
34
|
+
when 0..59
|
|
35
|
+
time_elapsed = Time.at(seconds_elapsed).utc.strftime "%S seconds"
|
|
36
|
+
when 60..3599
|
|
37
|
+
time_elapsed = Time.at(seconds_elapsed).utc.strftime "%M:%S minutes"
|
|
38
|
+
else
|
|
39
|
+
time_elapsed = Time.at(seconds_elapsed).utc.strftime "%H:%M:%S hours"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
UI.message("Waiting #{time_elapsed} for iTunes Connect to process the build #{build.train_version} (#{build.build_version})... this might take a while...")
|
|
32
43
|
rescue => ex
|
|
33
|
-
|
|
34
|
-
|
|
44
|
+
UI.error(ex)
|
|
45
|
+
UI.message("Something failed... trying again to recover")
|
|
46
|
+
end
|
|
47
|
+
if WatchBuild.config[:sample_only_once] == false
|
|
48
|
+
sleep 30
|
|
49
|
+
else
|
|
50
|
+
break
|
|
35
51
|
end
|
|
36
|
-
sleep 30
|
|
37
52
|
end
|
|
38
53
|
nil
|
|
39
54
|
end
|
|
@@ -41,18 +56,23 @@ module WatchBuild
|
|
|
41
56
|
def notification(build, minutes)
|
|
42
57
|
require 'terminal-notifier'
|
|
43
58
|
|
|
59
|
+
if build.nil?
|
|
60
|
+
Helper.log.info "Application build is still processing"
|
|
61
|
+
return
|
|
62
|
+
end
|
|
63
|
+
|
|
44
64
|
url = "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/#{@app.apple_id}/activity/ios/builds/#{build.train_version}/#{build.build_version}/details"
|
|
45
65
|
TerminalNotifier.notify("Build finished processing",
|
|
46
66
|
title: build.app_name,
|
|
47
67
|
subtitle: "#{build.train_version} (#{build.build_version})",
|
|
48
68
|
execute: "open '#{url}'")
|
|
49
69
|
|
|
50
|
-
|
|
70
|
+
UI.success("Successfully finished processing the build")
|
|
51
71
|
if minutes > 0 # it's 0 minutes if there was no new build uploaded
|
|
52
|
-
|
|
53
|
-
|
|
72
|
+
UI.message("You can now tweet: ")
|
|
73
|
+
UI.important("iTunes Connect #iosprocessingtime #{minutes} minutes")
|
|
54
74
|
end
|
|
55
|
-
|
|
75
|
+
UI.message(url)
|
|
56
76
|
end
|
|
57
77
|
|
|
58
78
|
private
|
|
@@ -70,8 +90,7 @@ module WatchBuild
|
|
|
70
90
|
end
|
|
71
91
|
|
|
72
92
|
unless build
|
|
73
|
-
|
|
74
|
-
raise "Could not find build".red
|
|
93
|
+
UI.user_error!("No processing builds available for app #{WatchBuild.config[:app_identifier]}")
|
|
75
94
|
end
|
|
76
95
|
|
|
77
96
|
return build
|
data/lib/watchbuild/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: watchbuild
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
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-
|
|
11
|
+
date: 2016-05-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fastlane_core
|
|
@@ -16,7 +16,7 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
19
|
+
version: 0.43.1
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
22
|
version: 1.0.0
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 0.
|
|
29
|
+
version: 0.43.1
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: 1.0.0
|
|
@@ -36,14 +36,20 @@ dependencies:
|
|
|
36
36
|
requirements:
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.
|
|
39
|
+
version: 0.26.2
|
|
40
|
+
- - "<"
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 1.0.0
|
|
40
43
|
type: :runtime
|
|
41
44
|
prerelease: false
|
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
46
|
requirements:
|
|
44
47
|
- - ">="
|
|
45
48
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0.
|
|
49
|
+
version: 0.26.2
|
|
50
|
+
- - "<"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 1.0.0
|
|
47
53
|
- !ruby/object:Gem::Dependency
|
|
48
54
|
name: terminal-notifier
|
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,6 +106,20 @@ dependencies:
|
|
|
100
106
|
- - "~>"
|
|
101
107
|
- !ruby/object:Gem::Version
|
|
102
108
|
version: 3.1.0
|
|
109
|
+
- !ruby/object:Gem::Dependency
|
|
110
|
+
name: rspec_junit_formatter
|
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
|
112
|
+
requirements:
|
|
113
|
+
- - "~>"
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: 0.2.3
|
|
116
|
+
type: :development
|
|
117
|
+
prerelease: false
|
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
119
|
+
requirements:
|
|
120
|
+
- - "~>"
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: 0.2.3
|
|
103
123
|
- !ruby/object:Gem::Dependency
|
|
104
124
|
name: pry
|
|
105
125
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -176,14 +196,14 @@ dependencies:
|
|
|
176
196
|
requirements:
|
|
177
197
|
- - "~>"
|
|
178
198
|
- !ruby/object:Gem::Version
|
|
179
|
-
version:
|
|
199
|
+
version: 0.38.0
|
|
180
200
|
type: :development
|
|
181
201
|
prerelease: false
|
|
182
202
|
version_requirements: !ruby/object:Gem::Requirement
|
|
183
203
|
requirements:
|
|
184
204
|
- - "~>"
|
|
185
205
|
- !ruby/object:Gem::Version
|
|
186
|
-
version:
|
|
206
|
+
version: 0.38.0
|
|
187
207
|
description: Get a notification once your iTunes Connect build is finished processing
|
|
188
208
|
email:
|
|
189
209
|
- watchbuild@krausefx.com
|