lucie-cmd 0.0.12 → 0.0.13

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
  SHA1:
3
- metadata.gz: f7aebb97d2f156d55f4c1509d220ad0967f40134
4
- data.tar.gz: 0de77f3b26b949963d677741fa6c98f56718bc2b
3
+ metadata.gz: 6bcbc57fe509cfa7ca24494812a5af89113184f3
4
+ data.tar.gz: e2dc4c4c25c467287773478a09414d105b881a77
5
5
  SHA512:
6
- metadata.gz: a67a5a96aead041d89da42ae0923addf0fa6fcc9dc4d31a45e7ccaad00b49bdf5e7550ff3c125b14c27e5daa039422002f242af6f9cc352c268837e80eaccc37
7
- data.tar.gz: dd193a542a6f520e140016972d851d710ee63ce3d224b33a846e1f7f066f4c4f850305fe13150755de5c6e4ed69dd9aa928e86f906e12fad7ad5887315baa882
6
+ metadata.gz: 0ff3b5da9dce13233b9f803bd20fc1b2a2ee230d78b4077b0c1edee29afb399a28e15395cf20eb48ff735545861ba9e6748a921a716ecf87c39ae00297c27660
7
+ data.tar.gz: 7ab81b5d27644870d8a6deadc80a36b5e0042c30734e50de89caa3286a5fd6cd6262e1fa92d309c63e47b6cd89969ed091d6851f69454fb77cc1f63a50a00ec3
@@ -7,7 +7,8 @@ module Lucie
7
7
 
8
8
  def sh(*args)
9
9
  @commands_helper ||= CommandsHelper.new
10
- @commands_helper.sh(*args)
10
+ status = @commands_helper.sh(*args)
11
+ status.to_i == 0
11
12
  end
12
13
 
13
14
  def cd(*args)
@@ -23,6 +24,11 @@ module Lucie
23
24
  @commands_helper.status
24
25
  end
25
26
 
27
+ def on(opts = [])
28
+ @commands_helper ||= CommandsHelper.new
29
+ @commands_helper.on(Array(opts))
30
+ end
31
+
26
32
  private
27
33
 
28
34
  class CommandsHelper
@@ -31,25 +37,44 @@ module Lucie
31
37
  def initialize
32
38
  @stderr = $stderr
33
39
  @pwd = Dir.pwd
40
+ @opts = []
34
41
  end
35
42
 
36
43
  def sh(*args)
37
44
  command = args.join(" ")
38
- @pid, @stdin, @stdout, @stderr = Open4::popen4("cd \"#{pwd}\" && #{command}")
39
- @ignored, @status = Process::waitpid2 @pid
45
+
46
+ if @opts.include? :show_command
47
+ puts "$ #{command}"
48
+ end
49
+
50
+ @status = Open4::popen4("cd \"#{pwd}\" && #{command}") do |pid, stdin, stdout, stderr|
51
+ @stdin, @stderr, @pid = stdin, stderr, pid
52
+ @output = ""
53
+ if !stdout.eof()
54
+ new_content = stdout.read
55
+ if @opts.include? :live_input
56
+ print new_content
57
+ end
58
+ @output << new_content
59
+ end
60
+ end
40
61
  end
41
62
 
42
63
  def output
43
- @stdout.read
64
+ @output
44
65
  end
45
66
 
46
67
  def status
47
- @status.to_i % 255
68
+ @status.exitstatus.to_i % 255
48
69
  end
49
70
 
50
71
  def pwd=(val)
51
72
  @pwd = File.expand_path(val, @pwd)
52
73
  end
74
+
75
+ def on(opts = [])
76
+ @opts = @opts | opts
77
+ end
53
78
  end
54
79
  end
55
80
  end
@@ -46,4 +46,28 @@ class ShTest < MiniTest::Spec
46
46
  th2.join
47
47
  end
48
48
 
49
+ it "should return true if response status of the command was 0" do
50
+ assert_equal true, sh("true")
51
+ end
52
+
53
+ it "should return false if the response status of the command was not 0" do
54
+ assert_equal false, sh("false")
55
+ end
56
+
57
+ it "should be able to put the output realtime" do
58
+ on :live_input
59
+ out, err = capture_io do
60
+ sh "echo test"
61
+ end
62
+ assert_equal "test\n", out
63
+ end
64
+
65
+ it "should be able to show the command" do
66
+ on :show_command
67
+ out, err = capture_io do
68
+ sh "echo test"
69
+ end
70
+ assert_equal "$ echo test\n", out
71
+ end
72
+
49
73
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucie-cmd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nucc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-25 00:00:00.000000000 Z
11
+ date: 2013-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  requirements: []
117
117
  rubyforge_project:
118
- rubygems_version: 2.0.5
118
+ rubygems_version: 2.0.3
119
119
  signing_key:
120
120
  specification_version: 4
121
121
  summary: Library part of Lucie framework. Use this gem with Lucie if you want to run