u8 0.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 +7 -0
- data/README.md +31 -0
- data/bin/rash +5 -0
- data/lib/u8.rb +67 -0
- data/lib/u8/command.rb +14 -0
- data/lib/u8/version.rb +3 -0
- data/spec/command_spec.rb +58 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/u8_spec.rb +41 -0
- metadata +78 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8dac835625be402f82da5a3d2b9d175478e3ecfd
|
4
|
+
data.tar.gz: 9c613c20d60b1642704dda0d100ab8e03609943b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2b26be60df15b899b35d89b23108303c970ede65a777feaacfda89a3cc3d5b2954f1225ce3e3e17cbbf56b59eac78c91f64ec648c51abab45145db6c7f5d8ca4
|
7
|
+
data.tar.gz: c59f8a5fc70827e698dd396a818e8679c98d2b9ffbbdc22c4bfcb9dda67f08900b82d1e774eebb366615a403b45e71c3465aaaa468aa94d6c7740b9a659eb51e
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# eval-U8 shell commands in ruby code!
|
2
|
+
|
3
|
+
Evaluate an `ls` and put it's contents (a list of files) into the files variable.
|
4
|
+
|
5
|
+
files = U8.ls
|
6
|
+
|
7
|
+
If you want to drop the U8 namespace, you can `shell` and refer to commands directly. For instance:
|
8
|
+
|
9
|
+
Eval an ls, then map the elements to the contents of each file.
|
10
|
+
|
11
|
+
U8.shell do
|
12
|
+
|
13
|
+
ls.map{|file| cat file}
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
`U8.interactive` will allow you to run arbitrary commands, and print their results.
|
18
|
+
|
19
|
+
Try running `rash` from the `bin` directory if you would like to try the poor man's ruby shell.
|
20
|
+
|
21
|
+
Building a shell wrapper?
|
22
|
+
|
23
|
+
git = U8.command :git
|
24
|
+
|
25
|
+
git :add, filename
|
26
|
+
git :commit
|
27
|
+
|
28
|
+
Or
|
29
|
+
|
30
|
+
curl = U8.command :curl, prefix: '--'
|
31
|
+
curl 'http://www.awesome.com'
|
data/bin/rash
ADDED
data/lib/u8.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'u8/command'
|
2
|
+
|
3
|
+
module U8
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def _
|
7
|
+
@_
|
8
|
+
end
|
9
|
+
|
10
|
+
def echo *args
|
11
|
+
args = args.is_a?(Array) ? args.join("\n") : args
|
12
|
+
puts args.to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
#def config
|
16
|
+
def command cmd, args={}
|
17
|
+
U8::Command.new(cmd,args)
|
18
|
+
end
|
19
|
+
|
20
|
+
def shell &block
|
21
|
+
U8.instance_eval &block
|
22
|
+
end
|
23
|
+
|
24
|
+
def interactive
|
25
|
+
while 1
|
26
|
+
echo eval(gets)
|
27
|
+
end
|
28
|
+
rescue StandardError => e
|
29
|
+
echo e.message
|
30
|
+
interactive
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def exec name, args
|
36
|
+
`cd #{@dir};#{exec_s(name,args_to_s(args))}`
|
37
|
+
end
|
38
|
+
|
39
|
+
def exec_s name, args
|
40
|
+
"#{name} #{args_to_s(args)}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def method_missing(name, *args, &block)
|
44
|
+
#move to own method
|
45
|
+
@_ = exec(name,args).split("\n")
|
46
|
+
end
|
47
|
+
|
48
|
+
def args_to_s options, args
|
49
|
+
if args.is_a? Hash
|
50
|
+
options[:equals] = '=' if options[:equals] == true
|
51
|
+
equals = options[:equals]
|
52
|
+
equals ||= ' '
|
53
|
+
args = args.collect{|k,v|
|
54
|
+
args[k] = "#{k}#{equals}#{v}"
|
55
|
+
}
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
prefix = options[:prefix] || ''
|
60
|
+
|
61
|
+
args.map{ |arg|
|
62
|
+
"#{prefix}#{arg}"
|
63
|
+
}.join(" ")
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
data/lib/u8/command.rb
ADDED
data/lib/u8/version.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe U8::Command do
|
4
|
+
context 'no args' do
|
5
|
+
let(:git) { U8.command :git }
|
6
|
+
|
7
|
+
it 'returns a U8::Command' do
|
8
|
+
expect(git).to be_a(U8::Command)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'sets cmd' do
|
12
|
+
expect(git.instance_variable_get(:@cmd)).to eq(:git)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'sets options' do
|
16
|
+
expect(git.instance_variable_get(:@options)).to be_a(Hash)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'args' do
|
22
|
+
let(:git) { U8.command :git, equals: true }
|
23
|
+
|
24
|
+
it 'sets options' do
|
25
|
+
options = git.instance_variable_get(:@options)
|
26
|
+
expect(options[:equals]).to eq(true)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'executes' do
|
31
|
+
let(:git) { U8.command :git }
|
32
|
+
|
33
|
+
before do
|
34
|
+
#allow(git).to_receive(:git)
|
35
|
+
git.stub(:exec)#.with(:git, {equals:true})
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'execs without options' do
|
39
|
+
#expect(git()).to receive(:exec)#.with(:git, {equals:true})
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'execs with array options' do
|
43
|
+
pending 'implement arrays'
|
44
|
+
expect(
|
45
|
+
git.call :commit
|
46
|
+
).to receive(:exec).with(:git, {equals:true})
|
47
|
+
|
48
|
+
expect(
|
49
|
+
git.call :commit, '--add', '--amend'
|
50
|
+
).to receive(:exec)#.with(:git, {equals:true})
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'execs with hash options' do
|
56
|
+
let(:curl) { U8.command :curl, { config: 'filename' } }
|
57
|
+
end
|
58
|
+
end
|
data/spec/spec_helper.rb
ADDED
data/spec/u8_spec.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe U8 do
|
4
|
+
it 'concats string args' do
|
5
|
+
#expect(args_to_s 'var1=val1', 'var2=val2').to be("var1=val1 var2=val2")
|
6
|
+
end
|
7
|
+
|
8
|
+
context 'equals' do
|
9
|
+
let(:options){ {equals: true} }
|
10
|
+
|
11
|
+
it 'puts equals on args' do
|
12
|
+
expect(
|
13
|
+
args_to_s(options, {
|
14
|
+
var1: :val1,
|
15
|
+
var2: :val2
|
16
|
+
})
|
17
|
+
).to eq("var1=val1 var2=val2")
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'equals and prefix' do
|
23
|
+
let(:options){ {equals: true, prefix: '--'} }
|
24
|
+
|
25
|
+
it 'puts equals and prefix on args' do
|
26
|
+
expect(
|
27
|
+
args_to_s(options, {
|
28
|
+
var1: :val1,
|
29
|
+
var2: :val2
|
30
|
+
})
|
31
|
+
).to eq("--var1=val1 --var2=val2")
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def args_to_s options, args
|
37
|
+
U8.class_eval do
|
38
|
+
args_to_s options, args
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: u8
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Trevor Grayson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-06 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: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.0
|
41
|
+
description: Run shell commands with models instead of running strings
|
42
|
+
email: trevor@ipsumllc.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- README.md
|
48
|
+
- bin/rash
|
49
|
+
- lib/u8.rb
|
50
|
+
- lib/u8/command.rb
|
51
|
+
- lib/u8/version.rb
|
52
|
+
- spec/command_spec.rb
|
53
|
+
- spec/spec_helper.rb
|
54
|
+
- spec/u8_spec.rb
|
55
|
+
homepage: http://github.com/trevorgrayson/u8
|
56
|
+
licenses: []
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.4.5.1
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: Eval-U8 BASH commands in clean ruby
|
78
|
+
test_files: []
|