airbrussh 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cce6c8fd80458eebccd4bc41fd5f55d45435e056
4
- data.tar.gz: 1e6c39223361f97a90d2593aec1c3f873c61cc13
3
+ metadata.gz: 4190ed3e910f42341fb9f0b011c2344a7e61d319
4
+ data.tar.gz: 241bd99b747b5547aa323d8d279bda603277a822
5
5
  SHA512:
6
- metadata.gz: 1695037c080995aabfe3bca4c05c1066700002803e4909b21fa18c58370e8ce364f3f35d0f624225b2a3a4165aed3410cf6a3bff4f254b26fc70b00f93dbf92f
7
- data.tar.gz: d58bd13170ce51ddc74af022e0661d5b1844ede48eab39ac8d289b67832d8b5a84b7e22ee6ba05c56b4fa35eff3df3bf6ec49cf25dc28405a05ab1973fc37b41
6
+ metadata.gz: 3a3f03a76405c5502739ab9de9600608f635c8367e51ccea07bd8de677977d2bf7a7bc1f3644c0a89105ae3577f498331681d2609be3ff33023c71462abc53c9
7
+ data.tar.gz: b74f8692916139b70407530a83cc8737b3a55c73863569c75bf304bf5595859b63d12c962ed34f240b7cd445d832ab957c7ff61126c913610b0e4fa380b516bc
@@ -1,3 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.2.0
4
+ before_install: gem install bundler --conservative --version '~> 1.8'
@@ -2,6 +2,11 @@
2
2
 
3
3
  * Your contribution here!
4
4
 
5
+ ## 0.4.0 (2015-05-03)
6
+
7
+ * Changes to ensure compatibility with the upcoming version of SSHKit ([ec3122b](https://github.com/mattbrictson/airbrussh/commit/ec3122b101de53f2304723da842d5c8b6f70f4f3)).
8
+ * Explicitly specify UTF-8 encoding for source files, for Ruby 1.9.3 compatibility ([#9](https://github.com/mattbrictson/airbrussh/issues/9)).
9
+
5
10
  ## 0.3.0 (2015-03-28)
6
11
 
7
12
  * New `config.banner` option allows startup message to be disabled or changed (suggestion from [@justindowning](https://github.com/justindowning))
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Airbrussh
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/airbrussh.svg)](http://badge.fury.io/rb/airbrussh)
4
+ [![Build Status](https://travis-ci.org/mattbrictson/airbrussh.svg?branch=master)](https://travis-ci.org/mattbrictson/airbrussh)
4
5
 
5
6
 
6
7
  **Airbrussh is a replacement log formatter for SSHKit that makes your Capistrano output much easier on the eyes.** Just add it to your Capfile and enjoy concise, useful log output that is easy to read.
@@ -9,10 +9,10 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Matt Brictson"]
10
10
  spec.email = ["airbrussh@mattbrictson.com"]
11
11
  spec.summary = "Airbrussh pretties up your SSHKit and Capistrano output"
12
- spec.description = "Airbrussh is a replacement log formatter for SSHKit "\
13
- "that makes your Capistrano output much easier on the "\
14
- "eyes. Just add it to your Capfile and enjoy concise, "\
15
- "useful log output that is easy to read."
12
+ spec.description = "A replacement log formatter for SSHKit that makes "\
13
+ "Capistrano output much easier on the eyes. Just add "\
14
+ "Airbrussh to your Capfile and enjoy concise, useful "\
15
+ "log output that is easy to read."
16
16
  spec.homepage = "https://github.com/mattbrictson/airbrussh"
17
17
  spec.license = "MIT"
18
18
 
@@ -0,0 +1,42 @@
1
+ module Airbrussh
2
+ # A facade that provides access to stdout and stderr command output of
3
+ # sshkit commands. This is needed to normalize the API differences in
4
+ # various sshkit versions.
5
+ class CommandOutput
6
+ def self.for(command)
7
+ if command.respond_to?(:clear_stdout_lines)
8
+ Modern.new(command)
9
+ else
10
+ Legacy.new(command)
11
+ end
12
+ end
13
+
14
+ attr_reader :command
15
+
16
+ def initialize(command)
17
+ @command = command
18
+ end
19
+ end
20
+
21
+ class Legacy < CommandOutput
22
+ # The stderr/stdout methods provided by the command object have the current
23
+ # "chunk" as received over the wire. Since there may be more chunks
24
+ # appended and we don't want to print duplicates, clear the current data.
25
+ def each_line(stream, &block)
26
+ output = command.public_send(stream)
27
+ return if output.empty?
28
+ output.lines.to_a.each(&block)
29
+ command.public_send("#{stream}=", "")
30
+ end
31
+ end
32
+
33
+ class Modern < CommandOutput
34
+ # Newer versions of sshkit take care of clearing the output with the
35
+ # clear_stdout_lines/clear_stderr_lines methods.
36
+ def each_line(stream, &block)
37
+ lines = command.public_send("clear_#{stream}_lines")
38
+ return if lines.join.empty?
39
+ lines.each(&block)
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require "io/console"
2
3
 
3
4
  module Airbrussh
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+ require "airbrussh/command_output"
1
3
  require "airbrussh/console"
2
4
  require "colorize"
3
5
  require "ostruct"
@@ -78,8 +80,8 @@ module Airbrussh
78
80
 
79
81
  def write(obj)
80
82
  # SSHKit's :pretty formatter mutates the stdout and stderr data in the
81
- # command obj. So we need to dup it to ensure our copy is unscathed.
82
- @log_file_formatter << obj.dup
83
+ # command obj. So we need to clone it to ensure our copy is unscathed.
84
+ @log_file_formatter << deep_copy(obj)
83
85
 
84
86
  case obj
85
87
  when SSHKit::Command then write_command(obj)
@@ -135,20 +137,10 @@ module Airbrussh
135
137
  # Use a bit of meta-programming here, since stderr and stdout logic
136
138
  # are identical except for different method names.
137
139
  %w(stderr stdout).each do |stream|
138
-
139
140
  next unless config.public_send("command_output_#{stream}?")
140
- output = command.public_send(stream)
141
- next if output.empty?
142
-
143
- output.lines.each do |line|
141
+ CommandOutput.for(command).each_line(stream) do |line|
144
142
  print_line " #{number} #{line.chomp}"
145
143
  end
146
-
147
- # The stderr/stdout data provided by the command object is the current
148
- # "chunk" as received over the wire. Since there may be more chunks
149
- # appended and we don't want to print duplicates, clear the current
150
- # data.
151
- command.public_send("#{stream}=", "")
152
144
  end
153
145
  end
154
146
 
@@ -233,5 +225,9 @@ module Airbrussh
233
225
  def config
234
226
  Airbrussh.configuration
235
227
  end
228
+
229
+ def deep_copy(obj)
230
+ Marshal.load(Marshal.dump(obj))
231
+ end
236
232
  end
237
233
  end
@@ -1,3 +1,3 @@
1
1
  module Airbrussh
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrussh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-03-28 00:00:00.000000000 Z
11
+ date: 2015-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sshkit
@@ -86,8 +86,8 @@ dependencies:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
- description: Airbrussh is a replacement log formatter for SSHKit that makes your Capistrano
90
- output much easier on the eyes. Just add it to your Capfile and enjoy concise, useful
89
+ description: A replacement log formatter for SSHKit that makes Capistrano output much
90
+ easier on the eyes. Just add Airbrussh to your Capfile and enjoy concise, useful
91
91
  log output that is easy to read.
92
92
  email:
93
93
  - airbrussh@mattbrictson.com
@@ -108,6 +108,7 @@ files:
108
108
  - demo.gif
109
109
  - lib/airbrussh.rb
110
110
  - lib/airbrussh/capistrano.rb
111
+ - lib/airbrussh/command_output.rb
111
112
  - lib/airbrussh/configuration.rb
112
113
  - lib/airbrussh/console.rb
113
114
  - lib/airbrussh/formatter.rb
@@ -133,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
134
  version: '0'
134
135
  requirements: []
135
136
  rubyforge_project:
136
- rubygems_version: 2.4.6
137
+ rubygems_version: 2.4.5
137
138
  signing_key:
138
139
  specification_version: 4
139
140
  summary: Airbrussh pretties up your SSHKit and Capistrano output