tap 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -173,8 +173,6 @@ module Tap
173
173
  assert_audit_records_equal(expected, actual, nesting)
174
174
  end
175
175
 
176
- private
177
-
178
176
  def assert_audit_records_equal(expected, actual, nesting=[])
179
177
  assert_equal ExpAudit, expected.class
180
178
  assert_equal expected.length, actual.length, "unequal number of records"
@@ -192,9 +190,7 @@ module Tap
192
190
  end
193
191
  end
194
192
  end
195
-
196
- public
197
-
193
+
198
194
  # The configurations used to initialize self.app
199
195
  def app_config
200
196
  { :root => method_root,
data/lib/tap/workflow.rb CHANGED
@@ -78,6 +78,27 @@ module Tap
78
78
  #
79
79
  class Workflow
80
80
  include Support::Framework
81
+
82
+ class << self
83
+ protected
84
+
85
+ def define(name, klass=Tap::Task, &block)
86
+ instance_var = "@#{name}".to_sym
87
+
88
+ define_method(name) do |*args|
89
+ raise ArgumentError, "wrong number of arguments (#{args.length} for 1)" if args.length > 1
90
+
91
+ instance_name = args[0] || name
92
+ instance_variable_set(instance_var, {}) unless instance_variable_defined?(instance_var)
93
+ instance_variable_get(instance_var)[instance_name] ||= task(instance_name, klass, &block)
94
+ end
95
+
96
+ define_method("#{name}=") do |input|
97
+ input = {name => input} unless input.kind_of?(Hash)
98
+ instance_variable_set(instance_var, input)
99
+ end
100
+ end
101
+ end
81
102
 
82
103
  # The entry point for self.
83
104
  attr_accessor :entry_point
@@ -103,25 +124,31 @@ module Tap
103
124
  initialize_workflow
104
125
  end
105
126
 
127
+ def initialize_workflow
128
+ @entry_point = {}
129
+ @exit_point = {}
130
+ workflow
131
+ end
132
+
106
133
  # Returns an array of entry points, determined from entry_point.
107
134
  def entry_points
108
- case entry_point
109
- when Hash then entry_point.values
110
- when Support::Executable then [entry_point]
111
- when Array then entry_point
112
- else
113
- raise "unable to determine entry points from entry_point (should be Hash, Array, or Executable): #{entry_point}"
135
+ case @entry_point
136
+ when Hash then @entry_point.values
137
+ when Support::Executable then [@entry_point]
138
+ when Array then @entry_point
139
+ when nil then []
140
+ else raise "unable to determine entry points from entry_point: #{@entry_point}"
114
141
  end
115
142
  end
116
143
 
117
144
  # Returns an array of exit points, determined from exit_point.
118
145
  def exit_points
119
- case exit_point
120
- when Hash then exit_point.values
121
- when Support::Executable then [exit_point]
122
- when Array then exit_point
123
- else
124
- raise "unable to determine exit points from exit_point (should be Hash, Array, or Executable): #{exit_point}"
146
+ case @exit_point
147
+ when Hash then @exit_point.values
148
+ when Support::Executable then [@exit_point]
149
+ when Array then @exit_point
150
+ when nil then []
151
+ else raise "unable to determine exit points from exit_point: #{@exit_point}"
125
152
  end
126
153
  end
127
154
 
@@ -149,36 +176,22 @@ module Tap
149
176
  end
150
177
 
151
178
  batch_function(:on_complete) {}
152
-
179
+
180
+ def task(name, klass=Tap::Task, &block)
181
+ configs = config[name] || {}
182
+ raise ArgumentError, "config '#{name}' is not a hash" unless configs.kind_of?(Hash)
183
+ klass.new(configs, name, &block)
184
+ end
185
+
153
186
  # The workflow definition method. By default workflow
154
187
  # simply calls the task_block. In subclasses, workflow
155
188
  # should be overridden to provide the workflow definition.
156
189
  def workflow
157
- raise WorkflowError.new("No workflow definition provided.") unless task_block
158
- task_block.call(self)
159
- end
160
-
161
- class WorkflowError < Exception # :nodoc:
162
- end
163
-
164
- # Returns the name of the workflow joined to the input. This
165
- # can be convenient when naming internal tasks, as they can
166
- # be grouped based on the name of the workflow. Returns
167
- # the name of the workflow if input == nil.
168
- def name(input=nil)
169
- input == nil ? @name : File.join(@name, input)
190
+ task_block.call(self) if task_block
170
191
  end
171
192
 
172
193
  protected
173
194
 
174
- def initialize_workflow
175
- @entry_point = {}
176
- @exit_point = {}
177
-
178
- workflow
179
- raise WorkflowError.new("No entry points defined") if entry_points.empty?
180
- end
181
-
182
195
  # Hook to set a default task block. By default, nil.
183
196
  def default_task_block
184
197
  nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Chiang
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-08 00:00:00 -06:00
12
+ date: 2008-08-21 00:00:00 -06:00
13
13
  default_executable: tap
14
14
  dependencies: []
15
15
 
@@ -33,6 +33,7 @@ files:
33
33
  - cmd/console.rb
34
34
  - cmd/destroy.rb
35
35
  - cmd/generate.rb
36
+ - cmd/manifest.rb
36
37
  - cmd/run.rb
37
38
  - doc/Tutorial
38
39
  - doc/Class Reference
@@ -41,6 +42,7 @@ files:
41
42
  - lib/tap/app.rb
42
43
  - lib/tap/constants.rb
43
44
  - lib/tap/env.rb
45
+ - lib/tap/exe.rb
44
46
  - lib/tap/file_task.rb
45
47
  - lib/tap/generator/base.rb
46
48
  - lib/tap/generator/destroy.rb
@@ -89,7 +91,10 @@ files:
89
91
  - lib/tap/support/executable_queue.rb
90
92
  - lib/tap/support/framework.rb
91
93
  - lib/tap/support/framework_class.rb
94
+ - lib/tap/support/gems/rake.rb
95
+ - lib/tap/support/gems.rb
92
96
  - lib/tap/support/instance_configuration.rb
97
+ - lib/tap/support/lazy_attributes.rb
93
98
  - lib/tap/support/lazydoc.rb
94
99
  - lib/tap/support/manifest.rb
95
100
  - lib/tap/support/run_error.rb
@@ -107,6 +112,7 @@ files:
107
112
  - lib/tap/test/env_vars.rb
108
113
  - lib/tap/test/file_methods.rb
109
114
  - lib/tap/test/script_methods.rb
115
+ - lib/tap/test/script_methods/script_test.rb
110
116
  - lib/tap/test/subset_methods.rb
111
117
  - lib/tap/test/tap_methods.rb
112
118
  - lib/tap/test.rb