solo-rb 0.1.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 +7 -0
- data/bin/solo +18 -0
- data/lib/solo.rb +41 -0
- data/lib/solo/version.rb +3 -0
- metadata +106 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 13bb83ba0be61b946f7a7d5e536763cde28f50109a1b077c6666c3249da4f596
|
|
4
|
+
data.tar.gz: b9e2a15a899c976f8b46fd8185b9f1a51a543102238899a6f27d17f95ca5ace5
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 1f5d62274511d1bc30208be743c3f294eb39f918f431daed879d2147285c509e27b50c7e766ed54b4a36ba298432124ee72764cb69c55705d1aa238746b71195
|
|
7
|
+
data.tar.gz: f530459297eae2bb30aa7aa7f0cf3598a033bce4a84458fb910c7d83c00f8cf73d2d0cb23a8f195106299cb1ca235e85b304b19c2f7363558c2f1903ddf93985
|
data/bin/solo
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "solo"
|
|
5
|
+
|
|
6
|
+
begin
|
|
7
|
+
opts = Solo.parse_opts
|
|
8
|
+
trap("INT") {
|
|
9
|
+
puts "Shutting down..." unless opts[:quiet]
|
|
10
|
+
exit
|
|
11
|
+
}
|
|
12
|
+
Solo.open_server(port: opts[:port]) do
|
|
13
|
+
system(*opts[:command])
|
|
14
|
+
end
|
|
15
|
+
rescue
|
|
16
|
+
STDERR.puts "#{$!}" unless opts[:quiet]
|
|
17
|
+
exit 1
|
|
18
|
+
end
|
data/lib/solo.rb
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require "solo/version"
|
|
2
|
+
|
|
3
|
+
require 'rationalist'
|
|
4
|
+
require 'socket'
|
|
5
|
+
|
|
6
|
+
module Solo
|
|
7
|
+
class Error < StandardError; end
|
|
8
|
+
|
|
9
|
+
def self.parse_opts args=ARGV
|
|
10
|
+
opts = Rationalist.parse(
|
|
11
|
+
args,
|
|
12
|
+
boolean: ["quiet"],
|
|
13
|
+
default: { quiet: false },
|
|
14
|
+
alias: { q: "quiet", p: "port" },
|
|
15
|
+
stop_early: true
|
|
16
|
+
)
|
|
17
|
+
unless opts[:port] and (opts[:port].is_a? Integer) and (opts[:port] > 0)
|
|
18
|
+
STDERR.puts "Invalid port: #{opts[:port]}" unless opts[:quiet]
|
|
19
|
+
STDERR.puts "Usage: solo --port PORT [--quiet] -- COMMAND" unless opts[:quiet]
|
|
20
|
+
exit 1
|
|
21
|
+
end
|
|
22
|
+
if opts[:"_"].nil? or opts[:"_"].empty?
|
|
23
|
+
STDERR.puts "No command given" unless opts[:quiet]
|
|
24
|
+
STDERR.puts "Usage: solo --port PORT [--quiet] -- COMMAND" unless opts[:quiet]
|
|
25
|
+
exit 1
|
|
26
|
+
elsif opts[:"_"].length == 1
|
|
27
|
+
opts[:command] = opts[:"_"].first
|
|
28
|
+
else
|
|
29
|
+
opts[:command] = opts[:"_"]
|
|
30
|
+
end
|
|
31
|
+
opts
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.open_server port:, address: "127.0.0.1", &block
|
|
35
|
+
TCPServer.open(address, port) do |serv|
|
|
36
|
+
block.call
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
data/lib/solo/version.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: solo-rb
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Travis Rasor
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2019-10-24 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: minitest
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '5.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '5.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rationalist
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '2.0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '2.0'
|
|
69
|
+
description: A port of Solo, a perl script, into a gem that prevents a program from
|
|
70
|
+
running more than one copy at a time
|
|
71
|
+
email:
|
|
72
|
+
- travis@thathanka.org
|
|
73
|
+
executables:
|
|
74
|
+
- solo
|
|
75
|
+
extensions: []
|
|
76
|
+
extra_rdoc_files: []
|
|
77
|
+
files:
|
|
78
|
+
- bin/solo
|
|
79
|
+
- lib/solo.rb
|
|
80
|
+
- lib/solo/version.rb
|
|
81
|
+
homepage: https://github.com/tlrasor/solo-rb
|
|
82
|
+
licenses:
|
|
83
|
+
- MIT
|
|
84
|
+
metadata:
|
|
85
|
+
homepage_uri: https://github.com/tlrasor/solo-rb
|
|
86
|
+
source_code_uri: https://github.com/tlrasor/solo-rb
|
|
87
|
+
post_install_message:
|
|
88
|
+
rdoc_options: []
|
|
89
|
+
require_paths:
|
|
90
|
+
- lib
|
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - ">="
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '0'
|
|
101
|
+
requirements: []
|
|
102
|
+
rubygems_version: 3.0.3
|
|
103
|
+
signing_key:
|
|
104
|
+
specification_version: 4
|
|
105
|
+
summary: Prevents programs from running more than one copy at a time
|
|
106
|
+
test_files: []
|