HelperClasses 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +7 -0
- data/{README → README.md} +22 -0
- data/helperclasses.gemspec +18 -0
- data/lib/helperclasses.rb +5 -1
- data/lib/helperclasses/arraysym.rb +4 -4
- data/lib/helperclasses/dputs.rb +47 -29
- data/lib/helperclasses/hashaccessor.rb +35 -32
- data/lib/helperclasses/readconfig.rb +50 -0
- data/lib/helperclasses/service.rb +104 -0
- data/lib/helperclasses/system.rb +36 -0
- data/lib/helperclasses/timing.rb +21 -0
- data/test/hc_service.rb +15 -0
- data/test/test.rb +17 -0
- data/test/test_arraysym.rb +0 -0
- data/test/test_dputs.rb +0 -0
- data/test/test_hashaccessor.rb +0 -0
- data/test/test_readconfig.rb +27 -0
- data/test/test_system.rb +20 -0
- metadata +32 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93e502dfc1275307448cbb1a400fb2e9f66cc9bb
|
4
|
+
data.tar.gz: 9a11df7ce26d9d05413b1fc26c56943adec234b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dc8b0468193eb16e9b776b17951f9cfd353b6f84624edb65817bb9ec0b1ae3f9a84a58d7de96f9ecb9e784983e592b49fe55928579e33bc6fb4a5b69594aa15
|
7
|
+
data.tar.gz: 93af48558a982873408929fd5a57ac57e633ee5180dcd22aa461d8b44db3d61723bdeb88f52e15e163240a92fd13542d634597d58d1a8ed8d97cf29b0fdb3dcf
|
data/.gitignore
ADDED
data/{README → README.md}
RENAMED
@@ -36,6 +36,28 @@ will NOT evaluate it! The debug-levels are arbitrarily chosen like this:
|
|
36
36
|
4
|
37
37
|
5 - Dumping lots of raw data
|
38
38
|
|
39
|
+
==== Fine-grained debugging
|
40
|
+
|
41
|
+
If you have a function with lots of _dputs_ in it, and you'd like to output
|
42
|
+
all debugging messages just from that function, you simply add
|
43
|
+
|
44
|
+
```
|
45
|
+
dputs_func
|
46
|
+
```
|
47
|
+
|
48
|
+
at the beginning of your function.
|
49
|
+
|
50
|
+
If you want just one specific _dputs_ to be evaluated, just change its name to
|
51
|
+
_ddputs_:
|
52
|
+
|
53
|
+
```
|
54
|
+
DEBUG_LVL = 0
|
55
|
+
|
56
|
+
ddputs(5){"String with lots of data#{huge_var.inspect}"}
|
57
|
+
```
|
58
|
+
|
59
|
+
will be evaluated!
|
60
|
+
|
39
61
|
=== Arraysym
|
40
62
|
|
41
63
|
to_sym and to_sym! - calls .to_sym on all elements. Usage:
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'HelperClasses'
|
3
|
+
s.version = '0.2.0'
|
4
|
+
s.date = '2015-04-06'
|
5
|
+
s.summary = 'Hash._accessor Array.to_sym and DPuts'
|
6
|
+
s.description = 'Added accessors to Hash, to_sym to Array and a nice debugging-interface called DPuts'
|
7
|
+
s.authors = ['Linus Gasser']
|
8
|
+
s.email = 'ineiti@linusetviviane.ch'
|
9
|
+
|
10
|
+
s.files = `git ls-files -z`.split("\x0")
|
11
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
12
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
13
|
+
s.require_paths = ['lib']
|
14
|
+
|
15
|
+
s.homepage =
|
16
|
+
'https://github.com/ineiti/HelperClasses'
|
17
|
+
s.license = 'GPLv3'
|
18
|
+
end
|
data/lib/helperclasses.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
-
require 'helperclasses/hashaccessor'
|
2
1
|
require 'helperclasses/arraysym'
|
3
2
|
require 'helperclasses/dputs'
|
3
|
+
require 'helperclasses/hashaccessor'
|
4
|
+
require 'helperclasses/readconfig'
|
5
|
+
require 'helperclasses/service'
|
6
|
+
require 'helperclasses/system'
|
7
|
+
require 'helperclasses/timing'
|
@@ -1,11 +1,11 @@
|
|
1
1
|
|
2
2
|
module HelperClasses
|
3
3
|
module ArraySym
|
4
|
-
|
5
|
-
# Comptaibility for Ruby
|
6
|
-
if !
|
4
|
+
class Array
|
5
|
+
# Comptaibility for Ruby <= 2.0
|
6
|
+
if ![].respond_to? :to_h
|
7
7
|
def to_h
|
8
|
-
Hash[
|
8
|
+
Hash[*self.flatten]
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
data/lib/helperclasses/dputs.rb
CHANGED
@@ -5,27 +5,27 @@ module HelperClasses
|
|
5
5
|
module DPuts
|
6
6
|
extend self
|
7
7
|
attr_accessor :mutex, :silent, :show_time, :terminal_width, :log_file
|
8
|
-
|
8
|
+
|
9
9
|
@mutex = Mutex.new
|
10
10
|
@silent = false
|
11
11
|
@show_time = 60
|
12
12
|
@terminal_width = 160
|
13
13
|
@log_file = false
|
14
|
-
|
15
|
-
def dputs_out(
|
14
|
+
|
15
|
+
def dputs_out(n, s, call)
|
16
16
|
return if DPuts.silent
|
17
17
|
if precision = DPuts.show_time
|
18
18
|
$dputs_time ||= Time.now - 120
|
19
19
|
now = Time.now
|
20
20
|
show = false
|
21
21
|
case precision
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
when /sec/
|
23
|
+
show = now.to_i != $dputs_time.to_i
|
24
|
+
when /min/
|
25
|
+
show = (now.to_i / 60).floor != ($dputs_time.to_i / 60).floor
|
26
26
|
end
|
27
|
-
show and puts "\n *** It is now: " +
|
28
|
-
|
27
|
+
show and puts "\n *** It is now: " +
|
28
|
+
Time.now.strftime("%Y-%m-%d %H:%M:%S")
|
29
29
|
$dputs_time = now
|
30
30
|
end
|
31
31
|
DPuts.mutex.synchronize do
|
@@ -33,54 +33,72 @@ module HelperClasses
|
|
33
33
|
width -= 30.0
|
34
34
|
file, func = call.split(" ")
|
35
35
|
file = file[/^.*\/([^.]*)/, 1]
|
36
|
-
who = (
|
37
|
-
func.to_s
|
36
|
+
who = (":" + n.to_s + ":" + file.to_s +
|
37
|
+
func.to_s).ljust(30, ["X", "x", "*", "-", ".", " "][n])
|
38
38
|
lines = []
|
39
39
|
pos = 0
|
40
|
-
while (
|
40
|
+
while (pos < s.length)
|
41
41
|
len = width
|
42
42
|
if s.length - pos > width
|
43
|
-
len = s.rindex(
|
43
|
+
len = s.rindex(/[, .;=&>]/, pos + width)
|
44
44
|
len and len = len - pos + 1
|
45
45
|
if len < width / 2
|
46
46
|
len = width
|
47
47
|
end
|
48
48
|
end
|
49
|
-
lines.push s.slice(
|
49
|
+
lines.push s.slice(pos, len)
|
50
50
|
pos += len
|
51
51
|
end
|
52
52
|
puts who + " " + lines.shift.to_s
|
53
|
-
lines.each{|l|
|
54
|
-
puts " " * (
|
53
|
+
lines.each { |l|
|
54
|
+
puts " " * (32) + l
|
55
55
|
}
|
56
56
|
end
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
|
+
|
60
|
+
def dputs_getcaller
|
61
|
+
caller(0)[2].sub(/:.*:in/, '').sub(/block .*in /, '')
|
62
|
+
end
|
63
|
+
|
64
|
+
def dputs_func
|
65
|
+
$DPUTS_FUNCS ||= []
|
66
|
+
$DPUTS_FUNCS.push(dputs_getcaller) unless $DPUTS_FUNCS.index(dputs_getcaller)
|
67
|
+
end
|
68
|
+
|
69
|
+
def dputs_unfunc
|
70
|
+
$DPUTS_FUNCS ||= []
|
71
|
+
$DPUTS_FUNCS.index(dputs_getcaller) and $DPUTS_FUNCS.delete(dputs_getcaller)
|
72
|
+
end
|
73
|
+
|
59
74
|
def dputs(n, &s)
|
60
|
-
if
|
75
|
+
n *= -1 if ($DPUTS_FUNCS and $DPUTS_FUNCS.index(dputs_getcaller))
|
76
|
+
if !self.class.const_defined?(:DEBUG_LVL) or
|
77
|
+
self.class.const_get(:DEBUG_LVL) >= n
|
61
78
|
s = yield s
|
62
|
-
dputs_out(
|
79
|
+
dputs_out(n, s, caller(0)[1])
|
63
80
|
end
|
64
81
|
end
|
65
82
|
|
66
|
-
def ddputs(
|
83
|
+
def ddputs(n, &s)
|
67
84
|
s = yield s
|
68
|
-
|
85
|
+
#dp caller(0)
|
86
|
+
dputs_out(-n, s, caller(0)[1])
|
69
87
|
end
|
70
|
-
|
71
|
-
def dp(
|
72
|
-
dputs_out(
|
88
|
+
|
89
|
+
def dp(s)
|
90
|
+
dputs_out(0, s.class == String ? s : s.inspect, caller(0)[1])
|
73
91
|
s
|
74
92
|
end
|
75
93
|
|
76
|
-
def log_msg(
|
77
|
-
dputs(
|
94
|
+
def log_msg(mod, msg)
|
95
|
+
dputs(1) { "Info from #{mod}: #{msg}" }
|
78
96
|
return if not DPuts.log_file
|
79
|
-
File.open(
|
80
|
-
str = Time.now.strftime(
|
97
|
+
File.open(DPuts.log_file, "a") { |f|
|
98
|
+
str = Time.now.strftime("%a %y.%m.%d-%H:%M:%S #{mod}: #{msg}")
|
81
99
|
f.puts str
|
82
100
|
}
|
83
101
|
end
|
84
102
|
|
85
103
|
end
|
86
|
-
end
|
104
|
+
end
|
@@ -1,41 +1,44 @@
|
|
1
1
|
module HelperClasses
|
2
2
|
module HashAccessor
|
3
3
|
refine Hash do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
class Hash
|
9
|
+
# Converts all keys of a hash to syms recursively
|
10
|
+
def to_sym
|
11
|
+
ret = {}
|
12
|
+
each { |k, v|
|
13
|
+
ret[k.to_sym] = v.class == Hash ? v.to_sym : v
|
14
|
+
}
|
15
|
+
ret
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_sym!
|
19
|
+
self.replace(to_sym())
|
20
|
+
end
|
12
21
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
key =
|
23
|
-
self.has_key? key and return self[key]
|
24
|
-
self.has_key? key.to_s and return self[key.to_s]
|
25
|
-
if s.to_s =~ /^__/
|
26
|
-
return self[key] = {}
|
27
|
-
else
|
28
|
-
return nil
|
29
|
-
end
|
30
|
-
when /^_.*=$/
|
31
|
-
key = /^_{1,2}(.*)=$/.match(s.to_s)[1].to_sym
|
32
|
-
self.has_key? key and return self[key] = args[0]
|
33
|
-
self.has_key? key.to_s and return self[key.to_s] = args[0]
|
34
|
-
return self[key] = args[0]
|
22
|
+
def method_missing(s, *args)
|
23
|
+
case s.to_s
|
24
|
+
when "to_ary"
|
25
|
+
super(s, args)
|
26
|
+
when /^_.*[^=]$/
|
27
|
+
key = s.to_s.sub(/^_{1,2}/, '').to_sym
|
28
|
+
self.has_key? key and return self[key]
|
29
|
+
self.has_key? key.to_s and return self[key.to_s]
|
30
|
+
if s.to_s =~ /^__/
|
31
|
+
return self[key] = {}
|
35
32
|
else
|
36
|
-
|
33
|
+
return nil
|
37
34
|
end
|
38
|
-
|
35
|
+
when /^_.*=$/
|
36
|
+
key = /^_{1,2}(.*)=$/.match(s.to_s)[1].to_sym
|
37
|
+
self.has_key? key and return self[key] = args[0]
|
38
|
+
self.has_key? key.to_s and return self[key.to_s] = args[0]
|
39
|
+
return self[key] = args[0]
|
40
|
+
else
|
41
|
+
super(s, args)
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module HelperClasses
|
2
|
+
module ReadConfig
|
3
|
+
extend self
|
4
|
+
|
5
|
+
# Searches in this order:
|
6
|
+
# ~/.config
|
7
|
+
# ~
|
8
|
+
# /etc
|
9
|
+
#
|
10
|
+
# Returns nil if nothing found
|
11
|
+
def file_name(file)
|
12
|
+
%w( ~/.config ~ /etc ).each { |d|
|
13
|
+
file_abs = File.expand_path("#{d}/#{file}")
|
14
|
+
File.exists?(file_abs) and return file_abs
|
15
|
+
}
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# Very simple bash-reader, doesn't do array or multi-line configurations
|
20
|
+
def bash(file, downcase = false)
|
21
|
+
return nil unless File.exists? file
|
22
|
+
IO.readlines(file).collect { |l|
|
23
|
+
if l =~ /^#/
|
24
|
+
nil
|
25
|
+
elsif l =~ /([^ ]+)=(.*)/
|
26
|
+
[(downcase ? $1.downcase : $1).to_sym, $2]
|
27
|
+
end
|
28
|
+
}.compact.to_h
|
29
|
+
end
|
30
|
+
|
31
|
+
# Ruby file-reader, returns created hash
|
32
|
+
# THIS IS ABSOLUTELY INSECURE AND WILL EAT YOUR KITTENS!
|
33
|
+
# It returns what the file returns at the end - so most probably you'll want
|
34
|
+
# something like
|
35
|
+
#
|
36
|
+
# { one: 1,
|
37
|
+
# two: 2 }
|
38
|
+
#
|
39
|
+
# in that config-file
|
40
|
+
def ruby(file)
|
41
|
+
return {} unless File.exists? file.to_s
|
42
|
+
return eval(IO.readlines(file).join)
|
43
|
+
end
|
44
|
+
|
45
|
+
def json(file)
|
46
|
+
p 'Not implemented yet'
|
47
|
+
exit
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'helperclasses/dputs'
|
2
|
+
require 'helperclasses/system'
|
3
|
+
|
4
|
+
module HelperClasses
|
5
|
+
module Service
|
6
|
+
attr_accessor :system, :services
|
7
|
+
|
8
|
+
extend self
|
9
|
+
extend HelperClasses::DPuts
|
10
|
+
@system = case System.run_str 'uname -a'
|
11
|
+
when /ARCH/
|
12
|
+
:ArchLinux
|
13
|
+
when /Ubuntu/
|
14
|
+
:Ubuntu
|
15
|
+
when /Darwin/
|
16
|
+
:MacOSX
|
17
|
+
else
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
@services = {
|
22
|
+
samba: {ArchLinux: %w( smbd nmbd ), Ubuntu: %w(smbd nmbd)},
|
23
|
+
cups: {ArchLinux: 'org.cups.cupsd', Ubuntu: 'cupsd'}
|
24
|
+
}
|
25
|
+
|
26
|
+
def service_get(service)
|
27
|
+
begin
|
28
|
+
@services[service.to_sym][@system]
|
29
|
+
rescue NoMethodError => _e
|
30
|
+
service.to_s
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def service_run(service, cmd)
|
35
|
+
return unless @system
|
36
|
+
if !cmd
|
37
|
+
log_msg :Services, "System #{@system} can't start services"
|
38
|
+
return false
|
39
|
+
end
|
40
|
+
service_name = service_get(service)
|
41
|
+
if !service_name
|
42
|
+
log_msg :Services, "System #{@system} doesn't have service #{service}"
|
43
|
+
return false
|
44
|
+
end
|
45
|
+
cmd_system = cmd[@system]
|
46
|
+
if !cmd_system
|
47
|
+
log_msg :Services, "System #{@system} doesn't know how to do #{cmd}"
|
48
|
+
return false
|
49
|
+
end
|
50
|
+
[service_name].flatten.each { |s|
|
51
|
+
c = cmd_system.sub(/##/, s)
|
52
|
+
if !System.run_bool(c)
|
53
|
+
log_msg :Services, "Command #{c} failed"
|
54
|
+
return false
|
55
|
+
end
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
def start(service)
|
60
|
+
service_run(service, {ArchLinux: 'systemctl start ##',
|
61
|
+
Ubuntu: '/etc/init.d/## start',
|
62
|
+
MacOSX: nil}
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def stop(service)
|
67
|
+
service_run(service, {ArchLinux: 'systemctl stop ##',
|
68
|
+
Ubuntu: '/etc/init.d/## stop',
|
69
|
+
MacOSX: nil}
|
70
|
+
)
|
71
|
+
end
|
72
|
+
|
73
|
+
def restart(service)
|
74
|
+
service_run(service, {ArchLinux: 'systemctl restart ##',
|
75
|
+
Ubuntu: '/etc/init.d/## restart',
|
76
|
+
MacOSX: nil}
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
def enable(service)
|
81
|
+
service_run(service, {ArchLinux: 'systemctl enable ##',
|
82
|
+
Ubuntu: nil,
|
83
|
+
MacOSX: nil}
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
87
|
+
def disable(service)
|
88
|
+
service_run(service, {ArchLinux: 'systemctl disable ##',
|
89
|
+
Ubuntu: nil,
|
90
|
+
MacOSX: nil}
|
91
|
+
)
|
92
|
+
end
|
93
|
+
|
94
|
+
def enable_start(service)
|
95
|
+
enable(service)
|
96
|
+
start(service)
|
97
|
+
end
|
98
|
+
|
99
|
+
def stop_disable(service)
|
100
|
+
disable(service)
|
101
|
+
stop(service)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# System-interaction for different flavours of Unix
|
2
|
+
require 'helperclasses/dputs'
|
3
|
+
|
4
|
+
module HelperClasses
|
5
|
+
module System
|
6
|
+
extend self
|
7
|
+
extend HelperClasses::DPuts
|
8
|
+
include HelperClasses::DPuts
|
9
|
+
|
10
|
+
def run_str(cmd)
|
11
|
+
dputs(3) { "Running command --#{cmd}--" }
|
12
|
+
%x[ #{cmd} ]
|
13
|
+
end
|
14
|
+
|
15
|
+
def run_bool(cmd)
|
16
|
+
dputs(3) { "Running command --#{cmd}--" }
|
17
|
+
Kernel.system("#{cmd} > /dev/null 2>&1")
|
18
|
+
end
|
19
|
+
|
20
|
+
def exists?(cmd)
|
21
|
+
dputs(3) { "Exist command --#{cmd}--?" }
|
22
|
+
run_bool("which #{cmd} > /dev/null 2>&1")
|
23
|
+
end
|
24
|
+
|
25
|
+
def rescue_all(msg = nil)
|
26
|
+
begin
|
27
|
+
yield
|
28
|
+
rescue Exception => e
|
29
|
+
msg and dputs(0) { msg }
|
30
|
+
dputs(0) { "#{e.inspect}" }
|
31
|
+
dputs(0) { "#{e.to_s}" }
|
32
|
+
e.backtrace.each { |l| dputs(0) { l } }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module HelperClasses
|
2
|
+
class Timing
|
3
|
+
def initialize(dbg = 0)
|
4
|
+
@dbg_lvl = dbg
|
5
|
+
@time = Time.now
|
6
|
+
end
|
7
|
+
|
8
|
+
def probe(msg = '')
|
9
|
+
t = sprintf('%6f', (Time.now - @time).to_f)
|
10
|
+
dputs(@dbg_lvl) { "#{msg}: #{t}" }
|
11
|
+
@time = Time.now
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.measure(msg = '', dbg = 0)
|
15
|
+
t = Timing.new(dbg)
|
16
|
+
ret = yield
|
17
|
+
t.probe(msg)
|
18
|
+
ret
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/test/hc_service.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
class TC_Service < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_service_get
|
10
|
+
Service.system = :ArchLinux
|
11
|
+
|
12
|
+
assert_equal %w(smbd nmbd), Service.service_get(:samba)
|
13
|
+
assert_equal 'dnsmasq', Service.service_get(:dnsmasq)
|
14
|
+
end
|
15
|
+
end
|
data/test/test.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.push '../lib', '.'
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
require 'helperclasses'
|
6
|
+
include HelperClasses
|
7
|
+
|
8
|
+
tests = Dir.glob( 'hc_*.rb' )
|
9
|
+
#tests = %w( )
|
10
|
+
|
11
|
+
tests.each{|t|
|
12
|
+
begin
|
13
|
+
require "hc_#{t}"
|
14
|
+
rescue LoadError => e
|
15
|
+
require t
|
16
|
+
end
|
17
|
+
}
|
data/test/test_arraysym.rb
CHANGED
File without changes
|
data/test/test_dputs.rb
CHANGED
File without changes
|
data/test/test_hashaccessor.rb
CHANGED
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.push('../lib')
|
4
|
+
require 'helperclasses/readconfig'
|
5
|
+
|
6
|
+
include HelperClasses
|
7
|
+
|
8
|
+
testfile = 'test_config'
|
9
|
+
IO.write(testfile, "#!/bin/bash
|
10
|
+
# This is an example config
|
11
|
+
TEST=hi
|
12
|
+
DB=foo.db
|
13
|
+
# This shouldn't pass
|
14
|
+
TEST2 = hi
|
15
|
+
# And some unrelated stuff
|
16
|
+
if '$1'; then
|
17
|
+
fi
|
18
|
+
")
|
19
|
+
|
20
|
+
test = ReadConfig.bash( testfile )
|
21
|
+
p test
|
22
|
+
|
23
|
+
def printit
|
24
|
+
p test
|
25
|
+
end
|
26
|
+
|
27
|
+
printit
|
data/test/test_system.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.push '../lib'
|
4
|
+
|
5
|
+
require 'helperclasses/system'
|
6
|
+
include HelperClasses::System
|
7
|
+
|
8
|
+
rescue_all do
|
9
|
+
puts 'Hello there'
|
10
|
+
end
|
11
|
+
puts
|
12
|
+
|
13
|
+
rescue_all do
|
14
|
+
puts "Some math: #{10/0}"
|
15
|
+
end
|
16
|
+
puts
|
17
|
+
|
18
|
+
rescue_all('math-error') do
|
19
|
+
puts "Some math: #{10/0}"
|
20
|
+
end
|
metadata
CHANGED
@@ -1,32 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: HelperClasses
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Linus Gasser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: Added accessors to Hash, to_sym to Array and a nice debugging-interface
|
14
|
+
called DPuts
|
14
15
|
email: ineiti@linusetviviane.ch
|
15
16
|
executables: []
|
16
17
|
extensions: []
|
17
18
|
extra_rdoc_files: []
|
18
19
|
files:
|
19
|
-
- "
|
20
|
-
- "./README"
|
21
|
-
- "./lib/helperclasses.rb"
|
22
|
-
- "./lib/helperclasses/arraysym.rb"
|
23
|
-
- "./lib/helperclasses/dputs.rb"
|
24
|
-
- "./lib/helperclasses/hashaccessor.rb"
|
25
|
-
- "./test/test_arraysym.rb"
|
26
|
-
- "./test/test_dputs.rb"
|
27
|
-
- "./test/test_hashaccessor.rb"
|
20
|
+
- ".gitignore"
|
28
21
|
- LICENSE
|
29
|
-
- README
|
22
|
+
- README.md
|
23
|
+
- helperclasses.gemspec
|
24
|
+
- lib/helperclasses.rb
|
25
|
+
- lib/helperclasses/arraysym.rb
|
26
|
+
- lib/helperclasses/dputs.rb
|
27
|
+
- lib/helperclasses/hashaccessor.rb
|
28
|
+
- lib/helperclasses/readconfig.rb
|
29
|
+
- lib/helperclasses/service.rb
|
30
|
+
- lib/helperclasses/system.rb
|
31
|
+
- lib/helperclasses/timing.rb
|
32
|
+
- test/hc_service.rb
|
33
|
+
- test/test.rb
|
34
|
+
- test/test_arraysym.rb
|
35
|
+
- test/test_dputs.rb
|
36
|
+
- test/test_hashaccessor.rb
|
37
|
+
- test/test_readconfig.rb
|
38
|
+
- test/test_system.rb
|
30
39
|
homepage: https://github.com/ineiti/HelperClasses
|
31
40
|
licenses:
|
32
41
|
- GPLv3
|
@@ -47,8 +56,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
47
56
|
version: '0'
|
48
57
|
requirements: []
|
49
58
|
rubyforge_project:
|
50
|
-
rubygems_version: 2.2.
|
59
|
+
rubygems_version: 2.2.2
|
51
60
|
signing_key:
|
52
61
|
specification_version: 4
|
53
|
-
summary:
|
54
|
-
test_files:
|
62
|
+
summary: Hash._accessor Array.to_sym and DPuts
|
63
|
+
test_files:
|
64
|
+
- test/hc_service.rb
|
65
|
+
- test/test.rb
|
66
|
+
- test/test_arraysym.rb
|
67
|
+
- test/test_dputs.rb
|
68
|
+
- test/test_hashaccessor.rb
|
69
|
+
- test/test_readconfig.rb
|
70
|
+
- test/test_system.rb
|