rap 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
data/History CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.15.0 / 2009-12-05
2
+
3
+ * moved version information into separate file
4
+ * made Rap::Utils required by Rap::Task
5
+ * updates for Tap-0.19.0
6
+
1
7
  == 0.14.0 / 2009-06-17
2
8
 
3
9
  * added dependencies directly to Rap::Task
@@ -1,19 +1,21 @@
1
1
  Copyright (c) 2009, Regents of the University of Colorado.
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this
4
- software and associated documentation files (the "Software"), to deal in the Software
5
- without restriction, including without limitation the rights to use, copy, modify, merge,
6
- publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
7
- to whom the Software is furnished to do so, subject to the following conditions:
3
+ Copyright (c) 2009, Simon Chiang.
8
4
 
9
- The above copyright notice and this permission notice shall be included in all copies or
10
- substantial portions of the Software.
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
11
 
12
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
16
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
- OTHER DEALINGS IN THE SOFTWARE.
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README CHANGED
@@ -14,7 +14,6 @@ Rap is a part of the {Tap-Suite}[http://tap.rubyforge.org/tap-suite].
14
14
  Check out these links for documentation, development, and bug tracking.
15
15
 
16
16
  * Website[http://tap.rubyforge.org]
17
- * Lighthouse[http://bahuvrihi.lighthouseapp.com/projects/9908-tap-task-application/tickets]
18
17
  * Github[http://github.com/bahuvrihi/tap/tree/master]
19
18
  * {Google Group}[http://groups.google.com/group/ruby-on-tap]
20
19
 
@@ -24,7 +23,7 @@ Usage is much like {Rake}[http://rake.rubyforge.org/]:
24
23
 
25
24
  [Rapfile]
26
25
 
27
- # ::desc your basic goodnight moon task
26
+ # :: your basic goodnight moon task
28
27
  # Says goodnight with a configurable message.
29
28
  Rap.task(:goodnight, :obj, :message => 'goodnight') do |task, args|
30
29
  puts "#{task.message} #{args.obj}\n"
@@ -115,21 +114,11 @@ workflow you can run with 'tap run' can be run without alteration by rap.
115
114
 
116
115
  == Installation
117
116
 
118
- Rap is available as a gem on RubyForge[http://rubyforge.org/projects/tap].
119
- Use:
117
+ Rap is available as a gem on Gemcutter[http://gemcutter.org/gems/rap].
120
118
 
121
119
  % gem install rap
122
120
 
123
- Rap requires an updated version of RubyGems[http://docs.rubygems.org/]
124
- (>= 1.2.0). To check the version and update RubyGems:
125
-
126
- % gem --version
127
- % gem --update system
128
-
129
121
  == Info
130
122
 
131
- Copyright (c) 2009, Regents of the University of Colorado.
132
- Developer:: {Simon Chiang}[http://bahuvrihi.wordpress.com], {Biomolecular Structure Program}[http://biomol.uchsc.edu/], {Hansen Lab}[http://hsc-proteomics.uchsc.edu/hansenlab/]
133
- Support:: CU Denver School of Medicine Deans Academic Enrichment Fund
123
+ Developer:: {Simon Chiang}[http://bahuvrihi.wordpress.com]
134
124
  License:: {MIT-Style}[link:files/MIT-LICENSE.html]
135
-
data/bin/rap CHANGED
@@ -3,13 +3,20 @@
3
3
 
4
4
  $:.unshift "#{File.dirname(__FILE__)}/../lib"
5
5
  require 'rap'
6
+ require 'tap/parser'
7
+
8
+ #
9
+ # setup the application
10
+ #
6
11
 
7
- # setup the environment
8
12
  begin
9
-
10
- env = Tap::Exe.setup
11
- Rap::Declarations.env = env
12
- env.activate
13
+ app = Tap::App.setup
14
+ env = app.env
15
+ unless env.any? {|e| e.root.root == Rap::RAP_HOME }
16
+ env.deactivate
17
+ env.push Tap::Env.new(Rap::RAP_HOME, env.context)
18
+ env.activate
19
+ end
13
20
 
14
21
  rescue(Tap::Env::ConfigError)
15
22
  # catch errors and exit gracefully
@@ -22,56 +29,51 @@ end
22
29
  # run rap
23
30
  #
24
31
 
25
- Dir.glob('[TtRr]apfile{,.rb}').each do |rapfile|
26
- next unless File.file?(rapfile)
27
- env.scan(rapfile, "task|join|middleware")
32
+ env.root.glob(:root, '[TtRr]apfile{,.rb}').each do |rapfile|
33
+ env.scan(:root, File.basename(rapfile))
28
34
  load rapfile
29
35
  end
30
36
 
31
37
  case ARGV[0]
32
38
  when '--help', nil, '-T'
33
-
34
- # same as normal summarize, but pass over tasks that have no comment
35
- summary_template = %Q{<% entries.delete_if {|key, const| const.comment.kind_of?(Rap::Description) && const.comment.resolve.desc == nil } %>
36
- <% if !entries.empty? && count > 1 %>
37
- <%= env_key %>:
38
- <% end %>
39
- <% entries.each do |key, const| %>
40
- <%= key.ljust(width) %> # <%= const.comment %>
41
- <% end %>
42
- }
43
-
39
+ constants = app.env.constants
40
+ tasks = constants.summarize do |constant|
41
+ constant.types['task'] or begin
42
+ const = constant.constantize(false)
43
+ const && const.ancestors.include?(Rap::Task) && const.desc ? const.desc.desc : nil
44
+ end
45
+ end
46
+
44
47
  puts Lazydoc.usage(__FILE__)
45
48
  puts
46
49
  puts "=== tap tasks ==="
47
- puts env.manifest(:task).summarize(summary_template)
48
-
50
+ puts tasks
49
51
  if Rap::Rake.has_rakefile?
50
52
  puts
51
53
  puts "=== rake tasks ==="
52
54
  Rap::Rake.new.execute('-T')
53
55
  end
54
-
56
+
55
57
  puts
56
58
  puts "version #{Rap::VERSION} -- #{Rap::WEBSITE}"
59
+
57
60
  else
58
61
  begin
59
- schema = Tap::Schema.parse(ARGV)
60
- schema.tasks.each_pair do |key, task|
61
- if tasc = env[:task][task[0]]
62
- task[0] = tasc
63
- elsif Rap::Rake.has_rakefile?
64
- warn "warning: implict rake for '#{task.join(' ')}'"
65
- task.unshift(Rap::Rake)
62
+ app.call('sig' => 'parse', 'args' => ARGV) do |spec|
63
+ type, obj, sig, var, klass = spec
64
+
65
+ if type == :node
66
+ if env.constants.seek(klass).nil? && Rap::Rake.has_rakefile?
67
+ warn "warning: implict rake for #{spec.inspect}"
68
+ spec.insert(4, 'rap:rake')
69
+ end
66
70
  end
71
+
72
+ true
67
73
  end
68
74
 
69
- app = Tap::App.instance
70
- app.build(schema, :resources => env)
71
- Tap::Exe.set_signals(app)
72
75
  app.run
73
76
  rescue
74
- raise if $DEBUG
75
77
  puts $!.message
76
78
  exit(1)
77
79
  end
@@ -27,7 +27,7 @@ Simple documentation:
27
27
 
28
28
  Extended documentation:
29
29
 
30
- # ::desc description
30
+ # :: description
31
31
  # Extended documentation may span multiple lines, and
32
32
  # supports
33
33
  #
data/lib/rap.rb CHANGED
@@ -1,13 +1,8 @@
1
1
  require 'tap'
2
2
  require 'rap/declarations'
3
+ require 'rap/version'
3
4
 
4
5
  module Rap
5
6
  autoload(:Rake, 'rap/rake')
6
-
7
- MAJOR = 0
8
- MINOR = 14
9
- TINY = 0
10
-
11
- VERSION="#{MAJOR}.#{MINOR}.#{TINY}"
12
- WEBSITE="http://tap.rubyforge.org/rap"
7
+ RAP_HOME = File.expand_path("#{File.dirname(__FILE__)}/..")
13
8
  end
@@ -1,16 +1,15 @@
1
- require 'rap/task'
1
+ require 'rap/declarations/context'
2
2
 
3
3
  module Rap
4
4
 
5
- # Defines the Rap task declaration methods. They may be included at the
6
- # top level (like Rake) or used through Rap.
5
+ # Defines the Rap task declaration methods. They may be included at the top
6
+ # level (like Rake) or used through Rap.
7
7
  #
8
8
  # === Usage
9
9
  #
10
10
  # Unlike in rake, task will define actual task classes according to the task
11
- # names. Task classes may be nested within modules using namespace. It's
12
- # VERY important to realize this is the case both to aid in thing like
13
- # testing and to prevent namespace conflicts. For example:
11
+ # names. Task classes may be nested within modules using namespace. For
12
+ # example:
14
13
  #
15
14
  # t = Rap.task(:sample)
16
15
  # t.class # => Sample
@@ -20,10 +19,10 @@ module Rap
20
19
  # t.class # => Nested::Sample
21
20
  # end
22
21
  #
23
- # Normally all declared tasks are subclasses of Rap::Task, but
24
- # subclasses of Rap::Task can declare tasks as well.
22
+ # Normally all declared tasks are subclasses of Rap::Task, but subclasses of
23
+ # Rap::Task can declare tasks as well.
25
24
  #
26
- # class Alt < Rap::Task
25
+ # class Subclass < Rap::Task
27
26
  # end
28
27
  #
29
28
  # include Rap::Declarations
@@ -35,46 +34,30 @@ module Rap
35
34
  # o.class.desc.to_s # => "task one, a subclass of Rap::Task"
36
35
  #
37
36
  # namespace(:nest) do
38
- # desc "task two, a nested subclass of Alt"
39
- # t = Alt.task(:two)
37
+ # desc "task two, a nested subclass of Subclass"
38
+ # t = Subclass.task(:two)
40
39
  # t.class # => Nest::Two
41
- # t.class.superclass # => Alt
42
- # t.class.desc.to_s # => "task two, a nested subclass of Alt"
40
+ # t.class.superclass # => Subclass
41
+ # t.class.desc.to_s # => "task two, a nested subclass of Subclass"
43
42
  # end
44
43
  #
45
- # This feature is only available to subclasses of Rap::Task and can
46
- # be very useful for creating inheritance hierarchies. Note that other
47
- # declaration methods like 'desc' and 'namespace' are not available on
48
- # Rap::Task or subclasses, just 'task'.
44
+ # This feature is only available to subclasses of Rap::Task and can be very
45
+ # useful for creating inheritance hierarchies. Note that other declaration
46
+ # methods like 'desc' and 'namespace' are not available on Rap::Task or
47
+ # subclasses, just 'task'.
49
48
  #
50
- # See the {Syntax Reference}[link:files/doc/Syntax%20Reference.html] for more
51
- # information.
49
+ # See the {Syntax Reference}[link:files/doc/Syntax%20Reference.html] for
50
+ # more information.
52
51
  module Declarations
53
- # The environment in which declared task classes are registered.
54
- # By default a Tap::Env for Dir.pwd.
55
- def Declarations.env() @@env ||= Tap::Env.new; end
56
52
 
57
- # Sets the declaration environment.
58
- def Declarations.env=(env) @@env=env; end
59
-
60
- # The declaration App (default Tap::App.instance)
61
- def Declarations.app() @@app ||= Tap::App.instance; end
62
-
63
- # Sets the declaration App.
64
- def Declarations.app=(app) @@app=app; end
65
-
66
- # The base constant for all task declarations, prepended to the task name.
67
- def Declarations.current_namespace() @@current_namespace; end
68
- @@current_namespace = ''
69
-
70
- # Tracks the current description, which will be used to
71
- # document the next task declaration.
72
- def Declarations.current_desc() @@current_desc; end
73
- @@current_desc = nil
53
+ # Returns the context app.
54
+ def app
55
+ context.app
56
+ end
74
57
 
75
- # Returns the instance of the task class in app.
76
- def Declarations.instance(tasc)
77
- tasc.instance(Declarations.app)
58
+ # Returns the instance for the class, registered to app.
59
+ def instance(klass)
60
+ klass.instance(app)
78
61
  end
79
62
 
80
63
  # Declares a task with a rake-like syntax. Task generates a subclass of
@@ -86,42 +69,39 @@ module Rap
86
69
  end
87
70
 
88
71
  # generate the task class
89
- const_name = File.join(@@current_namespace, name.to_s).camelize
72
+ const_name = File.join(context.namespace, name.to_s).camelize
90
73
  tasc = declaration_class.subclass(const_name, configs, dependencies)
74
+ register tasc
91
75
 
92
- # register documentation
76
+ # register documentation
93
77
  desc = Lazydoc.register_caller(Description)
94
- desc.desc = @@current_desc
95
- @@current_desc = nil
78
+ desc.desc = context.desc
79
+ context.desc = nil
96
80
 
97
81
  tasc.arg_names = arg_names
98
82
  tasc.desc = desc
99
- tasc.source_file = desc.document.source_file
100
83
 
101
84
  # add the action
102
85
  tasc.actions << action if action
103
86
 
104
- # register
105
- register tasc
106
-
107
87
  # return the instance
108
- instance = Declarations.instance(tasc)
109
- instance.config.bind(instance, true)
88
+ instance = tasc.instance(app)
89
+ instance.config.import(configs)
110
90
  instance
111
91
  end
112
92
 
113
93
  # Nests tasks within the named module for the duration of the block.
114
94
  # Namespaces may be nested.
115
95
  def namespace(name)
116
- previous_namespace = @@current_namespace
117
- @@current_namespace = File.join(previous_namespace, name.to_s.underscore)
96
+ previous_namespace = context.namespace
97
+ context.namespace = File.join(previous_namespace, name.to_s.underscore)
118
98
  yield
119
- @@current_namespace = previous_namespace
99
+ context.namespace = previous_namespace
120
100
  end
121
101
 
122
102
  # Sets the description for use by the next task declaration.
123
103
  def desc(str)
124
- @@current_desc = str
104
+ context.desc = str
125
105
  end
126
106
 
127
107
  private
@@ -195,6 +175,11 @@ module Rap
195
175
  name.to_s.tr(":", "/")
196
176
  end
197
177
 
178
+ # The declarations context.
179
+ def context
180
+ @context ||= Context.instance
181
+ end
182
+
198
183
  # The class of task declared by task, by default Rap::Task.
199
184
  # Used as a hook to set the declaring class in including modules
200
185
  # (such as Rap::Task itself).
@@ -202,22 +187,10 @@ module Rap
202
187
  Rap::Task
203
188
  end
204
189
 
205
- # Registers a task class with the Declarations.env, if necessary.
190
+ # Registers a task class with the Declarations.app.env, if necessary.
206
191
  # Returns task_class.
207
192
  def register(tasc)
208
- tasks = Declarations.env.manifest(:task)
209
-
210
- const_name = tasc.to_s
211
- constant = tasks.find do |const|
212
- const.const_name == const_name
213
- end
214
-
215
- unless constant
216
- constant = Tap::Env::Constant.new(const_name)
217
- tasks.entries << constant
218
- end
219
-
220
- constant.comment = tasc.desc(false)
193
+ app.env.register(tasc)
221
194
  tasc
222
195
  end
223
196
  end
@@ -226,6 +199,7 @@ module Rap
226
199
  class << self
227
200
  # :stopdoc:
228
201
  alias original_desc desc
202
+ alias original_instance instance
229
203
  # :startdoc:
230
204
 
231
205
  include Declarations
@@ -234,8 +208,11 @@ module Rap
234
208
  undef_method :desc
235
209
  alias desc original_desc
236
210
 
211
+ undef_method :instance
212
+ alias instance original_instance
213
+
237
214
  # hide remaining Declarations methods (including Utils methods)
238
- private :namespace
215
+ private :namespace, :app
239
216
  # :startdoc:
240
217
 
241
218
  private
@@ -0,0 +1,30 @@
1
+ require 'rap/task'
2
+
3
+ module Rap
4
+ module Declarations
5
+ class Context
6
+ class << self
7
+ def instance
8
+ @instance ||= new
9
+ end
10
+ end
11
+
12
+ # The declarations App
13
+ attr_accessor :app
14
+
15
+ # The base constant for all task declarations, prepended to the task name.
16
+ attr_accessor :namespace
17
+
18
+ # Tracks the current description, which will be used to document the
19
+ # next task declaration.
20
+ attr_accessor :desc
21
+
22
+ def initialize(app=Tap::App.instance)
23
+ app.env ||= Tap::Env.new
24
+ @app = app
25
+ @namespace = ""
26
+ @desc = nil
27
+ end
28
+ end
29
+ end
30
+ end
@@ -6,7 +6,7 @@ module Rap
6
6
  #
7
7
  # Description instances can be assigned a description, or they may parse
8
8
  # one directly from the comment. Comment lines with the constant attribute
9
- # '::desc' will have the value set as desc.
9
+ # '::' will have the value set as desc.
10
10
  # :startdoc:::+
11
11
  class Description < Lazydoc::Comment
12
12
 
@@ -15,7 +15,7 @@ module Rap
15
15
 
16
16
  # Parses in-comment descriptions from prepended lines, if present.
17
17
  def prepend(line)
18
- if line =~ /::desc(?:\s+(.*?))?\s*$/
18
+ if line =~ /\s::(?:\s+(.*?)\s*)?$/
19
19
  self.desc = $1.to_s
20
20
  false
21
21
  else
@@ -17,17 +17,15 @@ module Rap
17
17
  #
18
18
  class Rake < Tap::Task
19
19
  class << self
20
-
21
- # Overrides Tap::Support::FrameworkClass#parse! to do
22
- # nothing so that all args get passed forward to rake.
23
- def parse!(argv, app=Tap::App.instance) # => instance, argv
20
+
21
+ def parse!(argv, app=Tap::App.instance)
24
22
  if argv.include?('--help')
25
23
  puts help
26
24
  exit
27
25
  end
28
26
  argv.collect! {|arg| arg == '--rake-help' ? '--help' : arg}
29
27
 
30
- new({}, app)
28
+ [new({}, app), argv]
31
29
  end
32
30
 
33
31
  # Returns true if Rake detects a rakefile.
@@ -1,7 +1,8 @@
1
1
  require 'tap/task'
2
2
  require 'tap/env'
3
- require 'ostruct'
4
3
  require 'rap/description'
4
+ require 'rap/utils'
5
+ require 'ostruct'
5
6
 
6
7
  module Rap
7
8
 
@@ -26,7 +27,7 @@ module Rap
26
27
  # # def helper(); "help"; end
27
28
  # # end
28
29
  # #
29
- # # # ::desc a help task
30
+ # # # :: a help task
30
31
  # # Subclass.task(:help) {|task, args| puts "got #{task.helper}"}
31
32
  #
32
33
  # % rap help
@@ -40,15 +41,10 @@ module Rap
40
41
 
41
42
  # Returns or initializes the instance of self cached with app.
42
43
  def instance(app=Tap::App.instance, auto_initialize=true)
43
- app.cache[self] ||= (auto_initialize ? new({}, app) : nil)
44
+ app.objects[self] ||= (auto_initialize ? new({}, app) : nil)
44
45
  end
45
46
 
46
47
  def inherited(child) # :nodoc:
47
- unless child.instance_variable_defined?(:@source_file)
48
- caller[0] =~ Lazydoc::CALLER_REGEXP
49
- child.instance_variable_set(:@source_file, File.expand_path($1))
50
- end
51
-
52
48
  child.instance_variable_set(:@dependencies, dependencies.dup)
53
49
  super
54
50
  end
@@ -90,26 +86,29 @@ module Rap
90
86
  # B world
91
87
  #
92
88
  def parse!(argv=ARGV, app=Tap::App.instance)
93
- instance = super
89
+ parser = self.parser
94
90
 
95
- # store args on instance and clear so that instance
96
- # will not be enqued with any inputs
97
- instance.args = argv.dup
98
- argv.clear
91
+ argv = parser.parse!(argv, :add_defaults => false)
92
+ enque = parser.config.delete('enque')
93
+ instance = build({'config' => parser.nested_config, 'args' => argv.dup}, app)
99
94
 
100
- instance
95
+ # enque with no inputs to satisfy call, and
96
+ # clear argv so auto-enque will do the same
97
+ instance.enq if enque
98
+
99
+ [instance, []]
101
100
  end
102
101
 
103
102
  # Instantiates the instance of self for app and reconfigures it as
104
103
  # specified in argh.
105
- def instantiate(argh={}, app=Tap::App.instance)
104
+ def build(argh={}, app=Tap::App.instance)
106
105
  instance = self.instance(app)
107
106
 
108
- if config = argh[:config]
107
+ if config = argh['config']
109
108
  instance.reconfigure(config)
110
109
  end
111
110
 
112
- if args = argh[:args]
111
+ if args = argh['args']
113
112
  instance.args = args
114
113
  end
115
114
 
@@ -202,7 +201,8 @@ module Rap
202
201
  end
203
202
  end
204
203
 
205
- instance_variable_set(:@dependencies, [])
204
+ # This sets the class-level dependencies array.
205
+ @dependencies = []
206
206
 
207
207
  # An array of node dependencies
208
208
  attr_reader :dependencies
@@ -301,7 +301,6 @@ module Rap
301
301
  end
302
302
  self
303
303
  end
304
-
305
304
  end
306
305
 
307
306
  # Raised for circular dependencies during Rap::Task.resolve!
@@ -0,0 +1,8 @@
1
+ module Rap
2
+ MAJOR = 0
3
+ MINOR = 15
4
+ TINY = 0
5
+
6
+ VERSION="#{MAJOR}.#{MINOR}.#{TINY}"
7
+ WEBSITE="http://tap.rubyforge.org/rap"
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
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: 2009-06-17 00:00:00 -06:00
12
+ date: 2009-12-05 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.18.0
23
+ version: 0.19.0
24
24
  version:
25
25
  description:
26
26
  email: simon.a.chiang@gmail.com
@@ -36,10 +36,12 @@ extra_rdoc_files:
36
36
  files:
37
37
  - lib/rap/task.rb
38
38
  - lib/rap/declarations.rb
39
+ - lib/rap/declarations/context.rb
39
40
  - lib/rap/description.rb
40
41
  - lib/rap/rake.rb
41
42
  - lib/rap.rb
42
43
  - lib/rap/utils.rb
44
+ - lib/rap/version.rb
43
45
  - tap.yml
44
46
  - README
45
47
  - MIT-LICENSE
@@ -47,6 +49,8 @@ files:
47
49
  - doc/Syntax Reference
48
50
  has_rdoc: true
49
51
  homepage: http://tap.rubyforge.org
52
+ licenses: []
53
+
50
54
  post_install_message:
51
55
  rdoc_options:
52
56
  - --main
@@ -72,9 +76,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
76
  requirements: []
73
77
 
74
78
  rubyforge_project: tap
75
- rubygems_version: 1.3.1
79
+ rubygems_version: 1.3.5
76
80
  signing_key:
77
- specification_version: 2
81
+ specification_version: 3
78
82
  summary: A rakish extension to tap.
79
83
  test_files: []
80
84