ztk 1.4.4 → 1.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/README.md +1 -1
  2. data/Rakefile +1 -1
  3. data/lib/ztk.rb +3 -23
  4. data/lib/ztk/ansi.rb +94 -33
  5. data/lib/ztk/background.rb +4 -23
  6. data/lib/ztk/base.rb +5 -24
  7. data/lib/ztk/benchmark.rb +4 -23
  8. data/lib/ztk/command.rb +49 -40
  9. data/lib/ztk/config.rb +3 -22
  10. data/lib/ztk/dsl.rb +3 -22
  11. data/lib/ztk/dsl/base.rb +14 -22
  12. data/lib/ztk/dsl/core.rb +4 -24
  13. data/lib/ztk/dsl/core/actions.rb +1 -21
  14. data/lib/ztk/dsl/core/actions/find.rb +2 -22
  15. data/lib/ztk/dsl/core/actions/timestamps.rb +2 -22
  16. data/lib/ztk/dsl/core/attributes.rb +2 -22
  17. data/lib/ztk/dsl/core/dataset.rb +2 -22
  18. data/lib/ztk/dsl/core/io.rb +2 -22
  19. data/lib/ztk/dsl/core/relations.rb +2 -22
  20. data/lib/ztk/dsl/core/relations/belongs_to.rb +2 -22
  21. data/lib/ztk/dsl/core/relations/has_many.rb +2 -22
  22. data/lib/ztk/locator.rb +3 -22
  23. data/lib/ztk/logger.rb +2 -21
  24. data/lib/ztk/parallel.rb +4 -23
  25. data/lib/ztk/pty.rb +8 -23
  26. data/lib/ztk/report.rb +4 -23
  27. data/lib/ztk/rescue_retry.rb +4 -24
  28. data/lib/ztk/spinner.rb +6 -25
  29. data/lib/ztk/ssh.rb +20 -27
  30. data/lib/ztk/ssh/bootstrap.rb +17 -19
  31. data/lib/ztk/ssh/command.rb +1 -19
  32. data/lib/ztk/ssh/download.rb +1 -19
  33. data/lib/ztk/ssh/exec.rb +14 -24
  34. data/lib/ztk/ssh/file.rb +1 -19
  35. data/lib/ztk/ssh/upload.rb +5 -22
  36. data/lib/ztk/tcp_socket_check.rb +3 -22
  37. data/lib/ztk/template.rb +4 -23
  38. data/lib/ztk/ui.rb +5 -25
  39. data/lib/ztk/version.rb +1 -21
  40. data/spec/spec_helper.rb +1 -1
  41. data/spec/ztk/background_spec.rb +1 -1
  42. data/spec/ztk/base_spec.rb +1 -1
  43. data/spec/ztk/benchmark_spec.rb +1 -1
  44. data/spec/ztk/command_spec.rb +1 -1
  45. data/spec/ztk/config_spec.rb +1 -1
  46. data/spec/ztk/dsl_spec.rb +1 -1
  47. data/spec/ztk/locator_spec.rb +1 -1
  48. data/spec/ztk/logger_spec.rb +1 -1
  49. data/spec/ztk/parallel_spec.rb +1 -1
  50. data/spec/ztk/pty_spec.rb +1 -1
  51. data/spec/ztk/rescue_retry_spec.rb +1 -1
  52. data/spec/ztk/spinner_spec.rb +1 -1
  53. data/spec/ztk/ssh_spec.rb +1 -1
  54. data/spec/ztk/tcp_socket_check_spec.rb +1 -1
  55. data/spec/ztk/template_spec.rb +1 -1
  56. data/spec/ztk/ui_spec.rb +1 -1
  57. data/spec/ztk/version_spec.rb +1 -1
  58. data/ztk.gemspec +2 -2
  59. metadata +4 -4
data/README.md CHANGED
@@ -30,7 +30,7 @@ Issues:
30
30
 
31
31
  ZTK - Zachary's (DevOp) Tool Kit
32
32
 
33
- * Author: Zachary Patten <zachary@jovelabs.com> [![endorse](http://api.coderwall.com/zpatten/endorsecount.png)](http://coderwall.com/zpatten)
33
+ * Author: Zachary Patten <zachary AT jovelabs DOT com> [![endorse](http://api.coderwall.com/zpatten/endorsecount.png)](http://coderwall.com/zpatten)
34
34
  * Copyright: Copyright (c) Zachary Patten
35
35
  * License: Apache License, Version 2.0
36
36
 
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  ################################################################################
2
2
  #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
3
+ # Author: Zachary Patten <zachary AT jovelabs DOT com>
4
4
  # Copyright: Copyright (c) Zachary Patten
5
5
  # License: Apache License, Version 2.0
6
6
  #
data/lib/ztk.rb CHANGED
@@ -1,24 +1,4 @@
1
- ################################################################################
2
- #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
4
- # Copyright: Copyright (c) Zachary Patten
5
- # License: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- ################################################################################
20
-
21
- require "ztk/version"
1
+ require 'ztk/version'
22
2
 
23
3
  # Main ZTK module
24
4
  #
@@ -26,12 +6,12 @@ require "ztk/version"
26
6
  # in mind. It provides several classes that ease SSH and SFTP, templating,
27
7
  # and a myraid of other activities.
28
8
  #
29
- # @author Zachary Patten <zachary@jovelabs.net>
9
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
30
10
  module ZTK
31
11
 
32
12
  # ZTK error class
33
13
  #
34
- # @author Zachary Patten <zachary@jovelabs.net>
14
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
35
15
  class Error < StandardError; end
36
16
 
37
17
  autoload :Base, "ztk/base"
data/lib/ztk/ansi.rb CHANGED
@@ -1,44 +1,25 @@
1
- ################################################################################
2
- #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
4
- # Copyright: Copyright (c) Zachary Patten
5
- # License: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- ################################################################################
20
1
  module ZTK
21
2
 
22
3
  # ANSI Error Class
23
- # @author Zachary Patten <zachary@jovelabs.net>
4
+ #
5
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
24
6
  class ANSIError < Error; end
25
7
 
26
8
  # ANSI Mixin Module
27
9
  #
28
- # Include this module to enable easy ANSI coloring methods like:
10
+ # Standard use is to mix this module into String.
29
11
  #
12
+ # @example Mix this module into String to enable easy ANSI coloring methods like:
30
13
  # "bold red".red.bold
31
14
  #
32
- # Or
33
- #
15
+ # @example Or
34
16
  # "green".green
35
17
  #
36
- # Standard use is to mix this module into String.
37
- #
38
- # @author Zachary Patten <zachary@jovelabs.net>
18
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
39
19
  module ANSI
40
20
 
41
- COLOR_MATRIX = {
21
+ # Defines our ANSI color codes
22
+ ANSI_COLORS = {
42
23
  :black => 30,
43
24
  :red => 31,
44
25
  :green => 32,
@@ -49,20 +30,91 @@ module ZTK
49
30
  :white => 37
50
31
  }
51
32
 
52
- ATTRIBUTE_MATRIX = {
33
+ # @!method black(string=nil, &block)
34
+ # Sets the foreground color to black for the supplied string.
35
+ # @param [String] string The string to operate on.
36
+ # @yieldreturn [String] The string to operate on.
37
+ # @return [String] The colored string.
38
+ #
39
+ # @!method red(string=nil, &block)
40
+ # Sets the foreground color to red for the supplied string.
41
+ # @param [String] string The string to operate on.
42
+ # @yieldreturn [String] The string to operate on.
43
+ # @return [String] The colored string.
44
+ #
45
+ # @!method green(string=nil, &block)
46
+ # Sets the foreground color to green for the supplied string.
47
+ # @param [String] string The string to operate on.
48
+ # @yieldreturn [String] The string to operate on.
49
+ # @return [String] The colored string.
50
+ #
51
+ # @!method yellow(string=nil, &block)
52
+ # Sets the foreground color to yellow for the supplied string.
53
+ # @param [String] string The string to operate on.
54
+ # @yieldreturn [String] The string to operate on.
55
+ # @return [String] The colored string.
56
+ #
57
+ # @!method blue(string=nil, &block)
58
+ # Sets the foreground color to blue for the supplied string.
59
+ # @param [String] string The string to operate on.
60
+ # @yieldreturn [String] The string to operate on.
61
+ # @return [String] The colored string.
62
+ #
63
+ # @!method magenta(string=nil, &block)
64
+ # Sets the foreground color to magenta for the supplied string.
65
+ # @param [String] string The string to operate on.
66
+ # @yieldreturn [String] The string to operate on.
67
+ # @return [String] The colored string.
68
+ #
69
+ # @!method cyan(string=nil, &block)
70
+ # Sets the foreground color to cyan for the supplied string.
71
+ # @param [String] string The string to operate on.
72
+ # @yieldreturn [String] The string to operate on.
73
+ # @return [String] The colored string.
74
+ #
75
+ # @!method white(string=nil, &block)
76
+ # Sets the foreground color to white for the supplied string.
77
+ # @param [String] string The string to operate on.
78
+ # @yieldreturn [String] The string to operate on.
79
+ # @return [String] The colored string.
80
+
81
+ # Defines our ANSI attribute codes
82
+ ANSI_ATTRIBUTES = {
53
83
  :normal => 0,
54
84
  :bold => 1
55
85
  }
56
86
 
87
+ # @!method normal(string=nil, &block)
88
+ # Sets the foreground color to normal for the supplied string.
89
+ # @param [String] string The string to operate on.
90
+ # @yieldreturn [String] The string to operate on.
91
+ # @return [String] The colored string.
92
+ #
93
+ # @!method bold(string=nil, &block)
94
+ # Sets the foreground color to bold for the supplied string.
95
+ # @param [String] string The string to operate on.
96
+ # @yieldreturn [String] The string to operate on.
97
+ # @return [String] The colored string.
98
+
99
+ # Defines a RegEx for stripping ANSI codes from strings
57
100
  ANSI_REGEX = /\e\[(?:(?:[349]|10)[0-7]|[0-9]|[34]8;5;\d{1,3})?m/
58
101
 
102
+ # Build ANSI Methods
103
+ #
104
+ # Dynamicly constructs our color methods based on the ANSI code hash passed
105
+ # in.
106
+ #
107
+ # @param [Hash] hash A hash where the keys represent the method names and
108
+ # the values are the ANSI codes.
109
+ # @return [Boolean] True if successful.
59
110
  def build_ansi_methods(hash)
60
111
  hash.each do |key, value|
61
112
  define_method(key) do |string=nil, &block|
62
113
  result = Array.new
114
+
63
115
  result << %(\e[#{value}m)
64
116
  if block_given?
65
- result << yield
117
+ result << block.call
66
118
  elsif string.respond_to?(:to_str)
67
119
  result << string.to_str
68
120
  elsif respond_to?(:to_str)
@@ -75,11 +127,20 @@ module ZTK
75
127
  result.join
76
128
  end
77
129
  end
130
+
131
+ true
78
132
  end
79
133
 
80
- def uncolor(string=nil)
134
+ # Uncolor String
135
+ #
136
+ # Removes ANSI code sequences from a string.
137
+ #
138
+ # @param [String] string The string to operate on.
139
+ # @yieldreturn [String] The string to operate on.
140
+ # @return [String] The supplied string stripped of ANSI codes.
141
+ def uncolor(string=nil, &block)
81
142
  if block_given?
82
- yield.to_str.gsub(ANSI_REGEX, '')
143
+ block.call.to_str.gsub(ANSI_REGEX, '')
83
144
  elsif string.respond_to?(:to_str)
84
145
  string.to_str.gsub(ANSI_REGEX, '')
85
146
  elsif respond_to?(:to_str)
@@ -91,8 +152,8 @@ module ZTK
91
152
 
92
153
  extend self
93
154
 
94
- build_ansi_methods(COLOR_MATRIX)
95
- build_ansi_methods(ATTRIBUTE_MATRIX)
155
+ build_ansi_methods(ANSI_COLORS)
156
+ build_ansi_methods(ANSI_ATTRIBUTES)
96
157
 
97
158
  end
98
159
 
@@ -1,29 +1,10 @@
1
- ################################################################################
2
- #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
4
- # Copyright: Copyright (c) Zachary Patten
5
- # License: Apache License, VersIOn 2.0
6
- #
7
- # Licensed under the Apache License, VersIOn 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissIOns and
17
- # limitatIOns under the License.
18
- #
19
- ################################################################################
20
- require "base64"
1
+ require 'base64'
21
2
 
22
3
  module ZTK
23
4
 
24
- # ZTK::Background General Error Class
5
+ # Background Error Class
25
6
  #
26
- # @author Zachary Patten <zachary@jovelabs.net>
7
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
27
8
  class BackgroundError < Error; end
28
9
 
29
10
  # Background Processing Class
@@ -99,7 +80,7 @@ module ZTK
99
80
  # 1
100
81
  # => nil
101
82
  #
102
- # @author Zachary Patten <zachary@jovelabs.net>
83
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
103
84
  class Background < ZTK::Base
104
85
 
105
86
  # Result Set
data/lib/ztk/base.rb CHANGED
@@ -1,32 +1,13 @@
1
- ################################################################################
2
- #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
4
- # Copyright: Copyright (c) Zachary Patten
5
- # License: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- ################################################################################
20
- require "ostruct"
1
+ require 'ostruct'
21
2
 
22
3
  module ZTK
23
4
 
24
- # ZTK::Base General Error Class
5
+ # Base Error Class
25
6
  #
26
- # @author Zachary Patten <zachary@jovelabs.net>
7
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
27
8
  class BaseError < Error; end
28
9
 
29
- # ZTK Base Class
10
+ # Base Class
30
11
  #
31
12
  # This is the base class inherited by most of the other classes in this
32
13
  # library. It provides a standard set of features to control STDOUT, STDERR
@@ -35,7 +16,7 @@ module ZTK
35
16
  # You should never interact with this class directly; you should inherit it
36
17
  # and extend functionality as appropriate.
37
18
  #
38
- # @author Zachary Patten <zachary@jovelabs.net>
19
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
39
20
  class Base
40
21
 
41
22
  class << self
data/lib/ztk/benchmark.rb CHANGED
@@ -1,32 +1,13 @@
1
- ################################################################################
2
- #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
4
- # Copyright: Copyright (c) Zachary Patten
5
- # License: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- ################################################################################
20
1
  require 'benchmark'
21
2
 
22
3
  module ZTK
23
4
 
24
- # ZTK::Benchmark General Error Class
5
+ # Benchmark Error Class
25
6
  #
26
- # @author Zachary Patten <zachary@jovelabs.net>
7
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
27
8
  class BenchmarkError < Error; end
28
9
 
29
- # ZTK Benchmark Class
10
+ # Benchmark Class
30
11
  #
31
12
  # This class contains a benchmarking tool which doubles to supply indications
32
13
  # of activity to the console user during long running tasks.
@@ -55,7 +36,7 @@ module ZTK
55
36
  # I wonder how long this will take? ...looks like it took 1.5229 seconds!
56
37
  # => 1.522871547
57
38
  #
58
- # @author Zachary Patten <zachary@jovelabs.net>
39
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
59
40
  class Benchmark
60
41
 
61
42
  class << self
data/lib/ztk/command.rb CHANGED
@@ -1,70 +1,79 @@
1
- ################################################################################
2
- #
3
- # Author: Zachary Patten <zachary@jovelabs.net>
4
- # Copyright: Copyright (c) Zachary Patten
5
- # License: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- ################################################################################
20
- require "ostruct"
21
- require "timeout"
1
+ require 'ostruct'
2
+ require 'timeout'
22
3
 
23
4
  module ZTK
24
5
 
25
- # ZTK::Command Error Class
26
- # @author Zachary Patten <zachary@jovelabs.net>
6
+ # Command Error Class
7
+ #
8
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
27
9
  class CommandError < Error; end
28
10
 
29
11
  # Command Execution Class
30
12
  #
31
- # We can get a new instance of Command like so:
32
- #
13
+ # @example We can get a new instance of Command like so:
33
14
  # cmd = ZTK::Command.new
34
15
  #
35
- # If we wanted to redirect STDOUT and STDERR to a StringIO we can do this:
36
- #
16
+ # @example If we wanted to redirect STDOUT and STDERR to a StringIO we can do this:
37
17
  # std_combo = StringIO.new
38
18
  # ui = ZTK::UI.new(:stdout => std_combo, :stderr => std_combo)
39
- # cmd = ZTK::Command.new(:ui => ui)
19
+ # cmd = ZTK::Command.new(:ui => ui, :silence => true)
20
+ # puts cmd.exec("hostname", :silence => false).inspect
40
21
  #
41
- # @author Zachary Patten <zachary@jovelabs.net>
22
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
42
23
  class Command < ZTK::Base
43
24
 
25
+ # @param [Hash] configuration Sets the overall default configuration for the
26
+ # class. For example, all calls to *exec* against this instance will use
27
+ # the configuration options specified here by default. These options can
28
+ # be overriden on a per call basis as well.
29
+ # @option configuration [Integer] :timeout (600) How long in seconds before
30
+ # the command will timeout.
31
+ # @option configuration [Boolean] :ignore_exit_status (false) Whether or not
32
+ # we should ignore the exit status of the the process we spawn. By
33
+ # default we do not ignore the exit status and throw an exception if it is
34
+ # non-zero.
35
+ # @option configuration [Integer] :exit_code (0) The exit code we expect the
36
+ # process to return. This is ignore if *ignore_exit_status* is true.
37
+ # @option configuration [Boolean] :silence (false) Whether or not we should
38
+ # squelch the output of the process. The output will always go to the
39
+ # logging device supplied in the ZTK::UI object. The output is always
40
+ # available in the return value from the method additionally.
44
41
  def initialize(configuration={})
45
42
  super({
46
43
  :timeout => 600,
47
- :ignore_exit_status => false
44
+ :ignore_exit_status => false,
45
+ :exit_code => 0,
46
+ :silence => false
48
47
  }.merge(configuration))
49
48
  config.ui.logger.debug { "config=#{config.send(:table).inspect}" }
50
49
  end
51
50
 
52
- # Executes a local command.
51
+ # Execute Command
52
+ #
53
+ # @example Execute a command:
54
+ # cmd = ZTK::Command.new(:silence => true)
55
+ # puts cmd.exec("hostname", :silence => false).inspect
53
56
  #
54
57
  # @param [String] command The command to execute.
55
58
  # @param [Hash] options The options hash for executing the command.
59
+ # @option options [Integer] :timeout (600) How long in seconds before
60
+ # the command will timeout.
61
+ # @option options [Boolean] :ignore_exit_status (false) Whether or not
62
+ # we should ignore the exit status of the the process we spawn. By
63
+ # default we do not ignore the exit status and throw an exception if it is
64
+ # non-zero.
65
+ # @option options [Integer] :exit_code (0) The exit code we expect the
66
+ # process to return. This is ignore if *ignore_exit_status* is true.
67
+ # @option options [Boolean] :silence (false) Whether or not we should
68
+ # squelch the output of the process. The output will always go to the
69
+ # logging device supplied in the ZTK::UI object. The output is always
70
+ # available in the return value from the method additionally.
56
71
  #
57
72
  # @return [OpenStruct#output] The output of the command, both STDOUT and
58
73
  # STDERR combined.
59
74
  # @return [OpenStruct#exit_code] The exit code of the process.
60
- #
61
- # @example Execute a command:
62
- #
63
- # cmd = ZTK::Command.new
64
- # puts cmd.exec("hostname").inspect
65
- #
66
75
  def exec(command, options={})
67
- options = OpenStruct.new({ :exit_code => 0, :silence => false }.merge(config.send(:table)).merge(options))
76
+ options = OpenStruct.new(config.send(:table).merge(options))
68
77
 
69
78
  options.ui.logger.debug { "config=#{options.send(:table).inspect}" }
70
79
  options.ui.logger.debug { "options=#{options.send(:table).inspect}" }
@@ -177,14 +186,14 @@ module ZTK
177
186
  private
178
187
 
179
188
  # Returns a string in the format of "user@hostname" for the current
180
- # shell.
189
+ # shell.
181
190
  def tag
182
191
  @@hostname ||= %x(hostname).chomp
183
192
  "#{ENV['USER']}@#{@hostname}"
184
193
  end
185
194
 
186
195
  # Formats a header suitable for writing to the direct logger when logging
187
- # sessions.
196
+ # sessions.
188
197
  def log_header(what)
189
198
  count = 8
190
199
  sep = ("=" * count)