taketo 0.0.6 → 0.0.7
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/Gemfile +1 -1
 - data/Gemfile.lock +3 -3
 - data/README.md +20 -7
 - data/VERSION +1 -1
 - data/bin/taketo +30 -31
 - data/features/config.feature +33 -3
 - data/features/config_validation.feature +29 -4
 - data/features/connect_to_server.feature +2 -1
 - data/features/error_handling.feature +1 -0
 - data/features/help.feature +5 -3
 - data/features/support/env.rb +2 -0
 - data/lib/taketo/associated_nodes.rb +90 -0
 - data/lib/taketo/commands/ssh_command.rb +0 -4
 - data/lib/taketo/config_printer_visitor.rb +68 -0
 - data/lib/taketo/config_traverser.rb +55 -0
 - data/lib/taketo/config_validator.rb +33 -34
 - data/lib/taketo/config_visitor.rb +29 -0
 - data/lib/taketo/constructs/base_construct.rb +9 -54
 - data/lib/taketo/constructs/command.rb +9 -1
 - data/lib/taketo/constructs/environment.rb +11 -1
 - data/lib/taketo/constructs/project.rb +5 -0
 - data/lib/taketo/constructs/server.rb +7 -4
 - data/lib/taketo/dsl.rb +13 -2
 - data/lib/taketo/support/named_nodes_collection.rb +10 -0
 - data/lib/taketo/support.rb +0 -1
 - data/lib/taketo.rb +2 -1
 - data/spec/integration/dsl_integration_spec.rb +1 -1
 - data/spec/lib/taketo/associated_nodes_spec.rb +101 -0
 - data/spec/lib/taketo/commands/ssh_command_spec.rb +5 -15
 - data/spec/lib/taketo/config_printer_visitor_spec.rb +112 -0
 - data/spec/lib/taketo/config_traverser_spec.rb +63 -0
 - data/spec/lib/taketo/config_validator_spec.rb +53 -39
 - data/spec/lib/taketo/config_visitor_spec.rb +51 -0
 - data/spec/lib/taketo/constructs/base_construct_spec.rb +7 -70
 - data/spec/lib/taketo/constructs/command_spec.rb +20 -8
 - data/spec/lib/taketo/constructs/config_spec.rb +2 -6
 - data/spec/lib/taketo/constructs/environment_spec.rb +12 -7
 - data/spec/lib/taketo/constructs/project_spec.rb +10 -4
 - data/spec/lib/taketo/constructs/server_spec.rb +25 -16
 - data/spec/lib/taketo/constructs_factory_spec.rb +12 -12
 - data/spec/lib/taketo/destination_resolver_spec.rb +32 -32
 - data/spec/lib/taketo/dsl_spec.rb +115 -98
 - data/spec/lib/taketo/support/named_nodes_collection_spec.rb +49 -21
 - data/spec/support/helpers/construct_spec_helper.rb +5 -5
 - data/spec/support/matchers/be_appropriate_construct_matcher.rb +9 -1
 - data/spec/support/matchers/have_accessor_matcher.rb +6 -3
 - metadata +18 -7
 - data/lib/taketo/config_printer.rb +0 -84
 - data/lib/taketo/support/eval_delegator.rb +0 -25
 - data/spec/lib/taketo/config_printer_spec.rb +0 -116
 - data/spec/lib/taketo/support/eval_delegator_spec.rb +0 -43
 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: taketo
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.7
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-10-08 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rspec
         
     | 
| 
         @@ -75,7 +75,14 @@ dependencies: 
     | 
|
| 
       75 
75 
     | 
    
         
             
                - - ~>
         
     | 
| 
       76 
76 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       77 
77 
     | 
    
         
             
                    version: '0.6'
         
     | 
| 
       78 
     | 
    
         
            -
            description: 
         
     | 
| 
      
 78 
     | 
    
         
            +
            description: ! "    The aim of the project is to aid quick access to often used servers
         
     | 
| 
      
 79 
     | 
    
         
            +
              for web-developers\n\n    With config similar to the following, one could make his
         
     | 
| 
      
 80 
     | 
    
         
            +
              life easier:\n\n    project :my_project do\n      environment :staging do\n        server
         
     | 
| 
      
 81 
     | 
    
         
            +
              do\n          host \"192.168.1.1\"\n          location \"/var/www/prj1\"\n          env
         
     | 
| 
      
 82 
     | 
    
         
            +
              :TERM => \"xterm-256color\"\n        end\n      end\n    end\n\n    put it in ~/.taketo.rc.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
              (or wherever you want using --config)\n    and `taketo my_project` effectively becomes:\n
         
     | 
| 
      
 84 
     | 
    
         
            +
              \   `ssh -t 192.168.1.1 \"cd /var/www/prj1; TERM=xterm-256color RAILS_ENV=staging
         
     | 
| 
      
 85 
     | 
    
         
            +
              bash\"`\n\n    see http://github.com/v-yarotsky/taketo for additional instructions\n"
         
     | 
| 
       79 
86 
     | 
    
         
             
            email: vladimir.yarotksy@gmail.com
         
     | 
| 
       80 
87 
     | 
    
         
             
            executables:
         
     | 
| 
       81 
88 
     | 
    
         
             
            - taketo
         
     | 
| 
         @@ -83,10 +90,13 @@ extensions: [] 
     | 
|
| 
       83 
90 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       84 
91 
     | 
    
         
             
            files:
         
     | 
| 
       85 
92 
     | 
    
         
             
            - bin/taketo
         
     | 
| 
      
 93 
     | 
    
         
            +
            - lib/taketo/associated_nodes.rb
         
     | 
| 
       86 
94 
     | 
    
         
             
            - lib/taketo/commands/ssh_command.rb
         
     | 
| 
       87 
95 
     | 
    
         
             
            - lib/taketo/commands.rb
         
     | 
| 
       88 
     | 
    
         
            -
            - lib/taketo/ 
     | 
| 
      
 96 
     | 
    
         
            +
            - lib/taketo/config_printer_visitor.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib/taketo/config_traverser.rb
         
     | 
| 
       89 
98 
     | 
    
         
             
            - lib/taketo/config_validator.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/taketo/config_visitor.rb
         
     | 
| 
       90 
100 
     | 
    
         
             
            - lib/taketo/constructs/base_construct.rb
         
     | 
| 
       91 
101 
     | 
    
         
             
            - lib/taketo/constructs/command.rb
         
     | 
| 
       92 
102 
     | 
    
         
             
            - lib/taketo/constructs/config.rb
         
     | 
| 
         @@ -97,15 +107,17 @@ files: 
     | 
|
| 
       97 
107 
     | 
    
         
             
            - lib/taketo/constructs_factory.rb
         
     | 
| 
       98 
108 
     | 
    
         
             
            - lib/taketo/destination_resolver.rb
         
     | 
| 
       99 
109 
     | 
    
         
             
            - lib/taketo/dsl.rb
         
     | 
| 
       100 
     | 
    
         
            -
            - lib/taketo/support/eval_delegator.rb
         
     | 
| 
       101 
110 
     | 
    
         
             
            - lib/taketo/support/key_error.rb
         
     | 
| 
       102 
111 
     | 
    
         
             
            - lib/taketo/support/named_nodes_collection.rb
         
     | 
| 
       103 
112 
     | 
    
         
             
            - lib/taketo/support.rb
         
     | 
| 
       104 
113 
     | 
    
         
             
            - lib/taketo.rb
         
     | 
| 
       105 
114 
     | 
    
         
             
            - spec/integration/dsl_integration_spec.rb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - spec/lib/taketo/associated_nodes_spec.rb
         
     | 
| 
       106 
116 
     | 
    
         
             
            - spec/lib/taketo/commands/ssh_command_spec.rb
         
     | 
| 
       107 
     | 
    
         
            -
            - spec/lib/taketo/ 
     | 
| 
      
 117 
     | 
    
         
            +
            - spec/lib/taketo/config_printer_visitor_spec.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - spec/lib/taketo/config_traverser_spec.rb
         
     | 
| 
       108 
119 
     | 
    
         
             
            - spec/lib/taketo/config_validator_spec.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - spec/lib/taketo/config_visitor_spec.rb
         
     | 
| 
       109 
121 
     | 
    
         
             
            - spec/lib/taketo/constructs/base_construct_spec.rb
         
     | 
| 
       110 
122 
     | 
    
         
             
            - spec/lib/taketo/constructs/command_spec.rb
         
     | 
| 
       111 
123 
     | 
    
         
             
            - spec/lib/taketo/constructs/config_spec.rb
         
     | 
| 
         @@ -115,7 +127,6 @@ files: 
     | 
|
| 
       115 
127 
     | 
    
         
             
            - spec/lib/taketo/constructs_factory_spec.rb
         
     | 
| 
       116 
128 
     | 
    
         
             
            - spec/lib/taketo/destination_resolver_spec.rb
         
     | 
| 
       117 
129 
     | 
    
         
             
            - spec/lib/taketo/dsl_spec.rb
         
     | 
| 
       118 
     | 
    
         
            -
            - spec/lib/taketo/support/eval_delegator_spec.rb
         
     | 
| 
       119 
130 
     | 
    
         
             
            - spec/lib/taketo/support/named_nodes_collection_spec.rb
         
     | 
| 
       120 
131 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       121 
132 
     | 
    
         
             
            - spec/support/helpers/construct_spec_helper.rb
         
     | 
| 
         @@ -1,84 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Taketo
         
     | 
| 
       2 
     | 
    
         
            -
              class ConfigPrinter
         
     | 
| 
       3 
     | 
    
         
            -
                def initialize
         
     | 
| 
       4 
     | 
    
         
            -
                  @indent_level = 0
         
     | 
| 
       5 
     | 
    
         
            -
                  @result = ""
         
     | 
| 
       6 
     | 
    
         
            -
                end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                def result
         
     | 
| 
       9 
     | 
    
         
            -
                  @result.chomp
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                def render(object)
         
     | 
| 
       13 
     | 
    
         
            -
                  method = "render_#{object.node_type}"
         
     | 
| 
       14 
     | 
    
         
            -
                  send(method, object)
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                def render_command(command)
         
     | 
| 
       18 
     | 
    
         
            -
                  put command.name.to_s + (" - " + command.description if command.description).to_s
         
     | 
| 
       19 
     | 
    
         
            -
                  result
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                def render_server(server)
         
     | 
| 
       23 
     | 
    
         
            -
                  section("Server: #{server.name}") do
         
     | 
| 
       24 
     | 
    
         
            -
                    put "Host: #{server.host}"
         
     | 
| 
       25 
     | 
    
         
            -
                    put "Port: #{server.port}" if server.port
         
     | 
| 
       26 
     | 
    
         
            -
                    put "User: #{server.username}" if server.username
         
     | 
| 
       27 
     | 
    
         
            -
                    put "Default location: #{server.default_location}" if server.default_location
         
     | 
| 
       28 
     | 
    
         
            -
                    put "Environment: " + server.environment_variables.map { |n, v| "#{n}=#{v}" }.join(" ")
         
     | 
| 
       29 
     | 
    
         
            -
                    unless server.commands.empty?
         
     | 
| 
       30 
     | 
    
         
            -
                      section("Commands:") do
         
     | 
| 
       31 
     | 
    
         
            -
                        server.commands.each { |c| render_command(c) }
         
     | 
| 
       32 
     | 
    
         
            -
                      end
         
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                  end
         
     | 
| 
       35 
     | 
    
         
            -
                  result
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                def render_environment(environment)
         
     | 
| 
       39 
     | 
    
         
            -
                  section("Environment: #{environment.name}", ("(No servers)" if environment.servers.empty?)) do
         
     | 
| 
       40 
     | 
    
         
            -
                    if environment.servers.any?
         
     | 
| 
       41 
     | 
    
         
            -
                      environment.servers.each { |s| render_server(s) }
         
     | 
| 
       42 
     | 
    
         
            -
                    end
         
     | 
| 
       43 
     | 
    
         
            -
                  end
         
     | 
| 
       44 
     | 
    
         
            -
                  result
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                def render_project(project)
         
     | 
| 
       48 
     | 
    
         
            -
                  section("Project: #{project.name}", ("(No environments)" if project.environments.empty?)) do
         
     | 
| 
       49 
     | 
    
         
            -
                    if project.environments.any?
         
     | 
| 
       50 
     | 
    
         
            -
                      project.environments.each { |e| render_environment(e) }
         
     | 
| 
       51 
     | 
    
         
            -
                    end
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
                  put
         
     | 
| 
       54 
     | 
    
         
            -
                  result
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                def render_config(config)
         
     | 
| 
       58 
     | 
    
         
            -
                  if config.projects.any?
         
     | 
| 
       59 
     | 
    
         
            -
                    config.projects.each { |p| render_project(p) }
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                    put
         
     | 
| 
       62 
     | 
    
         
            -
                    put "Default destination: #{config.default_destination}" if config.default_destination
         
     | 
| 
       63 
     | 
    
         
            -
                  else
         
     | 
| 
       64 
     | 
    
         
            -
                    put "There are no projects yet..."
         
     | 
| 
       65 
     | 
    
         
            -
                  end
         
     | 
| 
       66 
     | 
    
         
            -
                  result
         
     | 
| 
       67 
     | 
    
         
            -
                end
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                private
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                def section(title = nil, note = nil)
         
     | 
| 
       73 
     | 
    
         
            -
                  put [title, note].compact.join(" ") if title
         
     | 
| 
       74 
     | 
    
         
            -
                  @indent_level += 1
         
     | 
| 
       75 
     | 
    
         
            -
                  yield
         
     | 
| 
       76 
     | 
    
         
            -
                  @indent_level -= 1
         
     | 
| 
       77 
     | 
    
         
            -
                end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                def put(str = nil)
         
     | 
| 
       80 
     | 
    
         
            -
                  @result += "  " * @indent_level + str.to_s.chomp + "\n"
         
     | 
| 
       81 
     | 
    
         
            -
                end
         
     | 
| 
       82 
     | 
    
         
            -
              end
         
     | 
| 
       83 
     | 
    
         
            -
            end
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Taketo
         
     | 
| 
       2 
     | 
    
         
            -
              module Support
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                ##
         
     | 
| 
       5 
     | 
    
         
            -
                # This module allows to use external
         
     | 
| 
       6 
     | 
    
         
            -
                # methods in block used by instance_eval,
         
     | 
| 
       7 
     | 
    
         
            -
                # that it effectively mimics real closure
         
     | 
| 
       8 
     | 
    
         
            -
                #
         
     | 
| 
       9 
     | 
    
         
            -
                module EvalDelegator
         
     | 
| 
       10 
     | 
    
         
            -
                  def evaluate(&block)
         
     | 
| 
       11 
     | 
    
         
            -
                    @external_self = eval "self", block.binding
         
     | 
| 
       12 
     | 
    
         
            -
                    self.instance_eval(&block)
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  def method_missing(method_name, *args, &block)
         
     | 
| 
       16 
     | 
    
         
            -
                    if @external_self.respond_to?(method_name)
         
     | 
| 
       17 
     | 
    
         
            -
                      @external_self.send(method_name, *args, &block)
         
     | 
| 
       18 
     | 
    
         
            -
                    else
         
     | 
| 
       19 
     | 
    
         
            -
                      super
         
     | 
| 
       20 
     | 
    
         
            -
                    end
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
            end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
         @@ -1,116 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.expand_path('../../../spec_helper', __FILE__)
         
     | 
| 
       2 
     | 
    
         
            -
            require 'taketo/config_printer'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            include Taketo
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            describe "ConfigPrinter" do
         
     | 
| 
       7 
     | 
    
         
            -
              describe "#render" do
         
     | 
| 
       8 
     | 
    
         
            -
                it "should render based on node class name" do
         
     | 
| 
       9 
     | 
    
         
            -
                  construct = stub(:Server, :node_type => :server)
         
     | 
| 
       10 
     | 
    
         
            -
                  printer.should_receive(:render_server)
         
     | 
| 
       11 
     | 
    
         
            -
                  printer.render(construct)
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
              end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              describe "#render_command" do
         
     | 
| 
       16 
     | 
    
         
            -
                let(:command) { stub(:Command, :name => :foo, :description => nil) }
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                it "should render command name" do
         
     | 
| 
       19 
     | 
    
         
            -
                  printer.render_command(command).should == "foo"
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                it "should also render description if available" do
         
     | 
| 
       23 
     | 
    
         
            -
                  command.stub(:description => "The description")
         
     | 
| 
       24 
     | 
    
         
            -
                  printer.render_command(command).should == "foo - The description"
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              describe "#render_server" do
         
     | 
| 
       29 
     | 
    
         
            -
                let(:server) do
         
     | 
| 
       30 
     | 
    
         
            -
                  stub(:Server,
         
     | 
| 
       31 
     | 
    
         
            -
                       :name => :sponge,
         
     | 
| 
       32 
     | 
    
         
            -
                       :host => "1.2.3.4",
         
     | 
| 
       33 
     | 
    
         
            -
                       :port => 8000,
         
     | 
| 
       34 
     | 
    
         
            -
                       :username => "bob",
         
     | 
| 
       35 
     | 
    
         
            -
                       :default_location => "/var/app",
         
     | 
| 
       36 
     | 
    
         
            -
                       :environment_variables => { :FOO => "bar", :BOO => "baz" })
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                it "should render available server info and commands" do
         
     | 
| 
       40 
     | 
    
         
            -
                  server.stub(:commands => [:the_command])
         
     | 
| 
       41 
     | 
    
         
            -
                  printer.should_receive(:render_command).with(:the_command)
         
     | 
| 
       42 
     | 
    
         
            -
                  printer.render_server(server).should =~ 
         
     | 
| 
       43 
     | 
    
         
            -
            %r[Server: sponge
         
     | 
| 
       44 
     | 
    
         
            -
              Host: 1\.2\.3\.4
         
     | 
| 
       45 
     | 
    
         
            -
              Port: 8000
         
     | 
| 
       46 
     | 
    
         
            -
              User: bob
         
     | 
| 
       47 
     | 
    
         
            -
              Default location: /var/app
         
     | 
| 
       48 
     | 
    
         
            -
              Environment: (FOO=bar BOO=baz|BOO=baz FOO=bar)
         
     | 
| 
       49 
     | 
    
         
            -
              Commands:]
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                it "should not render commands if there are none" do
         
     | 
| 
       53 
     | 
    
         
            -
                  server.stub(:commands => [])
         
     | 
| 
       54 
     | 
    
         
            -
                  printer.render_server(server).should_not include("Commands:")
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
              describe "#render_environment" do
         
     | 
| 
       59 
     | 
    
         
            -
                let(:environment) do
         
     | 
| 
       60 
     | 
    
         
            -
                  stub(:Environment,
         
     | 
| 
       61 
     | 
    
         
            -
                       :name => :foo)
         
     | 
| 
       62 
     | 
    
         
            -
                end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                it "should render environment info and servers" do
         
     | 
| 
       65 
     | 
    
         
            -
                  environment.stub(:servers => [:the_server])
         
     | 
| 
       66 
     | 
    
         
            -
                  printer.should_receive(:render_server).with(:the_server)
         
     | 
| 
       67 
     | 
    
         
            -
                  printer.render_environment(environment).should == "Environment: foo"
         
     | 
| 
       68 
     | 
    
         
            -
                end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                it "should render appropriate message if there are no servers" do
         
     | 
| 
       71 
     | 
    
         
            -
                  environment.stub(:servers => [])
         
     | 
| 
       72 
     | 
    
         
            -
                  printer.render_environment(environment).should == "Environment: foo (No servers)"
         
     | 
| 
       73 
     | 
    
         
            -
                end
         
     | 
| 
       74 
     | 
    
         
            -
              end
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
              describe "#render_project" do
         
     | 
| 
       77 
     | 
    
         
            -
                let(:project) do
         
     | 
| 
       78 
     | 
    
         
            -
                  stub(:Project,
         
     | 
| 
       79 
     | 
    
         
            -
                       :name => :quux)
         
     | 
| 
       80 
     | 
    
         
            -
                end
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                it "should render project info and it's environments" do
         
     | 
| 
       83 
     | 
    
         
            -
                  project.stub(:environments => [:the_environment])
         
     | 
| 
       84 
     | 
    
         
            -
                  printer.should_receive(:render_environment).with(:the_environment)
         
     | 
| 
       85 
     | 
    
         
            -
                  printer.render_project(project).should == "Project: quux\n"
         
     | 
| 
       86 
     | 
    
         
            -
                end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                it "should render appropriate message if there are no environments for project" do
         
     | 
| 
       89 
     | 
    
         
            -
                  project.stub(:environments => [])
         
     | 
| 
       90 
     | 
    
         
            -
                  printer.render_project(project).should == "Project: quux (No environments)\n"
         
     | 
| 
       91 
     | 
    
         
            -
                end
         
     | 
| 
       92 
     | 
    
         
            -
              end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
              describe "#render_config" do
         
     | 
| 
       95 
     | 
    
         
            -
                let(:config) do
         
     | 
| 
       96 
     | 
    
         
            -
                  stub(:Config,
         
     | 
| 
       97 
     | 
    
         
            -
                       :default_destination => "hello:bye")
         
     | 
| 
       98 
     | 
    
         
            -
                end
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                it "should render default destination and all projects" do
         
     | 
| 
       101 
     | 
    
         
            -
                  config.stub(:projects => [:the_project])
         
     | 
| 
       102 
     | 
    
         
            -
                  printer.should_receive(:render_project).with(:the_project)
         
     | 
| 
       103 
     | 
    
         
            -
                  printer.render_config(config).should == "\nDefault destination: hello:bye"
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
                it "should render appropriate message if there are no projects" do
         
     | 
| 
       107 
     | 
    
         
            -
                  config.stub(:projects => [])
         
     | 
| 
       108 
     | 
    
         
            -
                  printer.render_config(config).should == "There are no projects yet..."
         
     | 
| 
       109 
     | 
    
         
            -
                end
         
     | 
| 
       110 
     | 
    
         
            -
              end
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
              def printer
         
     | 
| 
       113 
     | 
    
         
            -
                @printer ||= ConfigPrinter.new
         
     | 
| 
       114 
     | 
    
         
            -
              end
         
     | 
| 
       115 
     | 
    
         
            -
            end
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
         @@ -1,43 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.expand_path('../../../../spec_helper', __FILE__)
         
     | 
| 
       2 
     | 
    
         
            -
            require 'taketo/support/eval_delegator'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class EvalDelegatorContext
         
     | 
| 
       5 
     | 
    
         
            -
              include Taketo::Support::EvalDelegator
         
     | 
| 
       6 
     | 
    
         
            -
              
         
     | 
| 
       7 
     | 
    
         
            -
              def foo
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            describe Taketo::Support::EvalDelegator do
         
     | 
| 
       12 
     | 
    
         
            -
              describe "#evaluate" do
         
     | 
| 
       13 
     | 
    
         
            -
                it "should execute methods on context if it responds" do
         
     | 
| 
       14 
     | 
    
         
            -
                  expect do
         
     | 
| 
       15 
     | 
    
         
            -
                    EvalDelegatorContext.new.evaluate { foo }
         
     | 
| 
       16 
     | 
    
         
            -
                  end.not_to raise_error
         
     | 
| 
       17 
     | 
    
         
            -
                end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                it "should delegate unknown methods to calling context" do
         
     | 
| 
       20 
     | 
    
         
            -
                  class << self
         
     | 
| 
       21 
     | 
    
         
            -
                    define_method(:bar) {}
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  expect do
         
     | 
| 
       25 
     | 
    
         
            -
                    EvalDelegatorContext.new.evaluate { bar }
         
     | 
| 
       26 
     | 
    
         
            -
                  end.not_to raise_error
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                it "should raise if external context does not respond" do
         
     | 
| 
       30 
     | 
    
         
            -
                  expect do
         
     | 
| 
       31 
     | 
    
         
            -
                    EvalDelegatorContext.new.evaluate { qux }
         
     | 
| 
       32 
     | 
    
         
            -
                  end.to raise_error(NameError)
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                it "should pass local variabnes through the scopes" do
         
     | 
| 
       36 
     | 
    
         
            -
                  baz = :foo
         
     | 
| 
       37 
     | 
    
         
            -
                  expect do
         
     | 
| 
       38 
     | 
    
         
            -
                    EvalDelegatorContext.new.evaluate { baz }
         
     | 
| 
       39 
     | 
    
         
            -
                  end.not_to raise_error
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
       43 
     | 
    
         
            -
             
     |