hookit 0.12.3 → 1.0.0
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 +5 -5
- data/LICENSE +17 -357
- data/README.md +3 -19
- data/Rakefile +5 -5
- data/bin/hookit +2 -4
- data/hookit.gemspec +5 -7
- data/lib/hookit/helper.rb +0 -2
- data/lib/hookit/hook.rb +3 -3
- data/lib/hookit/logger.rb +1 -1
- data/lib/hookit/resource/execute.rb +3 -3
- data/lib/hookit/resource.rb +0 -8
- data/lib/hookit/version.rb +1 -1
- data/lib/hookit.rb +1 -6
- metadata +9 -57
- data/lib/hookit/helper/cron.rb +0 -42
- data/lib/hookit/helper/nfs.rb +0 -113
- data/lib/hookit/platform/base.rb +0 -11
- data/lib/hookit/platform/docker.rb +0 -19
- data/lib/hookit/platform/smartos.rb +0 -19
- data/lib/hookit/platform/ubuntu.rb +0 -19
- data/lib/hookit/platform.rb +0 -10
- data/lib/hookit/platforms.rb +0 -3
- data/lib/hookit/resource/cron.rb +0 -26
- data/lib/hookit/resource/logrotate.rb +0 -38
- data/lib/hookit/resource/mount.rb +0 -92
- data/lib/hookit/resource/package.rb +0 -74
- data/lib/hookit/resource/rsync.rb +0 -67
- data/lib/hookit/resource/scp.rb +0 -87
- data/lib/hookit/resource/service.rb +0 -117
- data/lib/hookit/resource/socket.rb +0 -78
- data/lib/hookit/resource/warning.rb +0 -87
- data/lib/hookit/resource/zfs.rb +0 -99
- data/lib/hookit/setup.rb +0 -59
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hookit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Flint
|
8
|
-
- Greg Linton
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2022-03-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: tilt
|
@@ -67,34 +66,6 @@ dependencies:
|
|
67
66
|
- - ">="
|
68
67
|
- !ruby/object:Gem::Version
|
69
68
|
version: '1.3'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: excon
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: faraday
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
91
|
-
type: :runtime
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
69
|
- !ruby/object:Gem::Dependency
|
99
70
|
name: bundler
|
100
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,9 +94,9 @@ dependencies:
|
|
123
94
|
- - ">="
|
124
95
|
- !ruby/object:Gem::Version
|
125
96
|
version: '0'
|
126
|
-
description:
|
97
|
+
description: A template, build, and configuration framework.
|
127
98
|
email:
|
128
|
-
-
|
99
|
+
- tylerflint@gmail.com
|
129
100
|
executables:
|
130
101
|
- hookit
|
131
102
|
extensions: []
|
@@ -144,41 +115,22 @@ files:
|
|
144
115
|
- lib/hookit/error.rb
|
145
116
|
- lib/hookit/exit.rb
|
146
117
|
- lib/hookit/helper.rb
|
147
|
-
- lib/hookit/helper/cron.rb
|
148
|
-
- lib/hookit/helper/nfs.rb
|
149
118
|
- lib/hookit/helper/shell.rb
|
150
119
|
- lib/hookit/helper/xml.rb
|
151
120
|
- lib/hookit/hook.rb
|
152
121
|
- lib/hookit/logger.rb
|
153
|
-
- lib/hookit/platform.rb
|
154
|
-
- lib/hookit/platform/base.rb
|
155
|
-
- lib/hookit/platform/docker.rb
|
156
|
-
- lib/hookit/platform/smartos.rb
|
157
|
-
- lib/hookit/platform/ubuntu.rb
|
158
|
-
- lib/hookit/platforms.rb
|
159
122
|
- lib/hookit/registry.rb
|
160
123
|
- lib/hookit/resource.rb
|
161
124
|
- lib/hookit/resource/base.rb
|
162
|
-
- lib/hookit/resource/cron.rb
|
163
125
|
- lib/hookit/resource/directory.rb
|
164
126
|
- lib/hookit/resource/execute.rb
|
165
127
|
- lib/hookit/resource/file.rb
|
166
128
|
- lib/hookit/resource/hook_file.rb
|
167
129
|
- lib/hookit/resource/link.rb
|
168
|
-
- lib/hookit/resource/logrotate.rb
|
169
|
-
- lib/hookit/resource/mount.rb
|
170
|
-
- lib/hookit/resource/package.rb
|
171
|
-
- lib/hookit/resource/rsync.rb
|
172
|
-
- lib/hookit/resource/scp.rb
|
173
|
-
- lib/hookit/resource/service.rb
|
174
|
-
- lib/hookit/resource/socket.rb
|
175
130
|
- lib/hookit/resource/template.rb
|
176
|
-
- lib/hookit/resource/warning.rb
|
177
|
-
- lib/hookit/resource/zfs.rb
|
178
131
|
- lib/hookit/resources.rb
|
179
|
-
- lib/hookit/setup.rb
|
180
132
|
- lib/hookit/version.rb
|
181
|
-
homepage:
|
133
|
+
homepage: https://github.com/tylerflint/hookit
|
182
134
|
licenses:
|
183
135
|
- MIT
|
184
136
|
metadata: {}
|
@@ -197,10 +149,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
149
|
- !ruby/object:Gem::Version
|
198
150
|
version: '0'
|
199
151
|
requirements: []
|
200
|
-
|
201
|
-
rubygems_version: 2.4.5.1
|
152
|
+
rubygems_version: 3.0.3.1
|
202
153
|
signing_key:
|
203
154
|
specification_version: 4
|
204
|
-
summary:
|
205
|
-
and
|
155
|
+
summary: A template, build, and configuration framework, primarily intended for CI/CD
|
156
|
+
scenarios where generating configuration files, code, and running tasks like compilation
|
157
|
+
and deployment are necessary.
|
206
158
|
test_files: []
|
data/lib/hookit/helper/cron.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Helper
|
3
|
-
module Cron
|
4
|
-
|
5
|
-
MINUTES = 59
|
6
|
-
HOURS = 23
|
7
|
-
DAYS = 31
|
8
|
-
MONTHS = 12
|
9
|
-
WEEKDAY = 7
|
10
|
-
|
11
|
-
def sanitize_cron(cron)
|
12
|
-
|
13
|
-
time = cron.split(' ')
|
14
|
-
|
15
|
-
time[0] = compatible_cron(time[0],MINUTES)
|
16
|
-
time[1] = compatible_cron(time[1],HOURS)
|
17
|
-
time[2] = compatible_cron(time[2],DAYS, 1)
|
18
|
-
time[3] = compatible_cron(time[3],MONTHS, 1)
|
19
|
-
time[4] = compatible_cron(time[4],WEEKDAY)
|
20
|
-
|
21
|
-
time.join(' ')
|
22
|
-
end
|
23
|
-
|
24
|
-
protected
|
25
|
-
|
26
|
-
# converts */x cron format into solaris compatible format
|
27
|
-
def compatible_cron(time, limit, start = 0)
|
28
|
-
if time =~ /\//
|
29
|
-
increment = time.split('/')[1].to_i
|
30
|
-
x, y = start, []
|
31
|
-
for i in 0..limit/increment
|
32
|
-
y[i] = x
|
33
|
-
x +=increment
|
34
|
-
end
|
35
|
-
time = y.join(',')
|
36
|
-
end
|
37
|
-
time
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
data/lib/hookit/helper/nfs.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Helper
|
3
|
-
module NFS
|
4
|
-
|
5
|
-
def sanitize_network_dirs(payload)
|
6
|
-
net_dirs = net_dirs(payload)
|
7
|
-
|
8
|
-
net_dirs.each do |component, dirs|
|
9
|
-
net_dirs[component] = clean_writables(dirs)
|
10
|
-
end
|
11
|
-
|
12
|
-
net_dirs
|
13
|
-
end
|
14
|
-
|
15
|
-
def net_dirs(payload)
|
16
|
-
key = payload[:storage].keys.first
|
17
|
-
boxfile = payload[:boxfile]
|
18
|
-
|
19
|
-
if boxfile[:shared_writable_dirs]
|
20
|
-
{
|
21
|
-
key => boxfile[:shared_writable_dirs]
|
22
|
-
}
|
23
|
-
elsif boxfile[:network_dirs].is_a? String
|
24
|
-
{
|
25
|
-
key => [boxfile[:network_dirs]]
|
26
|
-
}
|
27
|
-
elsif boxfile[:network_dirs].is_a? Array
|
28
|
-
{
|
29
|
-
key => boxfile[:network_dirs]
|
30
|
-
}
|
31
|
-
else
|
32
|
-
boxfile[:network_dirs] ||= {}
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
def clean_writables(dirs)
|
38
|
-
begin
|
39
|
-
dirs = dirs.map{|i| i.to_s}
|
40
|
-
rescue
|
41
|
-
dirs = [dirs].map{|i| i.to_s}
|
42
|
-
end
|
43
|
-
dirs = remove_empty(dirs)
|
44
|
-
dirs = filter_offensive(dirs)
|
45
|
-
dirs = strip_leading_slash(dirs)
|
46
|
-
dirs = strip_trailing_slash(dirs)
|
47
|
-
dirs = remove_nested(dirs)
|
48
|
-
dirs.uniq
|
49
|
-
end
|
50
|
-
|
51
|
-
def remove_empty(dirs)
|
52
|
-
dirs.inject([]) do |res, elem|
|
53
|
-
res << elem if elem && elem != ""
|
54
|
-
res
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def filter_offensive(dirs)
|
59
|
-
dirs.inject([]) do |res, elem|
|
60
|
-
if elem[0] != '.'
|
61
|
-
# ensure not going up a directory
|
62
|
-
# ensure spaces are intended
|
63
|
-
# ensure directory is not . or /
|
64
|
-
unless elem =~ /(\*|\.?\.\/|(?<!\\)\s)|^\.$|^\/$/
|
65
|
-
res << elem
|
66
|
-
end
|
67
|
-
end
|
68
|
-
res
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def strip_leading_slash(dirs)
|
73
|
-
dirs.inject([]) do |res, elem|
|
74
|
-
if elem[0] == '/'
|
75
|
-
elem.slice!(0)
|
76
|
-
end
|
77
|
-
res << elem
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def strip_trailing_slash(dirs)
|
82
|
-
dirs.inject([]) do |res, elem|
|
83
|
-
if elem[-1] == '/'
|
84
|
-
elem.slice!(-1)
|
85
|
-
end
|
86
|
-
res << elem
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
# this removes nested mounts like:
|
91
|
-
# tmp/
|
92
|
-
# tmp/cache/
|
93
|
-
# tmp/assets/
|
94
|
-
#
|
95
|
-
# and keeps tmp/
|
96
|
-
def remove_nested(dirs)
|
97
|
-
dirs.sort!
|
98
|
-
dirs.inject([]) do |res, elem|
|
99
|
-
overlap = false
|
100
|
-
# now make sure parents dont contain children
|
101
|
-
res.each do |parent|
|
102
|
-
if elem =~ /^#{parent}\//
|
103
|
-
overlap = true
|
104
|
-
end
|
105
|
-
end
|
106
|
-
res << elem if not overlap
|
107
|
-
res
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
data/lib/hookit/platform/base.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Platform
|
3
|
-
class Ubuntu < Base
|
4
|
-
|
5
|
-
def detect?
|
6
|
-
! `[ -x /usr/bin/lsb_release ] && /usr/bin/lsb_release -i 2>/dev/null | grep Ubuntu`.empty?
|
7
|
-
end
|
8
|
-
|
9
|
-
def name
|
10
|
-
'ubuntu'
|
11
|
-
end
|
12
|
-
|
13
|
-
def os
|
14
|
-
'linux'
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/hookit/platform.rb
DELETED
data/lib/hookit/platforms.rb
DELETED
data/lib/hookit/resource/cron.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Resource
|
3
|
-
class Cron < Execute
|
4
|
-
|
5
|
-
def initialize(name)
|
6
|
-
super
|
7
|
-
timeout 60
|
8
|
-
cwd '/data'
|
9
|
-
end
|
10
|
-
|
11
|
-
protected
|
12
|
-
|
13
|
-
def run!
|
14
|
-
begin
|
15
|
-
Timeout::timeout(timeout) do
|
16
|
-
f = IO.popen("#{cmd} || exit 0", :err=>[:child, :out])
|
17
|
-
puts f.readline while true
|
18
|
-
end
|
19
|
-
rescue Timeout::Error
|
20
|
-
$stderr.puts 'Timed out running cron! Consider using a worker.'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Resource
|
3
|
-
class Logrotate < Base
|
4
|
-
|
5
|
-
field :path
|
6
|
-
field :filesize
|
7
|
-
field :max_size
|
8
|
-
field :count
|
9
|
-
|
10
|
-
actions :create
|
11
|
-
default_action :create
|
12
|
-
|
13
|
-
def initialize(name)
|
14
|
-
path name unless path
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def run(action)
|
19
|
-
case action
|
20
|
-
when :create
|
21
|
-
create!
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
protected
|
26
|
-
|
27
|
-
def create!
|
28
|
-
case platform.os
|
29
|
-
when 'sun'
|
30
|
-
`logadm -c -w #{path} -s #{filesize ||= '10m'} -S #{max_size ||= '500m'} -C #{count ||= '10'} -N`
|
31
|
-
else
|
32
|
-
raise Hookit::Error::UnsupportedPlatform, "unsupported platform '#{platform.name}'"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Resource
|
3
|
-
class Mount < Base
|
4
|
-
|
5
|
-
field :device
|
6
|
-
# field :device_type
|
7
|
-
# field :dump
|
8
|
-
field :fstype
|
9
|
-
field :mount_point
|
10
|
-
field :options
|
11
|
-
field :pass
|
12
|
-
field :supports
|
13
|
-
|
14
|
-
actions :mount, :umount, :remount, :enable, :disable
|
15
|
-
default_action :mount
|
16
|
-
|
17
|
-
def initialize(name)
|
18
|
-
mount_point(name) unless mount_point
|
19
|
-
pass('-') unless pass
|
20
|
-
super
|
21
|
-
end
|
22
|
-
|
23
|
-
def run(action)
|
24
|
-
case action
|
25
|
-
when :mount
|
26
|
-
mount!
|
27
|
-
when :umount
|
28
|
-
umount!
|
29
|
-
when :remount
|
30
|
-
umount!
|
31
|
-
mount!
|
32
|
-
when :enable
|
33
|
-
disable!
|
34
|
-
enable!
|
35
|
-
when :disable
|
36
|
-
disable!
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
protected
|
41
|
-
|
42
|
-
def mount!
|
43
|
-
::FileUtils.mkdir_p(mount_point)
|
44
|
-
case platform.os
|
45
|
-
when 'sun'
|
46
|
-
run_command! "mount -O -F #{fstype} -o retry=5,timeo=300 #{options!(as_arg=true)} #{device} #{mount_point}"
|
47
|
-
when 'linux'
|
48
|
-
run_command! "mount -t #{fstype} -o retry=5,timeo=300 #{options!(as_arg=true)} #{device} #{mount_point}"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def umount!
|
53
|
-
run_command! "umount #{mount_point}"
|
54
|
-
end
|
55
|
-
|
56
|
-
def enable!
|
57
|
-
entry = "#{device}\t#{device =~ /^\/dev/ ? device : "-"}\t#{mount_point}\t#{fstype}\t#{pass}\tyes\t#{options!}"
|
58
|
-
case platform.os
|
59
|
-
when 'sun'
|
60
|
-
`echo "#{entry}" >> /etc/vfstab`
|
61
|
-
when 'linux'
|
62
|
-
`echo "#{entry}" >> /etc/fstab`
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def disable!
|
67
|
-
case platform.os
|
68
|
-
when 'sun'
|
69
|
-
`egrep -v "#{device}.*#{mount_point}" /etc/vfstab > /tmp/vfstab.tmp; mv -f /tmp/vfstab.tmp /etc/vfstab`
|
70
|
-
when 'linux'
|
71
|
-
`egrep -v "#{device}.*#{mount_point}" /etc/fstab > /tmp/vfstab.tmp; mv -f /tmp/vfstab.tmp /etc/vfstab`
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def options!(as_arg=false)
|
76
|
-
options = self.options.kind_of?(Array) ? self.options.join(',') : self.options
|
77
|
-
if as_arg
|
78
|
-
options ? (return "-o #{options}") : (return "")
|
79
|
-
end
|
80
|
-
options != "" ? (return "#{options}") : (return "-")
|
81
|
-
end
|
82
|
-
|
83
|
-
def run_command!(cmd, expect_code=0)
|
84
|
-
`#{cmd}`
|
85
|
-
code = $?.exitstatus
|
86
|
-
if code != expect_code
|
87
|
-
raise Hookit::Error::UnexpectedExit, "#{cmd} failed with exit code '#{code}'"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Resource
|
3
|
-
class Package < Base
|
4
|
-
|
5
|
-
field :package_name
|
6
|
-
field :source
|
7
|
-
field :version
|
8
|
-
field :scope
|
9
|
-
|
10
|
-
actions :install
|
11
|
-
default_action :install
|
12
|
-
|
13
|
-
def initialize(name)
|
14
|
-
package_name(name) unless source
|
15
|
-
scope :default unless scope
|
16
|
-
super
|
17
|
-
end
|
18
|
-
|
19
|
-
def run(action)
|
20
|
-
case action
|
21
|
-
when :install
|
22
|
-
install!
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def install!
|
27
|
-
begin
|
28
|
-
install_package
|
29
|
-
rescue Hookit::Error::UnexpectedExit
|
30
|
-
if not registry("pkgsrc.#{scope}.updated")
|
31
|
-
update_pkg_db
|
32
|
-
registry("pkgsrc.#{scope}.updated", true)
|
33
|
-
retry
|
34
|
-
else
|
35
|
-
raise
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
protected
|
41
|
-
|
42
|
-
def install_package
|
43
|
-
`#{pkgin} -y in #{package}`
|
44
|
-
|
45
|
-
code = $?.exitstatus
|
46
|
-
if not code == 0
|
47
|
-
raise Hookit::Error::UnexpectedExit, "pkgin in #{package} failed with exit code '#{code}'"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def update_pkg_db
|
52
|
-
`#{pkgin} -y up`
|
53
|
-
end
|
54
|
-
|
55
|
-
def package
|
56
|
-
if version
|
57
|
-
"#{package_name}-#{version}"
|
58
|
-
else
|
59
|
-
package_name
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def pkgin
|
64
|
-
case scope
|
65
|
-
when :default
|
66
|
-
"/opt/local/bin/pkgin"
|
67
|
-
when :gopagoda
|
68
|
-
"/opt/gopagoda/bin/pkgin"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
module Hookit
|
2
|
-
module Resource
|
3
|
-
class Rsync < Base
|
4
|
-
|
5
|
-
field :source
|
6
|
-
field :destination
|
7
|
-
field :wrapper
|
8
|
-
field :archive
|
9
|
-
field :recursive
|
10
|
-
field :checksum
|
11
|
-
field :compress
|
12
|
-
|
13
|
-
actions :sync
|
14
|
-
default_action :sync
|
15
|
-
|
16
|
-
def initialize(name)
|
17
|
-
source name unless source
|
18
|
-
super
|
19
|
-
end
|
20
|
-
|
21
|
-
def run(action)
|
22
|
-
case action
|
23
|
-
when :sync
|
24
|
-
sync!
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def sync!
|
29
|
-
run_command! "rsync -q#{archive!}#{recursive!}#{checksum!}#{compress!} #{wrapper!} #{source} #{destination}"
|
30
|
-
end
|
31
|
-
|
32
|
-
def archive!
|
33
|
-
(return "a") if archive
|
34
|
-
""
|
35
|
-
end
|
36
|
-
|
37
|
-
def recursive!
|
38
|
-
(return "r") if archive
|
39
|
-
""
|
40
|
-
end
|
41
|
-
|
42
|
-
def checksum!
|
43
|
-
(return "c") if archive
|
44
|
-
""
|
45
|
-
end
|
46
|
-
|
47
|
-
def compress!
|
48
|
-
(return "z") if archive
|
49
|
-
""
|
50
|
-
end
|
51
|
-
|
52
|
-
def wrapper!
|
53
|
-
(return "-e '#{wrapper}'") if wrapper
|
54
|
-
""
|
55
|
-
end
|
56
|
-
|
57
|
-
def run_command!(cmd, expect_code=0)
|
58
|
-
`#{cmd}`
|
59
|
-
code = $?.exitstatus
|
60
|
-
if code != expect_code
|
61
|
-
raise Hookit::Error::UnexpectedExit, "#{cmd} failed with exit code '#{code}'"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|