shell_helpers 0.1.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +6 -2
- data/.travis.yml +10 -0
- data/.yardopts +6 -1
- data/Gemfile +8 -0
- data/LICENSE.txt +1 -1
- data/README.md +27 -3
- data/Rakefile +7 -12
- data/TODO +2 -0
- data/bin/abs_to_rel.rb +42 -0
- data/bin/mv_and_ln.rb +54 -0
- data/gemspec.yml +5 -4
- data/lib/shell_helpers.rb +38 -11
- data/lib/shell_helpers/export.rb +169 -0
- data/lib/shell_helpers/logger.rb +83 -28
- data/lib/shell_helpers/options.rb +28 -0
- data/lib/shell_helpers/pathname.rb +583 -110
- data/lib/shell_helpers/run.rb +115 -29
- data/lib/shell_helpers/sh.rb +188 -39
- data/lib/shell_helpers/sysutils.rb +427 -0
- data/lib/shell_helpers/utils.rb +216 -119
- data/lib/shell_helpers/version.rb +1 -1
- data/shell_helpers.gemspec +13 -1
- data/test/helper.rb +12 -1
- data/test/test_export.rb +77 -0
- metadata +33 -8
- data/.document +0 -3
data/shell_helpers.gemspec
CHANGED
@@ -24,6 +24,16 @@ Gem::Specification.new do |gem|
|
|
24
24
|
glob = lambda { |patterns| gem.files & Dir[*patterns] }
|
25
25
|
|
26
26
|
gem.files = `git ls-files`.split($/)
|
27
|
+
|
28
|
+
`git submodule --quiet foreach --recursive pwd`.split($/).each do |submodule|
|
29
|
+
submodule.sub!("#{Dir.pwd}/",'')
|
30
|
+
|
31
|
+
Dir.chdir(submodule) do
|
32
|
+
`git ls-files`.split($/).map do |subpath|
|
33
|
+
gem.files << File.join(submodule,subpath)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
27
37
|
gem.files = glob[gemspec['files']] if gemspec['files']
|
28
38
|
|
29
39
|
gem.executables = gemspec.fetch('executables') do
|
@@ -38,7 +48,7 @@ Gem::Specification.new do |gem|
|
|
38
48
|
%w[ext lib].select { |dir| File.directory?(dir) }
|
39
49
|
})
|
40
50
|
|
41
|
-
gem.requirements = gemspec['requirements']
|
51
|
+
gem.requirements = Array(gemspec['requirements'])
|
42
52
|
gem.required_ruby_version = gemspec['required_ruby_version']
|
43
53
|
gem.required_rubygems_version = gemspec['required_rubygems_version']
|
44
54
|
gem.post_install_message = gemspec['post_install_message']
|
@@ -56,4 +66,6 @@ Gem::Specification.new do |gem|
|
|
56
66
|
gem.add_development_dependency(name,split[versions])
|
57
67
|
end
|
58
68
|
end
|
69
|
+
|
70
|
+
gem.metadata['yard.run']='yri'
|
59
71
|
end
|
data/test/helper.rb
CHANGED
@@ -1,2 +1,13 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'minitest/autorun'
|
2
|
+
|
3
|
+
## Uncomment to launch pry on a failure
|
4
|
+
#require 'pry-rescue/minitest'
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'minitest/reporters'
|
8
|
+
Minitest::Reporters.use! Minitest::Reporters::DefaultReporter.new
|
9
|
+
#Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
|
10
|
+
#Minitest::Reporters.use! Minitest::Reporters::ProgressReporter.new
|
11
|
+
rescue LoadError => error
|
12
|
+
warn "minitest/reporters not found, not changing minitest reporter: #{error}"
|
13
|
+
end
|
data/test/test_export.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'shell_helpers'
|
3
|
+
|
4
|
+
describe SH::Export do
|
5
|
+
it "can export a value" do
|
6
|
+
SH.export_value("foo").must_equal "foo"
|
7
|
+
SH.export_value(["foo","bar"]).must_equal "(foo bar)"
|
8
|
+
SH.export_value(["foo","bar"]).must_equal "(foo bar)"
|
9
|
+
SH.export_value(Set.new(["foo","bar"])).must_equal "(foo bar)"
|
10
|
+
SH.export_value({foo:"bar"}).must_equal "(foo bar)"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can escape a shell name" do
|
14
|
+
#foo/bar get interpreted as FOO_BAR
|
15
|
+
SH.escape_name("foo/bar").must_equal("FOO_BAR")
|
16
|
+
SH.escape_name("foo",prefix:"ploum",upcase:false).must_equal("ploumfoo")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "can export a variable" do
|
20
|
+
SH.export_variable("foo","baz").must_equal "FOO=baz\n"
|
21
|
+
SH.export_variable("foo","baz",local:true,export:true).must_equal "local FOO\nFOO=baz\nexport FOO\n"
|
22
|
+
SH.export_variable("foo",{bar:"baz"}).must_equal "typeset -A FOO\nFOO=(bar baz)\n"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "can export a hash" do
|
26
|
+
SH.export_variables({foo:"bar",ploum:"plam"}).must_equal "FOO=bar\nPLOUM=plam\n"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "can select which keys to export" do
|
30
|
+
h={ploum: "plam", foo: {a: 1, b:2}}
|
31
|
+
SH.export_parse(h,"ploum").must_equal "PLOUM=plam\n"
|
32
|
+
SH.export_parse(h,:ploum).must_equal "PLOUM=plam\n"
|
33
|
+
#can select a hash in a hash
|
34
|
+
SH.export_parse(h,"foo/a").must_equal "FOO_A=1\n"
|
35
|
+
#can export severable variables
|
36
|
+
SH.export_parse(h,"ploum,foo/a").must_equal "PLOUM=plam\nFOO_A=1\n"
|
37
|
+
#can name the variables
|
38
|
+
SH.export_parse(h,"var:ploum").must_equal "VAR=plam\n"
|
39
|
+
SH.export_parse(h,"var2:foo/a").must_equal "VAR2=1\n"
|
40
|
+
SH.export_parse(h,"var:ploum,foo/a").must_equal "VAR=plam\nFOO_A=1\n"
|
41
|
+
#can export values by ending with /
|
42
|
+
SH.export_parse(h,"foo/").must_equal "A=1\nB=2\n"
|
43
|
+
#can select a prefix for the values
|
44
|
+
SH.export_parse(h,"prefix_:foo/").must_equal "prefix_A=1\nprefix_B=2\n"
|
45
|
+
#use '/' to select the whole hash
|
46
|
+
SH.export_parse(h,"/").must_equal "typeset -A ALL\nALL=(ploum plam foo \\{:a\\=\\>1,\\ :b\\=\\>2\\})\n"
|
47
|
+
#use '//' to export values in the whole hash
|
48
|
+
SH.export_parse(h,"//").must_equal "PLOUM=plam\ntypeset -A FOO\nFOO=(a 1 b 2)\n"
|
49
|
+
SH.export_parse(h,"prefix_://").must_equal "prefix_PLOUM=plam\ntypeset -A prefix_FOO\nprefix_FOO=(a 1 b 2)\n"
|
50
|
+
#can have options
|
51
|
+
SH.export_parse(h,"ploum!local!export").must_equal "local PLOUM\nPLOUM=plam\nexport PLOUM\n"
|
52
|
+
#use !! for global options
|
53
|
+
SH.export_parse(h,"ploum!local,var:foo/a!!export").must_equal "local PLOUM\nPLOUM=plam\nexport PLOUM\nVAR=1\nexport VAR\n"
|
54
|
+
end
|
55
|
+
|
56
|
+
it "can import a value" do
|
57
|
+
SH.import_value("foo").must_equal "foo"
|
58
|
+
SH.import_value("foo", type: Symbol).must_equal :foo
|
59
|
+
SH.import_value("(foo bar)", type: Array).must_equal %w(foo bar)
|
60
|
+
SH.import_value("(foo bar)", type: Hash).must_equal({"foo"=>"bar"})
|
61
|
+
end
|
62
|
+
|
63
|
+
it "can import a variable" do
|
64
|
+
SH.import_variable("foo=bar").must_equal ["foo","bar"]
|
65
|
+
SH.import_variable("foo='bar'").must_equal ["foo","bar"]
|
66
|
+
SH.import_variable("foo=(bar baz)").must_equal ["foo",%w(bar baz)]
|
67
|
+
end
|
68
|
+
|
69
|
+
it "can import instructions" do
|
70
|
+
SH.import_parse("foo=bar,ploum=plim").must_equal({foo: "bar", ploum: "plim"})
|
71
|
+
SH.import_parse(<<EOS).must_equal({foo: "bar", ploum: %w(plim plam)})
|
72
|
+
foo=bar
|
73
|
+
ploum=(plim plam)
|
74
|
+
EOS
|
75
|
+
SH.import_parse("foo/bar=baz,ploum=plim").must_equal({foo: {bar: "baz"}, ploum: "plim"})
|
76
|
+
end
|
77
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shell_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damien Robert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: drain
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rubygems-tasks
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,35 +84,46 @@ description: 'Collection of script to ease working with the shell with ruby.
|
|
70
84
|
|
71
85
|
'
|
72
86
|
email: Damien.Olivier.Robert+gems@gmail.com
|
73
|
-
executables:
|
87
|
+
executables:
|
88
|
+
- abs_to_rel.rb
|
89
|
+
- mv_and_ln.rb
|
74
90
|
extensions: []
|
75
91
|
extra_rdoc_files:
|
76
92
|
- ChangeLog.md
|
77
93
|
- LICENSE.txt
|
78
94
|
- README.md
|
79
95
|
files:
|
80
|
-
- ".document"
|
81
96
|
- ".gitignore"
|
97
|
+
- ".travis.yml"
|
82
98
|
- ".yardopts"
|
83
99
|
- ChangeLog.md
|
100
|
+
- Gemfile
|
84
101
|
- LICENSE.txt
|
85
102
|
- README.md
|
86
103
|
- Rakefile
|
104
|
+
- TODO
|
105
|
+
- bin/abs_to_rel.rb
|
106
|
+
- bin/mv_and_ln.rb
|
87
107
|
- gemspec.yml
|
88
108
|
- lib/shell_helpers.rb
|
109
|
+
- lib/shell_helpers/export.rb
|
89
110
|
- lib/shell_helpers/logger.rb
|
111
|
+
- lib/shell_helpers/options.rb
|
90
112
|
- lib/shell_helpers/pathname.rb
|
91
113
|
- lib/shell_helpers/run.rb
|
92
114
|
- lib/shell_helpers/sh.rb
|
115
|
+
- lib/shell_helpers/sysutils.rb
|
93
116
|
- lib/shell_helpers/utils.rb
|
94
117
|
- lib/shell_helpers/version.rb
|
95
118
|
- shell_helpers.gemspec
|
96
119
|
- test/helper.rb
|
120
|
+
- test/test_export.rb
|
97
121
|
- test/test_shell_helpers.rb
|
98
122
|
homepage: https://github.com/DamienRobert/shell_helpers#readme
|
99
123
|
licenses:
|
100
124
|
- MIT
|
101
|
-
metadata:
|
125
|
+
metadata:
|
126
|
+
yard.run: yri
|
102
127
|
post_install_message:
|
103
128
|
rdoc_options: []
|
104
129
|
require_paths:
|
@@ -115,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
140
|
version: '0'
|
116
141
|
requirements: []
|
117
142
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.7.7
|
119
144
|
signing_key:
|
120
145
|
specification_version: 4
|
121
146
|
summary: Shell Helpers
|
data/.document
DELETED