tabry 0.3.1 → 0.3.2

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: 98d317c01ebda08f063ee1bafeb45de64356a6c91ad15eb1160e163e486612eb
4
- data.tar.gz: 681aacad039319ead3df18d910e368bccdd7e883509fa622500f0a8837fdda19
3
+ metadata.gz: aae042ca4dc5192e4462e101ecc6f70ba6e55e428dc18791ba5735cb7d90f657
4
+ data.tar.gz: ea25d08f4cc73c799f7b2987937e6639a13976a5f65a663f30edacfd7633e533
5
5
  SHA512:
6
- metadata.gz: 10aa0853e3665e5b25063d9d26ec8b8758fe1585f138067c3626f7f2cad275742e2f5cf3340e72789bcc7872f991e4f59aa8bc83f6a6083aa424309594ca12da
7
- data.tar.gz: e6bc9678da5959cc07cb0fa79051408c53f2e8516f935b8222c7d86c338a8c2c0de8d77544f6c31f06251c62478c94a27966638b6ef33199e97e273a38a46731
6
+ metadata.gz: bc7d1f309edf7c38a85cc4b46895bce5f30bf4e375777753170f970c87d17f772818cae0aea581544306c1b86fef87000b247dae2aef7587afda5d4fd163e953
7
+ data.tar.gz: a75c5a8d540a356b2d058b1c2e87aefc79139fd400cfac22965dbcf6d0acf21b908c9533d41d742570fec020065ec8bc7cbcd61a4a8381e260f12e9c117a0db8
@@ -8,6 +8,8 @@ module Tabry
8
8
  module Util
9
9
  module_function
10
10
 
11
+ SHELL_FOR_WINDOWS = ["bash", "-c"]
12
+
11
13
  def make_cmdline(cmdline, *args, echo: false, echo_only: false, merge_stderr: false)
12
14
  # Allow to pass in an array, or varargs:
13
15
  args = args.first if args.length == 1 && args.first.is_a?(Array)
@@ -31,7 +33,13 @@ module Tabry
31
33
 
32
34
  def system(*cmdline, **opts)
33
35
  cmdline = make_cmdline(*cmdline, **opts)
34
- Kernel.system cmdline if cmdline
36
+ return unless cmdline
37
+
38
+ if Gem.win_platform?
39
+ Kernel.system *SHELL_FOR_WINDOWS, cmdline
40
+ else
41
+ Kernel.system cmdline
42
+ end
35
43
  end
36
44
 
37
45
  # TODO: would be nice to get separate STDERR and STDOUT
@@ -45,7 +53,11 @@ module Tabry
45
53
 
46
54
  enoent_error = false
47
55
  begin
48
- res = `#{cmdline}`
56
+ res = if Gem.win_platform?
57
+ IO.popen([*SHELL_FOR_WINDOWS, cmdline]) { |io| io.read }
58
+ else
59
+ `#{cmdline}`
60
+ end
49
61
  rescue Errno::ENOENT
50
62
  enoent_error = true
51
63
  end
data/lib/tabry/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tabry
4
- VERSION = "0.3.1"
4
+ VERSION = "0.3.2"
5
5
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative "../../../lib/tabry/cli/util"
4
4
 
5
+ require "tempfile"
6
+
5
7
  describe Tabry::CLI::Util do
6
8
  describe ".make_cmdline" do
7
9
  it "escapes a single string" do
@@ -121,5 +123,32 @@ describe Tabry::CLI::Util do
121
123
  )
122
124
  end
123
125
  end
126
+
127
+ describe "on windows" do
128
+ before { expect(Gem).to receive(:win_platform?).and_return(true) }
129
+
130
+ it "uses bash" do
131
+ output = described_class.backtick_or_die("echo $BASH_VERSION")
132
+ expect(output).to match(/^[0-9]/)
133
+ end
134
+ end
135
+ end
136
+
137
+ describe "system" do
138
+ it "calls Kernel.system with the escaped code" do
139
+ expect(Kernel).to receive(:system).with("echo \\' > /dev/null")
140
+ described_class.system("echo %s > /dev/null", "'")
141
+ end
142
+
143
+ describe "on windows" do
144
+ before { expect(Gem).to receive(:win_platform?).and_return(true) }
145
+
146
+ it "uses bash" do
147
+ Tempfile.open do |f|
148
+ described_class.system("echo $BASH_VERSION > %s", f.path)
149
+ expect(File.read(f.path)).to match(/^[0-9]/)
150
+ end
151
+ end
152
+ end
124
153
  end
125
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tabry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Battaglia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-24 00:00:00.000000000 Z
11
+ date: 2025-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug