wait-for-socket 0.1

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wait-for-socket +39 -0
  3. metadata +60 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0e82545cc5b719664b46658ffd246743609cf247edebe9693fcd843585cb9684
4
+ data.tar.gz: 12482c72b32d1a9cb9a280037285fbacf82caa1cc95b8a2280f0ccd325481d10
5
+ SHA512:
6
+ metadata.gz: fc583da882110d6b996acfe837c139e9d5cfa89b9abc681270c07c8948cb4b879f2fbff11ea143e4bd8c0469066bc506bbe50991907c89924cd58697040f94e3
7
+ data.tar.gz: 63684a3d29ed0e9bb4bf99b42bb04e66d2a4d23442d37ecd9e20fea24226b958ae34a7c0bc80d6b9c1799a2e0349a1c76ea9f54eb3454e018cbbf35cfde9ff0a
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'clamp'
4
+ require 'socket'
5
+
6
+ Clamp do
7
+
8
+ option "--description", "<service name>", "description of the service we're waiting for", required: true
9
+ option "--address", "<host or IP>", "the hostname or IP to monitor", required: true
10
+ option "--port", "<port>", "the port number to monitor", required: true
11
+
12
+ def execute
13
+ puts "Waiting for #{description} to become available at #{address}:#{port_int}"
14
+ loop do
15
+ if socket_reachable?(address, port_int)
16
+ puts
17
+ puts "#{description} ready"
18
+ break
19
+ else
20
+ $stderr.write "."
21
+ sleep 2
22
+ end
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def port_int
29
+ port.to_i
30
+ end
31
+
32
+ def socket_reachable?(hostname, port)
33
+ Socket.tcp(hostname, port, connect_timeout: 2) {}
34
+ true
35
+ rescue StandardError => e
36
+ false
37
+ end
38
+
39
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wait-for-socket
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - James Healy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-09-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: clamp
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ description: A script that waits for a TCP socket to be available at a given address
28
+ email:
29
+ - james@yob.id.au
30
+ executables:
31
+ - wait-for-socket
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - bin/wait-for-socket
36
+ homepage: http://github.com/yob/wait-for-socket
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 1.9.3
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.7.6
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: A script that waits for a TCP socket to be available at a given address
60
+ test_files: []