lucie-cmd 0.0.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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +6 -0
- data/Rakefile +20 -0
- data/lib/lucie-cmd/commands.rb +55 -0
- data/lib/lucie-cmd.rb +1 -0
- data/lucie-cmd.gemspec +24 -0
- data/test/functional/cd_test.rb +26 -0
- data/test/functional/sh_test.rb +49 -0
- data/test/test_helper.rb +15 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 89a6de7cb0c842f5918571d257ac301465ffd637
|
4
|
+
data.tar.gz: 7d7cd153192b1a087278a476cdacfca7495c30fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: aa0562d72fdd3fc50260e3992bb7e21f38707475dc1107d84597694fc1c90fda7cb70a887b8980705eb8ef264e0afced8032d3beda642eb33045172f3d25b488
|
7
|
+
data.tar.gz: 886291e9a57cef58057299a3d3599f942071f3d0b8cc79240370b3f5ece1d817aeaefdc28dbb82630481b307be15c99d7b5a35fae866e9dbfaf8b62432164b21
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require 'rake/testtask'
|
3
|
+
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.libs << 'lib'
|
6
|
+
t.libs << 'test'
|
7
|
+
t.test_files = FileList['test/**/*_test.rb']
|
8
|
+
t.verbose = false
|
9
|
+
t.warning = true
|
10
|
+
end
|
11
|
+
task :default => :test
|
12
|
+
|
13
|
+
if !ENV["TRAVIS"]
|
14
|
+
require 'rdoc/task'
|
15
|
+
RDoc::Task.new :doc do |rdoc|
|
16
|
+
rdoc.rdoc_dir = '../doc'
|
17
|
+
rdoc.options << '-f' << 'sdoc'
|
18
|
+
rdoc.rdoc_files.include("lib/*.rb")
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'open4'
|
2
|
+
|
3
|
+
module Lucie
|
4
|
+
module Commands
|
5
|
+
|
6
|
+
protected
|
7
|
+
|
8
|
+
def sh(*args)
|
9
|
+
@commands_helper ||= CommandsHelper.new
|
10
|
+
@commands_helper.sh(*args)
|
11
|
+
end
|
12
|
+
|
13
|
+
def cd(*args)
|
14
|
+
@commands_helper ||= CommandsHelper.new
|
15
|
+
@commands_helper.pwd = File.join(args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def output
|
19
|
+
@commands_helper.output
|
20
|
+
end
|
21
|
+
|
22
|
+
def status
|
23
|
+
@commands_helper.status
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
class CommandsHelper
|
29
|
+
attr_accessor :pwd
|
30
|
+
|
31
|
+
def initialize
|
32
|
+
@stderr = $stderr
|
33
|
+
@pwd = Dir.pwd
|
34
|
+
end
|
35
|
+
|
36
|
+
def sh(*args)
|
37
|
+
command = args.join(" ")
|
38
|
+
@pid, @stdin, @stdout, @stderr = Open4::popen4("cd \"#{pwd}\" && #{command}")
|
39
|
+
@ignored, @status = Process::waitpid2 @pid
|
40
|
+
end
|
41
|
+
|
42
|
+
def output
|
43
|
+
@stdout.read
|
44
|
+
end
|
45
|
+
|
46
|
+
def status
|
47
|
+
@status.to_i % 255
|
48
|
+
end
|
49
|
+
|
50
|
+
def pwd=(val)
|
51
|
+
@pwd = File.expand_path(val, @pwd)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/lucie-cmd.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "lucie-cmd/commands"
|
data/lucie-cmd.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
version = File.read(File.expand_path('../../version', __FILE__)).strip
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "lucie-cmd"
|
8
|
+
s.version = version
|
9
|
+
s.authors = ["Nucc"]
|
10
|
+
s.email = ["nucc@bteam.hu"]
|
11
|
+
s.description = %q{Shell command for Lucie command line utility framework}
|
12
|
+
s.summary = %q{Library part of Lucie framework. Use this gem with Lucie if you want to run commands in shell.}
|
13
|
+
s.homepage = "http://my.luc.ie"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split($/)
|
16
|
+
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_development_dependency "rake", "10.0.3"
|
21
|
+
s.add_development_dependency "minitest", "4.6"
|
22
|
+
s.add_development_dependency "mini_shoulda", "0.4.0"
|
23
|
+
s.add_development_dependency "sdoc"
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "stringio"
|
3
|
+
|
4
|
+
class CdTest < MiniTest::Spec
|
5
|
+
include Lucie::Commands
|
6
|
+
|
7
|
+
it "changes directory" do
|
8
|
+
cd "/bin"
|
9
|
+
sh "pwd"
|
10
|
+
assert_equal "/bin\n", output
|
11
|
+
end
|
12
|
+
|
13
|
+
it "changes directory multiple times" do
|
14
|
+
cd "/sbin"
|
15
|
+
cd "/bin"
|
16
|
+
sh "pwd"
|
17
|
+
assert_equal "/bin\n", output
|
18
|
+
end
|
19
|
+
|
20
|
+
it "knows relative paths" do
|
21
|
+
cd "/bin"
|
22
|
+
cd "../sbin"
|
23
|
+
sh "pwd"
|
24
|
+
assert_equal "/sbin\n", output
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "stringio"
|
3
|
+
|
4
|
+
class ShTest < MiniTest::Spec
|
5
|
+
include Lucie::Commands
|
6
|
+
|
7
|
+
it "runs a command" do
|
8
|
+
sh "echo 123"
|
9
|
+
assert_equal "123\n", output
|
10
|
+
end
|
11
|
+
|
12
|
+
it "runs more commands" do
|
13
|
+
sh "echo 1"
|
14
|
+
assert_equal "1\n", output
|
15
|
+
sh "echo 2"
|
16
|
+
assert_equal "2\n", output
|
17
|
+
end
|
18
|
+
|
19
|
+
it "knows the return status" do
|
20
|
+
sh "false"
|
21
|
+
assert_equal 1, status
|
22
|
+
|
23
|
+
sh "true"
|
24
|
+
assert_equal 0, status
|
25
|
+
end
|
26
|
+
|
27
|
+
it "can handle return status of concurrent processes" do
|
28
|
+
i = 0
|
29
|
+
th1 = Thread.new do
|
30
|
+
sh "true"
|
31
|
+
i = 1
|
32
|
+
sleep 0 while i != 2
|
33
|
+
assert 0, status
|
34
|
+
i = 3
|
35
|
+
end
|
36
|
+
|
37
|
+
th2 = Thread.new do
|
38
|
+
sleep 0 while i != 1
|
39
|
+
sh "false"
|
40
|
+
i = 2
|
41
|
+
sleep 0 while i != 3
|
42
|
+
assert 1, status
|
43
|
+
end
|
44
|
+
|
45
|
+
th1.join
|
46
|
+
th2.join
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
if ENV["TRAVIS"]
|
2
|
+
require 'coveralls'
|
3
|
+
Coveralls.wear!
|
4
|
+
end
|
5
|
+
|
6
|
+
# MiniTest is integrated to Ruby library and by default the test wants to use that.
|
7
|
+
# Force the Rubygems version
|
8
|
+
require 'minitest/autorun'
|
9
|
+
require "mini_shoulda"
|
10
|
+
#require 'debugger'
|
11
|
+
|
12
|
+
require "lucie-cmd"
|
13
|
+
|
14
|
+
class MiniTest::Spec
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lucie-cmd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nucc
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-09-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 10.0.3
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 10.0.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mini_shoulda
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.4.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.4.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sdoc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Shell command for Lucie command line utility framework
|
70
|
+
email:
|
71
|
+
- nucc@bteam.hu
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- Gemfile
|
78
|
+
- Rakefile
|
79
|
+
- lib/lucie-cmd.rb
|
80
|
+
- lib/lucie-cmd/commands.rb
|
81
|
+
- lucie-cmd.gemspec
|
82
|
+
- test/functional/cd_test.rb
|
83
|
+
- test/functional/sh_test.rb
|
84
|
+
- test/test_helper.rb
|
85
|
+
homepage: http://my.luc.ie
|
86
|
+
licenses: []
|
87
|
+
metadata: {}
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project:
|
104
|
+
rubygems_version: 2.0.3
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: Library part of Lucie framework. Use this gem with Lucie if you want to run
|
108
|
+
commands in shell.
|
109
|
+
test_files:
|
110
|
+
- test/functional/cd_test.rb
|
111
|
+
- test/functional/sh_test.rb
|
112
|
+
- test/test_helper.rb
|