rap 0.13.0 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
data/History CHANGED
@@ -1,10 +1,13 @@
1
+ == 0.17.1 / 2009-06-06
2
+
3
+ Updates for Tap-0.17.1.
4
+
5
+ * Refactored DeclarationTask as Rap::Task
6
+
1
7
  == 0.13.0 / 2009-05-25
2
8
 
3
9
  Updates to use Tap-0.17.0.
4
10
 
5
- * added Test task
6
- * added Manifest task
7
-
8
11
  == 0.12.3 / 2009-03-23
9
12
 
10
13
  Update executable to use Tap-0.12.4. No significant changes.
data/README CHANGED
@@ -102,7 +102,7 @@ minor and sometimes no changes.
102
102
 
103
103
  ==== Regarding Tap
104
104
 
105
- Rap tasks (ie subclasses of Rap::DeclarationTask) are designed to behave like
105
+ Rap tasks (ie subclasses of Rap::Task) are designed to behave like
106
106
  Rake tasks. As such Rap tasks:
107
107
 
108
108
  * return nil and pass nil in workflows
data/bin/rap CHANGED
@@ -56,15 +56,19 @@ when '--help', nil, '-T'
56
56
  else
57
57
  begin
58
58
  schema = Tap::Schema.parse(ARGV)
59
- env.run(schema) do |type, key, metadata|
60
- if type == :task && Rap::Rake.has_rakefile?
61
- warn "warning: implict rake for '#{metadata.join(' ')}'"
62
- metadata.unshift(key)
63
- Rap::Rake
64
- else
65
- nil
59
+ schema.tasks.each_pair do |key, task|
60
+ if tasc = env[:task][task[0]]
61
+ task[0] = tasc
62
+ elsif Rap::Rake.has_rakefile?
63
+ warn "warning: implict rake for '#{task.join(' ')}'"
64
+ task.unshift(Rap::Rake)
66
65
  end
67
66
  end
67
+
68
+ app = Tap::App.instance
69
+ app.build(schema, :resources => env)
70
+ Tap::Exe.set_signals(app)
71
+ app.run
68
72
  rescue
69
73
  raise if $DEBUG
70
74
  puts $!.message
@@ -1,4 +1,4 @@
1
- require 'rap/declaration_task'
1
+ require 'rap/task'
2
2
  require 'rap/utils'
3
3
 
4
4
  module Rap
@@ -21,19 +21,19 @@ module Rap
21
21
  # t.class # => Nested::Sample
22
22
  # end
23
23
  #
24
- # Normally all declared tasks are subclasses of DeclarationTask, but
25
- # subclasses of DeclarationTask can declare tasks as well.
24
+ # Normally all declared tasks are subclasses of Rap::Task, but
25
+ # subclasses of Rap::Task can declare tasks as well.
26
26
  #
27
- # class Alt < DeclarationTask
27
+ # class Alt < Rap::Task
28
28
  # end
29
29
  #
30
30
  # include Rap::Declarations
31
31
  #
32
- # desc "task one, a subclass of DeclarationTask"
32
+ # desc "task one, a subclass of Rap::Task"
33
33
  # o = Rap.task(:one)
34
34
  # o.class # => One
35
- # o.class.superclass # => DeclarationTask
36
- # o.class.desc.to_s # => "task one, a subclass of DeclarationTask"
35
+ # o.class.superclass # => Rap::Task
36
+ # o.class.desc.to_s # => "task one, a subclass of Rap::Task"
37
37
  #
38
38
  # namespace(:nest) do
39
39
  # desc "task two, a nested subclass of Alt"
@@ -43,10 +43,10 @@ module Rap
43
43
  # t.class.desc.to_s # => "task two, a nested subclass of Alt"
44
44
  # end
45
45
  #
46
- # This feature is only available to subclasses of DeclarationTask and can
46
+ # This feature is only available to subclasses of Rap::Task and can
47
47
  # be very useful for creating inheritance hierarchies. Note that other
48
48
  # declaration methods like 'desc' and 'namespace' are not available on
49
- # DeclarationTask or subclasses, just 'task'.
49
+ # Rap::Task or subclasses, just 'task'.
50
50
  #
51
51
  # See the {Syntax Reference}[link:files/doc/Syntax%20Reference.html] for more
52
52
  # information.
@@ -81,11 +81,11 @@ module Rap
81
81
  end
82
82
 
83
83
  # Declares a task with a rake-like syntax. Task generates a subclass of
84
- # DeclarationTask, nested within the current namespace.
84
+ # Rap::Task, nested within the current namespace.
85
85
  def task(*args, &action)
86
86
  # resolve arguments and declare unknown dependencies
87
87
  name, configs, dependencies, arg_names = resolve_args(args) do |dependency|
88
- register DeclarationTask.subclass(dependency)
88
+ register Rap::Task.subclass(dependency)
89
89
  end
90
90
 
91
91
  # generate the task class
@@ -198,11 +198,11 @@ module Rap
198
198
  name.to_s.tr(":", "/")
199
199
  end
200
200
 
201
- # The class of task declared by task, by default DeclarationTask.
201
+ # The class of task declared by task, by default Rap::Task.
202
202
  # Used as a hook to set the declaring class in including modules
203
- # (such as DeclarationTask itself).
203
+ # (such as Rap::Task itself).
204
204
  def declaration_class
205
- DeclarationTask
205
+ Rap::Task
206
206
  end
207
207
 
208
208
  # Registers a task class with the Declarations.env, if necessary.
@@ -225,7 +225,7 @@ module Rap
225
225
  end
226
226
  end
227
227
 
228
- class DeclarationTask
228
+ class Task
229
229
  class << self
230
230
  # :stopdoc:
231
231
  alias original_desc desc
@@ -25,8 +25,9 @@ module Rap
25
25
  puts help
26
26
  exit
27
27
  end
28
- argv = argv.collect {|arg| arg == '--rake-help' ? '--help' : arg}
29
- [new({}, app), argv]
28
+ argv.collect! {|arg| arg == '--rake-help' ? '--help' : arg}
29
+
30
+ new({}, app)
30
31
  end
31
32
 
32
33
  # Returns true if Rake detects a rakefile.
@@ -5,7 +5,7 @@ require 'rap/description'
5
5
 
6
6
  module Rap
7
7
 
8
- # DeclarationTasks are a special breed of Tap::Task designed to behave much
8
+ # Rap tasks are a special breed of Tap::Task designed to behave much
9
9
  # like Rake tasks. As such, declaration tasks:
10
10
  #
11
11
  # * return nil and pass nil in workflows
@@ -13,7 +13,7 @@ module Rap
13
13
  # * are effectively singletons (one instance per app)
14
14
  # * allow for multiple actions
15
15
  #
16
- # The DeclarationTask class partially includes Declarations so subclasses
16
+ # The Rap::Task class partially includes Declarations so subclasses
17
17
  # may directly declare tasks. A few alias acrobatics makes it so that ONLY
18
18
  # Declarations#task is made available (desc cannot be used because Task
19
19
  # classes already use that method for documentation, and namespace
@@ -22,7 +22,7 @@ module Rap
22
22
  # Weird? Yes, but it leads to this syntax:
23
23
  #
24
24
  # # [Rapfile]
25
- # # class Subclass < Rap::DeclarationTask
25
+ # # class Subclass < Rap::Task
26
26
  # # def helper(); "help"; end
27
27
  # # end
28
28
  # #
@@ -32,7 +32,7 @@ module Rap
32
32
  # % rap help
33
33
  # got help
34
34
  #
35
- class DeclarationTask < Tap::Task
35
+ class Task < Tap::Task
36
36
  class << self
37
37
 
38
38
  # Sets actions.
@@ -60,14 +60,8 @@ module Rap
60
60
  args
61
61
  end
62
62
 
63
- # Instantiates the instance of self for app and reconfigures it using
64
- # argh. Configurations are set, the task name is set, and the
65
- # arguments are stored on the instance. The arguments are returned
66
- # as normal in the [instance, args] result.
67
- #
68
- # These atypical behaviors handle various situations on the command
69
- # line. Setting the args this way, for example, allows arguments to
70
- # be specified on dependency tasks:
63
+ # Parses as normal, but also stores the arguments on the instance to
64
+ # allows arguments to be specified on dependency tasks:
71
65
  #
72
66
  # # [Rapfile]
73
67
  # # Rap.task(:a, :obj) {|t, a| puts "A #{a.obj}"}
@@ -77,19 +71,29 @@ module Rap
77
71
  # A hello
78
72
  # B world
79
73
  #
74
+ def parse!(argv=ARGV, app=Tap::App.instance)
75
+ instance = super
76
+ instance.args = argv
77
+ instance
78
+ end
79
+
80
+ # Instantiates the instance of self for app and reconfigures it as
81
+ # specified in argh.
80
82
  def instantiate(argh={}, app=Tap::App.instance)
81
- config = argh[:config]
82
- config_file = argh[:config_file]
83
-
84
83
  instance = self.instance(app)
85
- instance.reconfigure(load_config(config_file)) if config_file
86
- instance.reconfigure(config) if config
87
- instance.args = argh[:args]
88
-
89
- [instance, instance.args]
84
+
85
+ if config = argh[:config]
86
+ instance.reconfigure(config)
87
+ end
88
+
89
+ if args = argh[:args]
90
+ instance.args = args
91
+ end
92
+
93
+ instance
90
94
  end
91
95
 
92
- # Looks up or creates the DeclarationTask subclass specified by const_name
96
+ # Looks up or creates the Rap::Task subclass specified by const_name
93
97
  # and adds the configs and dependencies.
94
98
  #
95
99
  # Configurations are always validated using the yaml transformation block
@@ -101,7 +105,7 @@ module Rap
101
105
  constants.inject(base) do |namespace, const|
102
106
  # nesting Task classes into other Task classes is required
103
107
  # for namespaces with the same name as a task
104
- namespace.const_set(const, Class.new(DeclarationTask))
108
+ namespace.const_set(const, Class.new(Rap::Task))
105
109
  end.const_set(subclass_const, Class.new(self))
106
110
  end
107
111
 
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.13.0
4
+ version: 0.13.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: 2009-05-25 00:00:00 -06:00
12
+ date: 2009-06-06 00:00:00 -06: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.17.0
23
+ version: 0.17.1
24
24
  version:
25
25
  description:
26
26
  email: simon.a.chiang@gmail.com
@@ -34,7 +34,7 @@ extra_rdoc_files:
34
34
  - History
35
35
  - doc/Syntax Reference
36
36
  files:
37
- - lib/rap/declaration_task.rb
37
+ - lib/rap/task.rb
38
38
  - lib/rap/declarations.rb
39
39
  - lib/rap/description.rb
40
40
  - lib/rap/rake.rb