sshkit 0.0.14 → 0.0.15

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.
data/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  This file is written in reverse chronological order, newer releases will
4
4
  appear at the top.
5
5
 
6
+ ## 0.0.15
7
+
8
+ * `Command` now takes a `verbosity` option. This defaults to `Logger::INFO`
9
+ and can be set to any of the Ruby logger level constants. You can also set
10
+ it to the symbol `:debug` (and friends) which will be expanded into the correct
11
+ constants.
12
+
13
+ The log verbosity level is set to Logger::INFO by default, and can be
14
+ overridden by setting `SSHKit.config.output_verbosity = Logger::{...}`,
15
+ pick a level that works for you.
16
+
17
+ By default `test()` and `capture()` calls are surpressed, and not printed
18
+ by the pretty logger as of this version.
19
+
6
20
  ## 0.0.14
7
21
 
8
22
  * Umasks can now be set on `Command` instances. It can be set globally with
data/README.md CHANGED
@@ -173,6 +173,16 @@ on it's implementation it will almost certainly override the implementation of
173
173
  `write()` (alias `<<()`) and query the objects it receives to determine what
174
174
  should be printed.
175
175
 
176
+ ## Verbosity
177
+
178
+ By default calls to `capture()` and `test()` are not logged, they are used
179
+ *so* frequently by backend tasks to check environmental settings that it
180
+ produces a large amount of noise. They are tagged with a verbosity option on
181
+ the `Command` instances of `Logger::DEBUG`. The default configuration for
182
+ output verbosity is avaialble to override with `SSHKit.config.output_verbosity=`,
183
+ and defaults to `Logger::INFO`.
184
+
185
+ At present the `Logger::WARN`, `ERROR` and `FATAL` are not used.
176
186
 
177
187
  ## Known Issues
178
188
 
@@ -16,7 +16,10 @@ module SSHKit
16
16
  end
17
17
 
18
18
  def test(*args)
19
- options = args.extract_options!.merge(raise_on_non_zero_exit: false)
19
+ options = args.extract_options!.merge(
20
+ raise_on_non_zero_exit: false,
21
+ verbosity: Logger::DEBUG
22
+ )
20
23
  _execute(*[*args, options]).success?
21
24
  end
22
25
 
@@ -30,7 +33,8 @@ module SSHKit
30
33
  end
31
34
 
32
35
  def capture(*args)
33
- _execute(*args).stdout.strip
36
+ options = args.extract_options!.merge(verbosity: Logger::DEBUG)
37
+ _execute(*[*args, options]).success?
34
38
  end
35
39
 
36
40
  def configure
@@ -121,7 +121,18 @@ module SSHKit
121
121
  options[:host]
122
122
  end
123
123
 
124
- def to_s
124
+ def verbosity
125
+ if vb = options[:verbosity]
126
+ case vb.class.name
127
+ when 'Symbol' then return Logger.const_get(vb.to_s.upcase)
128
+ when 'Fixnum' then return vb
129
+ end
130
+ else
131
+ Logger::INFO
132
+ end
133
+ end
134
+
135
+ def to_s(expanded=false)
125
136
  return command.to_s if command.match /\s/
126
137
  String.new.tap do |cs|
127
138
  if options[:in]
@@ -2,7 +2,7 @@ module SSHKit
2
2
 
3
3
  class Configuration
4
4
 
5
- attr_accessor :umask
5
+ attr_accessor :umask, :output_verbosity
6
6
  attr_writer :output, :backend, :default_env, :command_map
7
7
 
8
8
  def output
@@ -17,6 +17,10 @@ module SSHKit
17
17
  @backend ||= SSHKit::Backend::Netssh
18
18
  end
19
19
 
20
+ def output_verbosity
21
+ @output_verbosity ||= Logger::INFO
22
+ end
23
+
20
24
  def format=(format)
21
25
  formatter = SSHKit::Formatter.const_get(format.capitalize)
22
26
  self.output = formatter.new($stdout)
@@ -8,22 +8,29 @@ module SSHKit
8
8
 
9
9
  def write(obj)
10
10
  if obj.is_a? SSHKit::Command
11
+
12
+ return if obj.verbosity < SSHKit.config.output_verbosity
13
+
11
14
  unless obj.started?
12
15
  original_output << "[#{c.green(obj.uuid)}] Running #{c.yellow(c.bold(String(obj)))} on #{c.yellow(obj.host.to_s)}\n"
13
16
  end
17
+
14
18
  if obj.complete? && !obj.stdout.empty?
15
19
  obj.stdout.lines.each do |line|
16
20
  original_output << c.green("\t" + line)
17
21
  end
18
22
  end
23
+
19
24
  if obj.complete? && !obj.stderr.empty?
20
25
  obj.stderr.lines.each do |line|
21
26
  original_output << c.red("\t" + line)
22
27
  end
23
28
  end
29
+
24
30
  if obj.finished?
25
31
  original_output << "[#{c.green(obj.uuid)}] Finished in #{sprintf('%5.3f seconds', obj.runtime)} command #{c.bold { obj.failure? ? c.red('failed') : c.green('successful') }}.\n"
26
32
  end
33
+
27
34
  else
28
35
  original_output << c.black(c.on_yellow("Output formatter doesn't know how to handle #{obj.inspect}\n"))
29
36
  end
@@ -1,3 +1,3 @@
1
1
  module SSHKit
2
- VERSION = "0.0.14"
2
+ VERSION = "0.0.15"
3
3
  end
@@ -37,7 +37,7 @@ module SSHKit
37
37
  cd /opt/sites/example.com && /usr/bin/env ls -l /some/directory
38
38
  if test ! -d /opt/sites/example.com/tmp; then echo "Directory does not exist '/opt/sites/example.com/tmp'" 1>&2; false; fi
39
39
  if ! sudo su root -c whoami > /dev/null; then echo "You cannot switch to user 'root' using sudo, please check the sudoers file" 1>&2; false; fi
40
- cd /opt/sites/example.com/tmp && ( RAILS_ENV=production sudo su root -c /usr/bin/env touch restart.txt )
40
+ cd /opt/sites/example.com/tmp && ( RAILS_ENV=production sudo su root -c \"/usr/bin/env touch restart.txt\" )
41
41
  EOEXPECTED
42
42
  end
43
43
 
@@ -120,6 +120,18 @@ module SSHKit
120
120
  assert_equal "cd /var && ( A=b sudo su bob -c \"umask 007 && /usr/bin/env touch somefile\" )", String(c)
121
121
  end
122
122
 
123
+ def test_verbosity_defaults_to_logger_info
124
+ assert_equal Logger::INFO, Command.new(:ls).verbosity
125
+ end
126
+
127
+ def test_overriding_verbosity_level_with_a_constant
128
+ assert_equal Logger::DEBUG, Command.new(:ls, verbosity: Logger::DEBUG).verbosity
129
+ end
130
+
131
+ def test_overriding_verbosity_level_with_a_symbol
132
+ assert_equal Logger::DEBUG, Command.new(:ls, verbosity: :debug).verbosity
133
+ end
134
+
123
135
  def test_complete?
124
136
  c = Command.new(:whoami, raise_on_non_zero_exit: false)
125
137
  refute c.complete?
@@ -21,6 +21,12 @@ module SSHKit
21
21
  assert_equal '007', SSHKit.config.umask
22
22
  end
23
23
 
24
+ def test_output_verbosity
25
+ assert_equal Logger::INFO, SSHKit.config.output_verbosity
26
+ assert SSHKit.config.output_verbosity = Logger::DEBUG
27
+ assert_equal Logger::DEBUG, SSHKit.config.output_verbosity
28
+ end
29
+
24
30
  def test_default_env
25
31
  assert SSHKit.config.default_env
26
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sshkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: