solo-rb 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13bb83ba0be61b946f7a7d5e536763cde28f50109a1b077c6666c3249da4f596
4
- data.tar.gz: b9e2a15a899c976f8b46fd8185b9f1a51a543102238899a6f27d17f95ca5ace5
3
+ metadata.gz: 4014fde68b2c883f67c864f9025b616653facd634df73a654f5564abe9dee8b7
4
+ data.tar.gz: cc85ce2b449fafbf0fa7f9a701f46aca481e4e2cae355777c73e464134d332f4
5
5
  SHA512:
6
- metadata.gz: 1f5d62274511d1bc30208be743c3f294eb39f918f431daed879d2147285c509e27b50c7e766ed54b4a36ba298432124ee72764cb69c55705d1aa238746b71195
7
- data.tar.gz: f530459297eae2bb30aa7aa7f0cf3598a033bce4a84458fb910c7d83c00f8cf73d2d0cb23a8f195106299cb1ca235e85b304b19c2f7363558c2f1903ddf93985
6
+ metadata.gz: 87f55aabbd3bf5a8e9a11383abc8df1c8df8199e3a7154704b3e7ce1e5f9a7beed026daabe119cd5d602eb3d86bf742cc056867af0c54514f2594328fb235c85
7
+ data.tar.gz: 8303771ce25767bdecd3d50210d0bc73422e54e9780bb0566c769500ab269aafbb6a756f398a3d34095322333589d1b47d5d3a02127ff8e36448850b1e39aab9
data/bin/solo CHANGED
@@ -1,18 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ lib = File.expand_path("lib", __dir__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
2
4
 
3
- require "bundler/setup"
4
5
  require "solo"
6
+ require "solo/cli"
5
7
 
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
8
+ Solo::CLI.call
@@ -1,41 +1,11 @@
1
1
  require "solo/version"
2
-
3
- require 'rationalist'
4
2
  require 'socket'
5
3
 
6
4
  module Solo
7
- class Error < StandardError; end
8
5
 
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|
6
+ def self.call port, &block
7
+ TCPServer.open("127.0.0.1", port) do |serv|
36
8
  block.call
37
9
  end
38
10
  end
39
-
40
11
  end
41
-
@@ -0,0 +1,30 @@
1
+ require 'optparse'
2
+
3
+ module Solo
4
+ module CLI
5
+ def self.call(argv=ARGV)
6
+ trap("INT") { puts "Shutting down..."; exit; }
7
+ begin
8
+ opts = parse_opts argv
9
+ Solo.call(opts[:port]) do
10
+ system(*argv)
11
+ end
12
+ rescue
13
+ STDERR.puts "#{$!}"
14
+ abort
15
+ end
16
+ end
17
+ def self.parse_opts argv
18
+ opts = {}
19
+ opts_parser = OptionParser.new do |parser|
20
+ parser.banner = "Usage: solo --port PORT COMMAND"
21
+ parser.on("-p", "--port [PORT]", Integer, "Set the PORT used to host the server")
22
+ end
23
+ opts_parser.parse!(argv, into: opts)
24
+ unless opts[:port] && opts[:port] > 0 && opts[:port] < 65565
25
+ raise ArgumentError.new("Invalid port: #{opts[:port]} \n#{opts_parser}")
26
+ end
27
+ opts
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Solo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solo-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Rasor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-24 00:00:00.000000000 Z
11
+ date: 2019-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
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
55
  description: A port of Solo, a perl script, into a gem that prevents a program from
70
56
  running more than one copy at a time
71
57
  email:
@@ -77,6 +63,7 @@ extra_rdoc_files: []
77
63
  files:
78
64
  - bin/solo
79
65
  - lib/solo.rb
66
+ - lib/solo/cli.rb
80
67
  - lib/solo/version.rb
81
68
  homepage: https://github.com/tlrasor/solo-rb
82
69
  licenses: