henry-container 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  Gemfile.lock
2
+ vendor
@@ -1,5 +1,21 @@
1
1
  #!/bin/ruby
2
2
 
3
3
  require 'henry'
4
+ require 'trollop'
4
5
 
5
- Henry::Container.new.execute
6
+ opts = Trollop::options do
7
+ version "herny-ruby-container #{Henry::Container::VERSION} - 2012 John Henry Eden"
8
+ banner <<-BANNER
9
+ The Ruby Container for Henry.
10
+
11
+ Usage:
12
+ execute [options]
13
+
14
+ where [options] are:
15
+ BANNER
16
+
17
+ opt :out, "Custom path where the execution results will be written.", :default => 'out.henry'
18
+ opt :in, "Custom path to the execution params file.", :default => 'in.henry'
19
+ end
20
+
21
+ Henry::Container.new(opts).execute
@@ -17,6 +17,8 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency('rake')
19
19
  gem.add_dependency('cucumber')
20
+ gem.add_dependency('colorize')
21
+ gem.add_dependency('trollop')
20
22
 
21
23
  gem.add_development_dependency('yard')
22
24
  end
@@ -3,7 +3,7 @@ module Henry
3
3
  class Container
4
4
 
5
5
  # Current Gem version
6
- VERSION = '0.0.2'
6
+ VERSION = '0.0.3'
7
7
 
8
8
  end
9
9
 
@@ -4,6 +4,7 @@ require 'yaml'
4
4
  require 'ostruct'
5
5
  require 'json'
6
6
  require 'rake'
7
+ require 'colorize'
7
8
 
8
9
  module Henry
9
10
 
@@ -11,11 +12,14 @@ module Henry
11
12
  class Container
12
13
 
13
14
  # Nothing to be done here yet...
14
- def initialize
15
+ def initialize(opts)
16
+ @opts = opts
15
17
  end
16
18
 
17
19
  # Executes the loaded tasks and stores their results.
18
20
  def execute
21
+ self.before_execution
22
+
19
23
  self.tasks_results = self.tasks.collect do |task|
20
24
  task.execute(self.task_params(task.name))
21
25
  end
@@ -42,11 +46,23 @@ module Henry
42
46
  }
43
47
  }
44
48
 
45
- # Loads and parses the in.henry params.
49
+ # Executes required validations before execution.
50
+ def before_execution
51
+ unless File.exists?(@opts[:in])
52
+ abort "#{"'#{@opts[:in]}' file does not exist.".red}\n #{'*'.red} If running isolated make sure to create it first.\n #{'*'.red} If running from Henry contact us at henry@despegar.it."
53
+ end
54
+
55
+ unless File.exists?('henry-context.yml')
56
+ abort "'henry-context.yml' file does not exist. You need it in order to execute a Henry compatible test.".red
57
+ end
58
+
59
+ end
60
+
61
+ # Loads and parses the @opts[:in] params.
46
62
  #
47
63
  # @return [{String => String}] the execution params.
48
64
  def params
49
- @params ||= JSON.parse(File.read('in.henry'))
65
+ @params ||= JSON.parse(File.read(@opts[:in]))
50
66
  end
51
67
 
52
68
  # Returns the default params.
@@ -63,7 +79,7 @@ module Henry
63
79
  # @param [String] task_name the target Task name.
64
80
  # @return [Hash] the Task custom params.
65
81
  def task_params(task_name)
66
- self.default_params.merge(self.params[task_name])
82
+ self.default_params.merge(self.params[task_name] || {})
67
83
  end
68
84
 
69
85
  # Load and parses the henry-context.yml params.
@@ -110,9 +126,9 @@ module Henry
110
126
  end
111
127
  end
112
128
 
113
- # Writes into out.henry the execution results.
129
+ # Writes into @opts[:out] the execution results.
114
130
  def dump_results
115
- File.open('out.henry', 'w') { |f| f.write(results.to_json) }
131
+ File.open(@opts[:out], 'w') { |f| f.write(results.to_json) }
116
132
  end
117
133
 
118
134
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: henry-container
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
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-07-02 00:00:00.000000000 Z
12
+ date: 2012-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -43,6 +43,38 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: colorize
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: trollop
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
46
78
  - !ruby/object:Gem::Dependency
47
79
  name: yard
48
80
  requirement: !ruby/object:Gem::Requirement