tango 0.1.9 → 0.1.10

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.
@@ -1,7 +1,20 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Tango
4
+ module TermANSIColorStubs
5
+ [:red, :green, :yellow].each do |color|
6
+ define_method(color) { |str| str }
7
+ end
8
+ end
9
+
4
10
  class Logger
11
+ begin
12
+ require 'term/ansicolor'
13
+ include Term::ANSIColor
14
+ rescue LoadError
15
+ include TermANSIColorStubs
16
+ end
17
+
5
18
  def self.instance
6
19
  @logger ||= Logger.new
7
20
  end
@@ -11,14 +24,19 @@ module Tango
11
24
  @depth = 0
12
25
  end
13
26
 
14
- def enter(step_name)
15
- log "#{step_name} {"
27
+ def begin_step(step_name)
28
+ log "#{yellow(step_name)} {"
16
29
  @depth += 1
17
30
  end
18
31
 
19
- def leave(step_name)
32
+ def step_met(step_name)
33
+ @depth -= 1
34
+ log "} #{green("√ #{step_name}")}"
35
+ end
36
+
37
+ def step_not_met(step_name)
20
38
  @depth -= 1
21
- log "} #{step_name}"
39
+ log "} #{red("✕ #{step_name}")}\n\n"
22
40
  end
23
41
 
24
42
  def log(message)
@@ -22,9 +22,15 @@ module Tango
22
22
  define_method(step_name) do |*args|
23
23
  description = step_description(step_name, args)
24
24
 
25
- logger.enter(description)
26
- result = instance_exec(*args, &block)
27
- logger.leave(description)
25
+ logger.begin_step(description)
26
+ begin
27
+ result = instance_exec(*args, &block)
28
+ rescue StandardError
29
+ logger.step_not_met(description)
30
+ raise
31
+ else
32
+ logger.step_met(description)
33
+ end
28
34
 
29
35
  result
30
36
  end
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Tango
4
- VERSION = "0.1.9"
4
+ VERSION = "0.1.10"
5
5
  end
@@ -11,22 +11,27 @@ module Tango
11
11
  @logger = Logger.new(@io)
12
12
  end
13
13
 
14
- it "should output the step name when entering a step" do
15
- @logger.enter("example step")
14
+ it "should output the step name when beginning a step" do
15
+ @logger.begin_step("example step")
16
16
  @io.string.should == "example step {\n"
17
17
  end
18
18
 
19
- it "should output a closing brace when leaving a step" do
20
- @logger.enter("example step")
21
- @logger.leave("example step")
19
+ it "should output a closing brace when a step is met" do
20
+ @logger.begin_step("example step")
21
+ @logger.step_met("example step")
22
22
  @io.string.should == "example step {\n} √ example step\n"
23
23
  end
24
24
 
25
+ it "should output a closing brace when a step is not met" do
26
+ @logger.begin_step("example step")
27
+ @logger.step_not_met("example step")
28
+ @io.string.should == "example step {\n} ✕ example step\n\n"
29
+ end
30
+
25
31
  it "should indent nested steps" do
26
- @logger.enter("outer step")
27
- @logger.enter("inner step")
32
+ @logger.begin_step("outer step")
33
+ @logger.begin_step("inner step")
28
34
  @io.string.should == "outer step {\n inner step {\n"
29
35
  end
30
-
31
36
  end
32
37
  end
@@ -3,8 +3,9 @@
3
3
  require 'tango'
4
4
 
5
5
  class StubbedLogger
6
- def enter(name); end
7
- def leave(name); end
6
+ def begin_step(name); end
7
+ def step_not_met(name); end
8
+ def step_met(name); end
8
9
  def log(message); end
9
10
  end
10
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tango
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-17 00:00:00.000000000Z
12
+ date: 2012-03-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70112418398640 !ruby/object:Gem::Requirement
16
+ requirement: &70254852148920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70112418398640
24
+ version_requirements: *70254852148920
25
25
  description: Experiment in deployment tools, taking ideas from babushka and elsewhere.
26
26
  email:
27
27
  - pete@notahat.com
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  requirements: []
88
88
  rubyforge_project: tango
89
- rubygems_version: 1.8.10
89
+ rubygems_version: 1.8.11
90
90
  signing_key:
91
91
  specification_version: 3
92
92
  summary: Experiment in deployment tools.