balmora 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/balmora +0 -0
- data/lib/balmora/arguments.rb +10 -2
- data/lib/balmora/cli.rb +6 -0
- data/lib/balmora/command/exec.rb +1 -1
- data/lib/balmora/command/file.rb +31 -68
- data/lib/balmora/command/files.rb +2 -2
- data/lib/balmora/command/link.rb +106 -0
- data/lib/balmora/command/links.rb +45 -0
- data/lib/balmora/command/yaourt.rb +2 -0
- data/lib/balmora/config.rb +1 -1
- data/lib/balmora/context.rb +9 -9
- data/lib/balmora/context/value.rb +19 -0
- data/lib/balmora/contexts.rb +2 -9
- data/lib/balmora/extension/file_secret.rb +2 -2
- data/lib/balmora/logger.rb +11 -0
- data/lib/balmora/shell.rb +16 -4
- data/lib/balmora/variables/options.rb +7 -0
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cf8833c64f0f3895e288f09db093d2c365a577d
|
4
|
+
data.tar.gz: 405a2c51a8036a656e186d4414d187761a521b5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5924a77e1e27a7fba1d0b997ca1f9ffaa3894351fa10fe74a31eec61c501e0e2de4d5b0790d71b2d15c286c245326b329ad8d2974598c8e52ce17b6ef08d3961
|
7
|
+
data.tar.gz: 1716e508647620798eb6b07bff6e1de6a4cc939b02329b5800782f7e1d33649ce2c76f30384ae722d9dd2314bbba4c69b3c64a7c01c8371b979fc4b2ca5d1d52
|
data/bin/balmora
CHANGED
File without changes
|
data/lib/balmora/arguments.rb
CHANGED
@@ -7,6 +7,7 @@ class Balmora::Arguments
|
|
7
7
|
|
8
8
|
result = {}
|
9
9
|
index = 0
|
10
|
+
tail = nil
|
10
11
|
while index < argv.length
|
11
12
|
arg = argv[index]
|
12
13
|
|
@@ -19,13 +20,20 @@ class Balmora::Arguments
|
|
19
20
|
end
|
20
21
|
|
21
22
|
if new_index.nil?()
|
22
|
-
|
23
|
+
tail = argv[index..-1]
|
24
|
+
break
|
23
25
|
end
|
24
26
|
|
25
27
|
index = new_index + 1
|
26
28
|
end
|
27
29
|
|
28
|
-
|
30
|
+
options.each() { |key, value|
|
31
|
+
if value[:flag] && !result.has_key?(key)
|
32
|
+
result[key] = false
|
33
|
+
end
|
34
|
+
}
|
35
|
+
|
36
|
+
return result, tail
|
29
37
|
end
|
30
38
|
|
31
39
|
protected
|
data/lib/balmora/cli.rb
CHANGED
@@ -33,6 +33,12 @@ class Balmora::Cli
|
|
33
33
|
description: 'Quite mode; reports only errors',
|
34
34
|
},
|
35
35
|
|
36
|
+
dry: {
|
37
|
+
shortcut: 'd',
|
38
|
+
flag: true,
|
39
|
+
description: 'Dry run; will not run modify commands but report it to log',
|
40
|
+
},
|
41
|
+
|
36
42
|
verbose: {
|
37
43
|
shortcut: 'v',
|
38
44
|
flag: true,
|
data/lib/balmora/command/exec.rb
CHANGED
data/lib/balmora/command/file.rb
CHANGED
@@ -2,7 +2,23 @@ class Balmora::Command::File < Balmora::Command
|
|
2
2
|
|
3
3
|
class Error < StandardError; end
|
4
4
|
|
5
|
-
|
5
|
+
def self.resolve_path(shell, source, storage, path)
|
6
|
+
if !source.nil?()
|
7
|
+
return shell.expand(source)
|
8
|
+
end
|
9
|
+
|
10
|
+
storage = shell.expand(storage)
|
11
|
+
|
12
|
+
if path.start_with?('~/')
|
13
|
+
result = ::File.join(storage, path[1..-1])
|
14
|
+
elsif path.start_with?('/')
|
15
|
+
result = ::File.join(storage, path[1..-1])
|
16
|
+
else
|
17
|
+
result = ::File.join(storage, path)
|
18
|
+
end
|
19
|
+
|
20
|
+
return result
|
21
|
+
end
|
6
22
|
|
7
23
|
def init()
|
8
24
|
super()
|
@@ -14,18 +30,17 @@ class Balmora::Command::File < Balmora::Command
|
|
14
30
|
end
|
15
31
|
|
16
32
|
def options()
|
17
|
-
return super().concat([:file, :source, :storage, :action, :
|
33
|
+
return super().concat([:file, :source, :storage, :action, :always,
|
18
34
|
:options])
|
19
35
|
end
|
20
36
|
|
21
37
|
def run()
|
22
|
-
if
|
38
|
+
if @always == true || _source_equals_to_target?()
|
23
39
|
return nil
|
24
40
|
end
|
25
41
|
|
26
42
|
_create_target_path()
|
27
43
|
_copy_file()
|
28
|
-
# _change_file_owner()
|
29
44
|
end
|
30
45
|
|
31
46
|
def verify()
|
@@ -53,51 +68,21 @@ class Balmora::Command::File < Balmora::Command
|
|
53
68
|
protected
|
54
69
|
|
55
70
|
def _create_target_path()
|
56
|
-
|
71
|
+
check = ['test', '-e', ::File.dirname(_target_path())]
|
72
|
+
if @shell.run(check, verbose: false)[0] == 0
|
73
|
+
return
|
74
|
+
end
|
75
|
+
|
76
|
+
mkdir = ['mkdir', '-p', ::File.dirname(_target_path())]
|
77
|
+
@shell.run!(mkdir, change: true)
|
57
78
|
end
|
58
79
|
|
59
80
|
def _copy_file()
|
60
|
-
@shell.run!(['cp', option(:options) ||
|
61
|
-
_target_path()])
|
81
|
+
@shell.run!(['cp', option(:options) || '-T', _source_path(),
|
82
|
+
_target_path()], change: true)
|
62
83
|
end
|
63
84
|
|
64
|
-
|
65
|
-
# new_owner = _get_target_required_owner()
|
66
|
-
# if _get_target_actual_owner() == new_owner
|
67
|
-
# return
|
68
|
-
# end
|
69
|
-
|
70
|
-
# @shell.run!(['chown', new_owner, '-R', _target_path()])
|
71
|
-
# end
|
72
|
-
|
73
|
-
# def _get_target_actual_owner()
|
74
|
-
# owner =
|
75
|
-
# @shell.run!(['stat', '-c', '%U:%G', _target_path()], verbose: false).
|
76
|
-
# strip()
|
77
|
-
|
78
|
-
# return owner
|
79
|
-
# end
|
80
|
-
|
81
|
-
# def _get_target_required_owner()
|
82
|
-
# owner =
|
83
|
-
# if @action == 'pull'
|
84
|
-
# @owner
|
85
|
-
# elsif @action == 'push'
|
86
|
-
# @storage_owner
|
87
|
-
# else
|
88
|
-
# raise Error.new("Can not get owner for action #{@action}")
|
89
|
-
# end
|
90
|
-
|
91
|
-
# owner = owner || @shell.user_id()
|
92
|
-
|
93
|
-
# return owner
|
94
|
-
# end
|
95
|
-
|
96
|
-
def _run_required?()
|
97
|
-
# if @check_equal == false
|
98
|
-
# return true
|
99
|
-
# end
|
100
|
-
|
85
|
+
def _source_equals_to_target?()
|
101
86
|
command = [
|
102
87
|
'test', '-e', _source_path(), _expr('&&'),
|
103
88
|
*@shell.sudo(), 'test', '-e', _target_path(), _expr('&&'),
|
@@ -106,7 +91,7 @@ class Balmora::Command::File < Balmora::Command
|
|
106
91
|
_expr('"$('), *@shell.sudo(), *_target_contents(), _expr('| md5sum)" ]'),
|
107
92
|
]
|
108
93
|
|
109
|
-
return @shell.run(command, verbose: false)[0]
|
94
|
+
return @shell.run(command, verbose: false)[0] == 0
|
110
95
|
end
|
111
96
|
|
112
97
|
def _source_contents()
|
@@ -129,14 +114,6 @@ class Balmora::Command::File < Balmora::Command
|
|
129
114
|
return @shell.expression(expression)
|
130
115
|
end
|
131
116
|
|
132
|
-
def _owner()
|
133
|
-
return @owner || ENV['USER']
|
134
|
-
end
|
135
|
-
|
136
|
-
def _storage_owner()
|
137
|
-
return @storage_owner || ENV['USER']
|
138
|
-
end
|
139
|
-
|
140
117
|
private
|
141
118
|
|
142
119
|
def _files()
|
@@ -148,21 +125,7 @@ class Balmora::Command::File < Balmora::Command
|
|
148
125
|
end
|
149
126
|
|
150
127
|
def _resolve_source_path()
|
151
|
-
|
152
|
-
return @shell.expand(@source)
|
153
|
-
end
|
154
|
-
|
155
|
-
storage = @shell.expand(@storage)
|
156
|
-
|
157
|
-
if @file.start_with?('~/')
|
158
|
-
result = ::File.join(storage, @file[1..-1])
|
159
|
-
elsif @file.start_with?('/')
|
160
|
-
result = ::File.join(storage, @file[1..-1])
|
161
|
-
else
|
162
|
-
result = ::File.join(storage, @file)
|
163
|
-
end
|
164
|
-
|
165
|
-
return result
|
128
|
+
return File.resolve_path(@shell, @source, @storage, @file)
|
166
129
|
end
|
167
130
|
|
168
131
|
end
|
@@ -62,8 +62,8 @@ class Balmora::Command::Files < Balmora::Command
|
|
62
62
|
path = @shell.expand(path)
|
63
63
|
end
|
64
64
|
|
65
|
-
command = ['test', '-d', path, @shell.expression('&&'),
|
66
|
-
'-type', 'f']
|
65
|
+
command = ['test', '-d', path, @shell.expression('&&'), *@shell.sudo(),
|
66
|
+
'find', path, '-type', 'f']
|
67
67
|
|
68
68
|
dir_status, dir_files = @shell.run(command, verbose: false)
|
69
69
|
if dir_status != 0
|
@@ -0,0 +1,106 @@
|
|
1
|
+
class Balmora::Command::Link < Balmora::Command
|
2
|
+
|
3
|
+
class Error < StandardError; end
|
4
|
+
|
5
|
+
def init()
|
6
|
+
super()
|
7
|
+
|
8
|
+
@link = @variables.inject(@link)
|
9
|
+
@source = @variables.inject(@source)
|
10
|
+
@storage = @variables.inject(@storage)
|
11
|
+
end
|
12
|
+
|
13
|
+
def options()
|
14
|
+
return super().concat([:link, :source, :storage])
|
15
|
+
end
|
16
|
+
|
17
|
+
def run()
|
18
|
+
if _exists?(_target())
|
19
|
+
if _link_exists?()
|
20
|
+
return
|
21
|
+
end
|
22
|
+
|
23
|
+
if !_exists?(_source())
|
24
|
+
@shell.run!(['mkdir', '-p', ::File.dirname(_source())], change: true)
|
25
|
+
@shell.run!(['mv', _target(), _source()], change: true)
|
26
|
+
elsif _equals?(_source(), _target())
|
27
|
+
@shell.run!(['rm', '-rf', _target()], change: true)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
_create_target_path()
|
32
|
+
@shell.run!(['ln', @options || '-s', _source(), _target()], change: true)
|
33
|
+
end
|
34
|
+
|
35
|
+
def _exists?(file)
|
36
|
+
status, _ = @shell.run(['test', '-e', file], verbose: false)
|
37
|
+
return status == 0
|
38
|
+
end
|
39
|
+
|
40
|
+
def _link_exists?(d = false)
|
41
|
+
stat_status, stat_result = @shell.run(['stat', _target()],
|
42
|
+
verbose: false)
|
43
|
+
|
44
|
+
if stat_status != 0
|
45
|
+
return false
|
46
|
+
end
|
47
|
+
|
48
|
+
if d
|
49
|
+
p([_target, stat_status, stat_result])
|
50
|
+
end
|
51
|
+
|
52
|
+
if !stat_result.include?(_source())
|
53
|
+
return false
|
54
|
+
end
|
55
|
+
|
56
|
+
return true
|
57
|
+
end
|
58
|
+
|
59
|
+
def verify()
|
60
|
+
if @link.nil?()
|
61
|
+
raise Error.new('"link" should be defined')
|
62
|
+
end
|
63
|
+
|
64
|
+
if !@storage.nil?() && !@source.nil?()
|
65
|
+
raise Error.new('"storage" and "source" could not be defined together')
|
66
|
+
end
|
67
|
+
|
68
|
+
if @storage.nil?() && @source.nil?()
|
69
|
+
raise Error.new('"storage" or "source" should be defined')
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def _equals?(file1, file2)
|
74
|
+
command = [
|
75
|
+
'test', '-e', file1, _expr('&&'),
|
76
|
+
*@shell.sudo(), 'test', '-e', file2, _expr('&&'),
|
77
|
+
_expr('[ "$('), *@shell.sudo(), 'cat', file1, _expr('| md5sum'),
|
78
|
+
_expr(')" = '),
|
79
|
+
_expr('"$('), *@shell.sudo(), 'cat', file2, _expr('| md5sum)" ]')
|
80
|
+
]
|
81
|
+
|
82
|
+
return @shell.run(command, verbose: false)[0] == 0
|
83
|
+
end
|
84
|
+
|
85
|
+
protected
|
86
|
+
|
87
|
+
def _expr(string)
|
88
|
+
return @shell.expression(string)
|
89
|
+
end
|
90
|
+
|
91
|
+
def _create_target_path()
|
92
|
+
@shell.run!(
|
93
|
+
['mkdir', '-p', ::File.dirname(@shell.expand(@link))],
|
94
|
+
verbose: false
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
def _source()
|
99
|
+
return Balmora::Command::File.resolve_path(@shell, @source, @storage, @link)
|
100
|
+
end
|
101
|
+
|
102
|
+
def _target()
|
103
|
+
return @shell.expand(@link)
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Balmora::Command::Links < Balmora::Command
|
2
|
+
|
3
|
+
class Error < StandardError; end
|
4
|
+
|
5
|
+
def init()
|
6
|
+
super()
|
7
|
+
|
8
|
+
@links = @variables.inject(@links)
|
9
|
+
@storage = @variables.inject(@storage)
|
10
|
+
end
|
11
|
+
|
12
|
+
def options()
|
13
|
+
return super().concat([:links, :storage])
|
14
|
+
end
|
15
|
+
|
16
|
+
def verify()
|
17
|
+
if @links.nil?()
|
18
|
+
raise Error.new('"links" should be defined')
|
19
|
+
end
|
20
|
+
|
21
|
+
if @storage.nil?()
|
22
|
+
raise Error.new('"storage" should be defined')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def run()
|
27
|
+
@links.each() { |link|
|
28
|
+
command = _get_command(link)
|
29
|
+
@balmora.run_command(@state, command)
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def _get_command(link)
|
34
|
+
command = (@options || {}).merge(command: 'link', link: link)
|
35
|
+
|
36
|
+
if link.instance_of?(::Hash)
|
37
|
+
command.merge!(link)
|
38
|
+
end
|
39
|
+
|
40
|
+
command.merge!(storage: @storage)
|
41
|
+
|
42
|
+
return command
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/lib/balmora/config.rb
CHANGED
data/lib/balmora/context.rb
CHANGED
@@ -31,7 +31,7 @@ class Balmora::Context < Balmora::Command
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def options()
|
34
|
-
return [:operator, :
|
34
|
+
return [:operator, :operand]
|
35
35
|
end
|
36
36
|
|
37
37
|
def verify()
|
@@ -39,8 +39,8 @@ class Balmora::Context < Balmora::Command
|
|
39
39
|
raise Error.new('"operator" should be defined')
|
40
40
|
end
|
41
41
|
|
42
|
-
if @
|
43
|
-
raise Error.new('"
|
42
|
+
if @operand.nil?()
|
43
|
+
raise Error.new('"operand" should be defined')
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -57,17 +57,17 @@ class Balmora::Context < Balmora::Command
|
|
57
57
|
|
58
58
|
case operator
|
59
59
|
when 'match'
|
60
|
-
return _not(is_not, result.match(@
|
60
|
+
return _not(is_not, result.match(@operand) != nil)
|
61
61
|
when 'equal'
|
62
|
-
return _not(is_not, result == @
|
62
|
+
return _not(is_not, result == @operand)
|
63
63
|
when 'greater'
|
64
|
-
return _not(is_not, result > @
|
64
|
+
return _not(is_not, result > @operand)
|
65
65
|
when 'greater-or-equal'
|
66
|
-
return _not(is_not, result >= @
|
66
|
+
return _not(is_not, result >= @operand)
|
67
67
|
when 'lesser'
|
68
|
-
return _not(is_not, result < @
|
68
|
+
return _not(is_not, result < @operand)
|
69
69
|
when 'lesser-or-equal'
|
70
|
-
return _not(is_not, result <= @
|
70
|
+
return _not(is_not, result <= @operand)
|
71
71
|
end
|
72
72
|
|
73
73
|
raise Error.new("Unknown operator #{operator}")
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Balmora::Context::Value < Balmora::Context
|
2
|
+
|
3
|
+
def options()
|
4
|
+
return super().concat([:value])
|
5
|
+
end
|
6
|
+
|
7
|
+
def verify()
|
8
|
+
if !@value
|
9
|
+
raise Error.new('"value" should be defined')
|
10
|
+
end
|
11
|
+
|
12
|
+
super()
|
13
|
+
end
|
14
|
+
|
15
|
+
def run()
|
16
|
+
return @variables.inject(@value)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/lib/balmora/contexts.rb
CHANGED
@@ -25,11 +25,10 @@ class Balmora::Contexts
|
|
25
25
|
context: 'exec-result',
|
26
26
|
exec: context,
|
27
27
|
operator: 'equal',
|
28
|
-
|
28
|
+
operand: 0,
|
29
29
|
}
|
30
30
|
end
|
31
31
|
|
32
|
-
|
33
32
|
context_class = @extension.get(Balmora::Context, context[:context])
|
34
33
|
context_instance = context_class.new(@state, context)
|
35
34
|
context_instance.init()
|
@@ -67,10 +66,4 @@ class Balmora::Contexts
|
|
67
66
|
return result
|
68
67
|
end
|
69
68
|
|
70
|
-
end
|
71
|
-
|
72
|
-
# [
|
73
|
-
# {"context": "test -e folder/file1; echo $?", "operator": "equal", "value": "0"},
|
74
|
-
# "or",
|
75
|
-
# {"context": "test -e folder/file2; echo $?", "operator": "equal", "value": "0"},
|
76
|
-
# ]
|
69
|
+
end
|
@@ -7,10 +7,10 @@ module Balmora::Extension::FileSecret
|
|
7
7
|
def _copy_file()
|
8
8
|
if @action == 'pull'
|
9
9
|
@shell.run!(_source_contents() + [_expr('|'), *@shell.sudo(), 'tee',
|
10
|
-
_target_path()])
|
10
|
+
_target_path()], change: true)
|
11
11
|
else
|
12
12
|
@shell.run!(['cat', _source_path(), _expr('|'), *_encrypt(), _expr('|'),
|
13
|
-
*@shell.sudo(), 'tee', _target_path()])
|
13
|
+
*@shell.sudo(), 'tee', _target_path()], change: true)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
data/lib/balmora/logger.rb
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
require 'logger'
|
2
|
+
require 'term/ansicolor'
|
2
3
|
|
3
4
|
class Balmora::Logger < Logger
|
4
5
|
|
5
6
|
def self.factory(state)
|
6
7
|
logger = self.new(STDOUT)
|
7
8
|
|
9
|
+
logger.formatter = proc { |severity, _, _, msg|
|
10
|
+
if severity == 'DEBUG'
|
11
|
+
puts(Term::ANSIColor.blue() { msg })
|
12
|
+
elsif severity == 'INFO'
|
13
|
+
puts(Term::ANSIColor.green() { msg })
|
14
|
+
elsif severity == 'ERROR'
|
15
|
+
puts(Term::ANSIColor.red() { msg })
|
16
|
+
end
|
17
|
+
}
|
18
|
+
|
8
19
|
if state.options[:debug] == true && state.options[:quite] == true
|
9
20
|
raise Error.new("Options --quite and --verbose can not be set " +
|
10
21
|
"simulataneously")
|
data/lib/balmora/shell.rb
CHANGED
@@ -6,9 +6,9 @@ class Balmora::Shell
|
|
6
6
|
|
7
7
|
attr_reader :status
|
8
8
|
|
9
|
-
def initialize(message, status)
|
9
|
+
def initialize(message, status = nil)
|
10
10
|
super(message)
|
11
|
-
@status = status
|
11
|
+
@status = status || 1
|
12
12
|
end
|
13
13
|
|
14
14
|
end
|
@@ -27,11 +27,13 @@ class Balmora::Shell
|
|
27
27
|
attr_reader :home, :user_id
|
28
28
|
|
29
29
|
def self.factory(state)
|
30
|
-
return self.new(state.logger)
|
30
|
+
return self.new(state.logger, state.options[:dry])
|
31
31
|
end
|
32
32
|
|
33
|
-
def initialize(logger, home = nil)
|
33
|
+
def initialize(logger, dry, home = nil)
|
34
34
|
@logger = logger
|
35
|
+
@dry = dry
|
36
|
+
|
35
37
|
@run = ::Object.method(:'`')
|
36
38
|
@system = ::Object.method(:system)
|
37
39
|
@status = Proc.new() { $?.exitstatus }
|
@@ -70,12 +72,22 @@ class Balmora::Shell
|
|
70
72
|
}.
|
71
73
|
join(' ')
|
72
74
|
|
75
|
+
dry = false
|
76
|
+
if options[:change] == true && @dry
|
77
|
+
dry = true
|
78
|
+
shell_command = "dry: #{shell_command}"
|
79
|
+
end
|
80
|
+
|
73
81
|
if options[:verbose] != false
|
74
82
|
@logger.info(shell_command)
|
75
83
|
else
|
76
84
|
@logger.debug(shell_command)
|
77
85
|
end
|
78
86
|
|
87
|
+
if dry
|
88
|
+
return 0, ''
|
89
|
+
end
|
90
|
+
|
79
91
|
method = @run
|
80
92
|
if options[:system] == true
|
81
93
|
method = @system
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: balmora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leonid Shagabutdinov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
12
|
-
dependencies:
|
11
|
+
date: 2015-08-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: term-ansicolor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
13
27
|
description: Balmora - linux task runner
|
14
28
|
email: leonid@shagabutdinov.com
|
15
29
|
executables:
|
@@ -26,6 +40,8 @@ files:
|
|
26
40
|
- lib/balmora/command/exec.rb
|
27
41
|
- lib/balmora/command/file.rb
|
28
42
|
- lib/balmora/command/files.rb
|
43
|
+
- lib/balmora/command/link.rb
|
44
|
+
- lib/balmora/command/links.rb
|
29
45
|
- lib/balmora/command/pacman.rb
|
30
46
|
- lib/balmora/command/reload_config.rb
|
31
47
|
- lib/balmora/command/restart.rb
|
@@ -37,6 +53,7 @@ files:
|
|
37
53
|
- lib/balmora/context/config_changed.rb
|
38
54
|
- lib/balmora/context/exec.rb
|
39
55
|
- lib/balmora/context/exec_result.rb
|
56
|
+
- lib/balmora/context/value.rb
|
40
57
|
- lib/balmora/contexts.rb
|
41
58
|
- lib/balmora/extension.rb
|
42
59
|
- lib/balmora/extension/file_secret.rb
|
@@ -46,6 +63,7 @@ files:
|
|
46
63
|
- lib/balmora/state.rb
|
47
64
|
- lib/balmora/variables.rb
|
48
65
|
- lib/balmora/variables/config.rb
|
66
|
+
- lib/balmora/variables/options.rb
|
49
67
|
- lib/balmora/variables/variables.rb
|
50
68
|
homepage: http://github.com/shagabutdinov/balmora
|
51
69
|
licenses:
|