omnibus-ctl 0.5.0 → 0.6.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 +4 -4
- data/README.md +22 -1
- data/lib/omnibus-ctl.rb +44 -17
- data/lib/omnibus-ctl/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7124151190ecb3203434afe79f6f705cc92006ac
|
4
|
+
data.tar.gz: 2054e06087ef69abeb032265e01fd32dfc5db730
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd94929d628f632dd24ab41e36e3efba988ce2a0c7193172e1089d48136bbe108a997cc42a5438fd0165a8f3ce469911ddabae3c2965da002561a8084fb581b2
|
7
|
+
data.tar.gz: 3ce02e9da7978e6d40837d7ccf7e141a67b9447b9837e966b7b1db8d0d66a1007c1e36cf9283a383d9ee384ba41bfe8cd9d1026ff5795f9751dfae3d221cef65
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Then run the tests:
|
|
22
22
|
bin/rspec
|
23
23
|
```
|
24
24
|
|
25
|
-
##
|
25
|
+
## Command API
|
26
26
|
|
27
27
|
There are two main functions you will use in your `*-ctl` project to add commands.
|
28
28
|
|
@@ -67,6 +67,27 @@ Another Category:
|
|
67
67
|
|
68
68
|
If you only use `add_command_under_category` to add your custom commands, everything will be outputted under a category.
|
69
69
|
|
70
|
+
## Pre-hook API
|
71
|
+
|
72
|
+
### add_global_pre_hook(string, ruby_block)
|
73
|
+
|
74
|
+
This method will add a global pre-hook block that will be executed before any
|
75
|
+
*-ctl command is run. If the pre-hook raises an exception it will cause an early
|
76
|
+
exit before the command is run.
|
77
|
+
|
78
|
+
Input Arguments:
|
79
|
+
|
80
|
+
1. Name of the hook
|
81
|
+
1. Ruby block of the code to be executed.
|
82
|
+
|
83
|
+
### Sample
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
add_global_pre_hook "ensure that the user is always root" do
|
87
|
+
raise "You must run this command as root" unless Process.uid == 0
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
70
91
|
## Releasing
|
71
92
|
|
72
93
|
*NOTE: Versions prior to 0.3.6 do not use a "v" prefix for their tags. Current
|
data/lib/omnibus-ctl.rb
CHANGED
@@ -27,7 +27,7 @@ module Omnibus
|
|
27
27
|
|
28
28
|
File::umask(022)
|
29
29
|
|
30
|
-
SV_COMMAND_NAMES = %w[status up down once pause cont hup alarm
|
30
|
+
SV_COMMAND_NAMES = %w[status up down once pause cont hup alarm int quit
|
31
31
|
term kill start stop restart shutdown force-stop
|
32
32
|
force-reload force-restart force-shutdown check usr1 usr2]
|
33
33
|
|
@@ -56,6 +56,12 @@ module Omnibus
|
|
56
56
|
@quiet = false
|
57
57
|
@exe_name = File.basename($0)
|
58
58
|
@force_exit = false
|
59
|
+
@global_pre_hooks = {}
|
60
|
+
|
61
|
+
# TODO(ssd) 2017-03-28: Set SVDIR explicitly. Once we fix a bug
|
62
|
+
# in our debian support, where we rely on system-installed
|
63
|
+
# runit, we can likely change this back to ENV.delete("SVDIR")
|
64
|
+
ENV['SVDIR'] = service_path
|
59
65
|
|
60
66
|
# backwards compat command map that does not have categories
|
61
67
|
@command_map = { }
|
@@ -151,6 +157,7 @@ module Omnibus
|
|
151
157
|
def self.to_method_name(name)
|
152
158
|
name.gsub(/-/, '_').to_sym
|
153
159
|
end
|
160
|
+
|
154
161
|
def to_method_name(name)
|
155
162
|
Ctl.to_method_name(name)
|
156
163
|
end
|
@@ -185,21 +192,22 @@ module Omnibus
|
|
185
192
|
eval(IO.read(filepath), nil, filepath, 1)
|
186
193
|
end
|
187
194
|
|
188
|
-
def add_command(name, description, arity=1, &block)
|
189
|
-
@command_map[name] = { :
|
190
|
-
|
191
|
-
# Ruby does not like dashes in method names
|
192
|
-
method_name = to_method_name(name).to_sym
|
193
|
-
metaclass.send(:define_method, method_name) { |*args| block.call(*args) }
|
195
|
+
def add_command(name, description, arity = 1, &block)
|
196
|
+
@command_map[name] = { desc: description, arity: arity }
|
197
|
+
self.class.send(:define_method, to_method_name(name).to_sym) { |*args| block.call(*args) }
|
194
198
|
end
|
195
199
|
|
196
|
-
def add_command_under_category(name, category, description, arity=1, &block)
|
200
|
+
def add_command_under_category(name, category, description, arity = 1, &block)
|
197
201
|
# add new category if it doesn't exist
|
198
|
-
@category_command_map[category]
|
199
|
-
@category_command_map[category][name] = { :
|
200
|
-
|
201
|
-
|
202
|
-
|
202
|
+
@category_command_map[category] ||= {}
|
203
|
+
@category_command_map[category][name] = { desc: description, arity: arity }
|
204
|
+
self.class.send(:define_method, to_method_name(name).to_sym) { |*args| block.call(*args) }
|
205
|
+
end
|
206
|
+
|
207
|
+
def add_global_pre_hook(name, &block)
|
208
|
+
method_name = to_method_name("#{name}_global_pre_hook").to_sym
|
209
|
+
@global_pre_hooks[name] = method_name
|
210
|
+
self.class.send(:define_method, method_name, block)
|
203
211
|
end
|
204
212
|
|
205
213
|
def exit!(code)
|
@@ -481,11 +489,11 @@ EOM
|
|
481
489
|
|
482
490
|
def run_chef(attr_location, args='')
|
483
491
|
if @verbose
|
484
|
-
log_level = "-
|
492
|
+
log_level = "-l debug"
|
485
493
|
elsif @quiet
|
486
494
|
# null formatter is awfully quiet, so let them know we're doing something.
|
487
495
|
log "Reconfiguring #{display_name}."
|
488
|
-
log_level = "-
|
496
|
+
log_level = "-l fatal -F null"
|
489
497
|
else
|
490
498
|
log_level = ""
|
491
499
|
end
|
@@ -568,10 +576,10 @@ EOM
|
|
568
576
|
|
569
577
|
def tail(*args)
|
570
578
|
# find /var/log -type f -not -path '*/sasl/*' | grep -E -v '(lock|@|tgz|gzip)' | xargs tail --follow=name --retry
|
571
|
-
command = "find #{log_path}"
|
579
|
+
command = "find -L #{log_path}"
|
572
580
|
command << "/#{args[1]}" if args[1]
|
573
581
|
command << ' -type f'
|
574
|
-
command << log_path_exclude.map { |path| " -not -path #{path}" }.join(' ')
|
582
|
+
command << log_path_exclude.map { |path| " -not -path '#{path}'" }.join(' ')
|
575
583
|
command << " | grep -E -v '#{log_exclude}' | xargs tail --follow=name --retry"
|
576
584
|
|
577
585
|
system(command)
|
@@ -686,6 +694,12 @@ EOM
|
|
686
694
|
|
687
695
|
command_to_run = args[0]
|
688
696
|
|
697
|
+
## when --help is run as the command itself, we need to strip off the
|
698
|
+
## `--` to ensure the command maps correctly.
|
699
|
+
if command_to_run == "--help"
|
700
|
+
command_to_run = "help"
|
701
|
+
end
|
702
|
+
|
689
703
|
# This piece of code checks if the argument is an option. If it is,
|
690
704
|
# then it sets service to nil and adds the argument into the options
|
691
705
|
# argument. This is ugly. A better solution is having a proper parser.
|
@@ -721,6 +735,8 @@ EOM
|
|
721
735
|
@force_exit = false
|
722
736
|
exit_code = 0
|
723
737
|
|
738
|
+
run_global_pre_hooks
|
739
|
+
|
724
740
|
# Filter args to just command and service. If you are loading
|
725
741
|
# custom commands and need access to the command line argument,
|
726
742
|
# use ARGV directly.
|
@@ -747,6 +763,17 @@ EOM
|
|
747
763
|
end
|
748
764
|
end
|
749
765
|
|
766
|
+
def run_global_pre_hooks
|
767
|
+
@global_pre_hooks.each do |hook_name, method_name|
|
768
|
+
begin
|
769
|
+
send(method_name)
|
770
|
+
rescue => e
|
771
|
+
$stderr.puts("Global pre-hook '#{hook_name}' failed with: '#{e.message}'")
|
772
|
+
exit(1)
|
773
|
+
end
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
750
777
|
# Below are some basic command hooks that do the right thing
|
751
778
|
# when a service is configured as external via [package][service
|
752
779
|
|
data/lib/omnibus-ctl/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnibus-ctl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Chef Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -66,7 +66,8 @@ files:
|
|
66
66
|
- lib/omnibus-ctl.rb
|
67
67
|
- lib/omnibus-ctl/version.rb
|
68
68
|
homepage: http://github.com/chef/omnibus-ctl
|
69
|
-
licenses:
|
69
|
+
licenses:
|
70
|
+
- Apache-2.0
|
70
71
|
metadata: {}
|
71
72
|
post_install_message:
|
72
73
|
rdoc_options: []
|
@@ -84,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
85
|
version: '0'
|
85
86
|
requirements: []
|
86
87
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.
|
88
|
+
rubygems_version: 2.6.13
|
88
89
|
signing_key:
|
89
90
|
specification_version: 4
|
90
91
|
summary: Provides command line control for omnibus packages
|