hotswap 0.1.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31ba7d63578622f3d225e863e638be171c949af98f6497019a3ce01c7371c71d
4
- data.tar.gz: 772a73f952822313044f1a28d1b5013458eafa0685772f97bdefe41372ed933b
3
+ metadata.gz: 94b316259e5493780b12f54e304280ebf4e32d1635eee5eae41ffdbbe48400ce
4
+ data.tar.gz: dfa1cc6a8905f93e9b24eb9f6527f97601992b8ee7af6ce7b63ee7ff1b714678
5
5
  SHA512:
6
- metadata.gz: f7c028345800763facf9a6a76c17d34f5b3e8c6aa930778f76f28e731248024a67c9f0b6fba6d548aa6562459c8a2c00d76aa4f4b2d3815fdf87c81e9518e2d1
7
- data.tar.gz: e4c172d547d26c443030c720e537f95bfad0232f7a28f72458e8fb367f7b4f1c54d7a840f6c825c1bdf1892690e4e3e1c4e72e3c438b57eafa8ff9513793539f
6
+ metadata.gz: 7b93ec7dd2f3d2914ddf0280e79579a1c408975353e10a8fd6679c2eb0deafab1685e5db60ddac443d4da2117088f65017dcffad5e50b6256aea79f4440806aa
7
+ data.tar.gz: be36ea39ce6ff863689fae39ca946e2b4eb7f33209d65d45d3c824887106bc3f3f4b609db7478197262b153fe4bf48f51d2be98f091e46dec041bc0978ed0d55
data/exe/hotswap CHANGED
@@ -23,10 +23,15 @@ sock = UNIXSocket.new(socket_path)
23
23
  args = ARGV.map { |a| Shellwords.escape(a) }.join(" ")
24
24
  sock.write(args + "\n")
25
25
 
26
- # Pipe stdin to socket (in background thread)
27
- writer = Thread.new do
28
- IO.copy_stream($stdin, sock) rescue nil
29
- sock.close_write rescue nil
26
+ # Pipe stdin to socket (only if data is being piped in)
27
+ writer = nil
28
+ if !$stdin.tty?
29
+ writer = Thread.new do
30
+ IO.copy_stream($stdin, sock) rescue nil
31
+ sock.close_write rescue nil
32
+ end
33
+ else
34
+ sock.close_write
30
35
  end
31
36
 
32
37
  # Pipe stderr socket to local stderr (in background thread)
@@ -40,7 +45,7 @@ end
40
45
  # Pipe socket output to stdout
41
46
  IO.copy_stream(sock, $stdout) rescue nil
42
47
 
43
- writer.join
48
+ writer&.join
44
49
  stderr_reader&.join
45
50
  stderr_sock&.close rescue nil
46
51
  sock.close rescue nil
data/lib/hotswap/cli.rb CHANGED
@@ -6,7 +6,18 @@ require "sqlite3"
6
6
  module Hotswap
7
7
  class CLI < Thor
8
8
  def self.exit_on_failure?
9
- true
9
+ false
10
+ end
11
+
12
+ class Shell < Thor::Shell::Basic
13
+ def initialize(stdout, stderr)
14
+ super()
15
+ @_stdout = stdout
16
+ @_stderr = stderr
17
+ end
18
+
19
+ def stdout = @_stdout
20
+ def stderr = @_stderr
10
21
  end
11
22
 
12
23
  # Thread-safe IO: each connection gets its own IO via thread-local storage
@@ -15,7 +26,11 @@ module Hotswap
15
26
  Thread.current[:hotswap_stdin] = stdin
16
27
  Thread.current[:hotswap_stdout] = stdout
17
28
  Thread.current[:hotswap_stderr] = stderr
18
- start(args)
29
+
30
+ args = ["help"] if args.empty?
31
+ start(args, shell: Shell.new(stdout, stderr))
32
+ rescue SystemExit
33
+ # Thor calls exit on errors — catch it so we don't kill the server
19
34
  ensure
20
35
  Thread.current[:hotswap_stdin] = nil
21
36
  Thread.current[:hotswap_stdout] = nil
@@ -1,3 +1,3 @@
1
1
  module Hotswap
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hotswap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler