tap 0.19.0 → 1.3.0

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.
Files changed (66) hide show
  1. data/History +100 -45
  2. data/MIT-LICENSE +1 -1
  3. data/README +95 -51
  4. data/bin/tap +11 -57
  5. data/bin/tapexe +84 -0
  6. data/doc/API +91 -139
  7. data/doc/Configuration +93 -0
  8. data/doc/Examples/Command Line +10 -42
  9. data/doc/Examples/Tapfile +124 -0
  10. data/doc/Ruby to Ruby +87 -0
  11. data/doc/Workflow Syntax +185 -0
  12. data/lib/tap.rb +74 -5
  13. data/lib/tap/app.rb +217 -310
  14. data/lib/tap/app/api.rb +44 -23
  15. data/lib/tap/app/queue.rb +11 -12
  16. data/lib/tap/app/stack.rb +4 -4
  17. data/lib/tap/declarations.rb +200 -0
  18. data/lib/tap/declarations/context.rb +31 -0
  19. data/lib/tap/declarations/description.rb +33 -0
  20. data/lib/tap/env.rb +133 -779
  21. data/lib/tap/env/cache.rb +87 -0
  22. data/lib/tap/env/constant.rb +94 -39
  23. data/lib/tap/env/path.rb +71 -0
  24. data/lib/tap/join.rb +42 -78
  25. data/lib/tap/joins/gate.rb +85 -0
  26. data/lib/tap/joins/switch.rb +4 -2
  27. data/lib/tap/joins/sync.rb +3 -3
  28. data/lib/tap/middleware.rb +5 -5
  29. data/lib/tap/middlewares/debugger.rb +18 -58
  30. data/lib/tap/parser.rb +115 -183
  31. data/lib/tap/root.rb +162 -239
  32. data/lib/tap/signal.rb +72 -0
  33. data/lib/tap/signals.rb +20 -2
  34. data/lib/tap/signals/class_methods.rb +38 -43
  35. data/lib/tap/signals/configure.rb +19 -0
  36. data/lib/tap/signals/help.rb +5 -7
  37. data/lib/tap/signals/load.rb +49 -0
  38. data/lib/tap/signals/module_methods.rb +1 -0
  39. data/lib/tap/task.rb +46 -275
  40. data/lib/tap/tasks/dump.rb +21 -16
  41. data/lib/tap/tasks/list.rb +184 -0
  42. data/lib/tap/tasks/load.rb +4 -4
  43. data/lib/tap/tasks/prompt.rb +128 -0
  44. data/lib/tap/tasks/signal.rb +42 -0
  45. data/lib/tap/tasks/singleton.rb +35 -0
  46. data/lib/tap/tasks/stream.rb +64 -0
  47. data/lib/tap/utils.rb +83 -0
  48. data/lib/tap/version.rb +2 -2
  49. data/lib/tap/workflow.rb +124 -0
  50. data/tap.yml +0 -0
  51. metadata +59 -24
  52. data/cmd/console.rb +0 -43
  53. data/cmd/manifest.rb +0 -118
  54. data/cmd/run.rb +0 -145
  55. data/doc/Examples/Workflow +0 -40
  56. data/lib/tap/app/node.rb +0 -29
  57. data/lib/tap/env/context.rb +0 -61
  58. data/lib/tap/env/gems.rb +0 -63
  59. data/lib/tap/env/manifest.rb +0 -179
  60. data/lib/tap/env/minimap.rb +0 -308
  61. data/lib/tap/intern.rb +0 -50
  62. data/lib/tap/joins.rb +0 -9
  63. data/lib/tap/prompt.rb +0 -36
  64. data/lib/tap/root/utils.rb +0 -220
  65. data/lib/tap/root/versions.rb +0 -138
  66. data/lib/tap/signals/signal.rb +0 -68
data/History CHANGED
@@ -1,11 +1,76 @@
1
+ == 1.3.0 / 2010-04-02
2
+
3
+ * various improvements to declarations
4
+ * moved env methods from ShellTest to Utils
5
+
6
+ == 1.0.0 - 1.2.4 / 2010-03 - 2010-04
7
+
8
+ Continued rework of Tap internals. Implementation of new Env setup scheme
9
+ based largely on signals. Updated the Declarations DSL with significantly more
10
+ flexibility. Numerous cleanups to the API. Simplification and standardization
11
+ of the tap syntax for defining command-line workflows.
12
+
13
+ These releases were created for internal use and debugged in fairly rapid
14
+ succession. The transition from 0.* to 1.* marks significant changes that,
15
+ aside from the basic API, are not backwards-compatible. Going forward Tap
16
+ should be much more stable, and the various APIs should be stable.
17
+
18
+ The tasks among the various modules in the tap suite may still be reorganizd
19
+ and the Declarations DSL is still under development.
20
+
21
+ Also, about this time numerous tags were deleted to cleanup the repo. Rap
22
+ was removed entirely as a separate gem, as was the tap-suite. These are
23
+ the old tag names and their corresponding shas:
24
+
25
+ all: 5f609e24147587692303d3654f1386958f476f59
26
+ rap-0.12.0: 2a988dbbacac45b6b8bf0fc7c74e7d3639e64f56
27
+ rap-0.12.1: a1e0f3605f6937326b258038812fba775c7616bd
28
+ rap-0.12.2: 03dc3dfc3b365901847ef70dbf1b92d297642b00
29
+ rap-0.12.3: 6ce756f1f4783787f54d0f8332899972a9b4b863
30
+ rap-0.13.0: 6db8026cd7dabb1ff407470a9c793796b4ea6126
31
+ rap-0.13.1: c512db583aad0453ab5e23d54fe5ef4b3c28992c
32
+ rap-0.15.0: 981bae18210008c5cabc108592d3bc6a44f49530
33
+ tap-0.10.0: f0c4ae53e5136364f0f6c4c3b2b587daa4eaeefe
34
+ tap-0.10.1: 6ec15db9a9043e3eca285227b77e6e562bb2ff35
35
+ tap-0.11.0: 359383266c572bc8e124a751dc3097fec806e16b
36
+ tap-0.11.1: 5079dcb5ef33c0d5f6def81f4767925be0e8b8c5
37
+ tap-0.12.0: f8c97e2efbbe9e8699d20b63d29e975cd91a8c57
38
+ tap-0.12.1: f6ac7f29834804eafd654200096696821f698290
39
+ tap-0.12.2: ad7fc99d028c6c682c2eb1e7c069bea520641bdb
40
+ tap-0.12.3: 5cba176fcc5e8e098ed1d9165139bd9a99e097c9
41
+ tap-0.12.4: 9148452b903f64c1fa170048fa9fa2dfc299414f
42
+ tap-0.17.0: e23074c52ac656e42904b58d829e82150d76c66a
43
+ tap-0.17.1: 6139af4e890d55f956d6a61de31396a623b03fec
44
+ tap-gen-0.1.0: 25f69b6fc788c2aa302bb5623c76e7325e3391fc
45
+ tap-gen-0.1.1: 8f5614336350942615add73b3fe79075b54a93c1
46
+ tap-gen-0.1.2: 621ce1fdb7ab0d966a32a34637e39fa5221247f1
47
+ tap-gen-0.1.3: 60e44d4cf6ac837e28d8b4138e1e4779656341d9
48
+ tap-gen-0.3.0: 0b12752589ff6cf7bb081d06347fa5d74c7b6eb4
49
+ tap-server-0.1.0: f08a40b83e370d37adf54ab322f153c2392de9ce
50
+ tap-server-0.1.1: dada4c9ca83191e9990eaaf7215c049cc7dc88a9
51
+ tap-server-0.2.0: 45b0d1fb7381ba824b5234079441e8f252a9d28d
52
+ tap-server-0.3.0: 861fd836b7d19422c7bbb4e3b65981f409130b3d
53
+ tap-server-0.4.0: 4f2b8c6e146bdca781f30f35d608815544f96e3e
54
+ tap-server-0.6.0: bfce08a4a73aeffe3b873f9d2bd1b36db4489598
55
+ tap-suite-0.1.0: 8ab253ee8f72f79a5f7b9b7928831affbcfacda9
56
+ tap-suite-0.2.0: 76afbec380f6faf7fbec386f2f40c1cbd074b6d9
57
+ tap-suite-0.3.0: bbfe80400f6d5e988dea9ad1fa3b25851f5aa8e7
58
+ tap-tasks-0.1.0: fb4d357010a321ab31bf689d3794889f36487059
59
+ tap-tasks-0.2.0: c0a561780b49de3eaa2a4ef7c69070a47d0b902b
60
+ tap-tasks-0.5.0: 357d793a78808a26438b4b66c4f6c471a23d05f8
61
+ tap-test-0.1.0: b533809da134fda0f9fd685c766fe8f26da7f0f3
62
+ tap-test-0.3.0: 140580cf49bc58cd1e64b5eb9ef7cc8066fa9410
63
+
64
+ We'll see if I can't keep this under control a little better.
65
+
1
66
  == 0.19.0 / 2009-12-05
2
67
 
3
68
  Significant rework of Tap internals.
4
69
 
5
70
  * extracted task/join/middleware code to make Api base class
6
- * some changes to semantics of Minimap; entry_to_minikey is
7
- now entry_to_path. Likewise entries now specify their own
8
- path using entry.path rather than entry.minikey
71
+ * some changes to semantics of Minimap; entry_to_minikey is now entry_to_path.
72
+ Likewise entries now specify their own path using entry.path rather than
73
+ entry.minikey
9
74
  * added Signals implemented with the Dsl pattern
10
75
 
11
76
  == 0.18.1
@@ -21,21 +86,19 @@ Significant rework of Tap internals.
21
86
 
22
87
  == 0.18.0 / 2009-06-17
23
88
 
24
- Several updates to simplify Tap. Most significantly,
25
- dependencies have been removed because their general
26
- utility is quite doubtful, and it it easy to implement
27
- in situations that require them (ex rap).
89
+ Several updates to simplify Tap. Most significantly, dependencies have been
90
+ removed because their general utility is quite doubtful, and it it easy to
91
+ implement in situations that require them (ex rap).
28
92
 
29
- * bug fix in console (app now refers to Tap::App.instance)
93
+ * bug fix in console (app now refers to Tap::App.current)
30
94
  * bug fix in load for recurrently loading from a file
31
95
  * fixed a mistake in run help
32
- * made load only load once by default, stream loading must
33
- be enabled in subclasses
96
+ * made load only load once by default, stream loading must be enabled in
97
+ subclasses
34
98
  * dump now returns the input, not the io
35
99
  * removed dependencies from tap
36
100
  * removed intern method on Task (now use app.task)
37
- * removed Support module (ie refactored Templater to
38
- Tap::Templater)
101
+ * removed Support module (ie refactored Templater to Tap::Templater)
39
102
  * removed Task.help method
40
103
  * added Middleware baseclass
41
104
  * Task.parse now yields opts to block for modifications
@@ -52,27 +115,23 @@ in situations that require them (ex rap).
52
115
 
53
116
  == 0.17.0 / 2009-05-25
54
117
 
55
- Significant reorganization and update to Tap internals.
56
- The workflow syntax for joins has changed in incompatible
57
- ways, and several key methods have been renamed.
58
- Obviously not backwards compatible but most tasks will
59
- work without alteration.
118
+ Significant reorganization and update to Tap internals. The workflow syntax
119
+ for joins has changed in incompatible ways, and several key methods have been
120
+ renamed. Obviously not backwards compatible but most tasks will work without
121
+ alteration.
60
122
 
61
123
  Upgrade Notes:
62
124
 
63
- * Tasks now are identified by "::task" rather than "::manifest"
64
- The manifest identifier still works for now but will be
65
- removed by 1.0.
66
- * Root#filepath and Root#relative_filepath have been renamed
67
- Root#path and Root#relative_path
68
- * Audits have been removed
69
- * Generators, FileTask, and test modules have been removed
70
- to separate modules (tap-gen, tap-tasks, tap-test). Install
71
- tap-suite to get them all back.
72
- * switched const_name, name on Constant
73
- * refactored on_complete_block to join
74
- * callbacks in Task have been removed
75
- * schema syntax no longer supports rounds, globals
125
+ * Tasks now are identified by "::task" rather than "::manifest" The manifest
126
+ identifier still works for now but will be removed by 1.0.
127
+ * Root#filepath and Root#relative_filepath have been renamed Root#path and
128
+ Root#relative_path
129
+ * Audits have been removed
130
+ * Generators, FileTask, and test modules have been removed to separate modules
131
+ (tap-gen, tap-tasks, tap-test). Install tap-suite to get them all back.
132
+ * switched const_name, name on Constant * refactored on_complete_block to join
133
+ * callbacks in Task have been removed * schema syntax no longer supports
134
+ rounds, globals
76
135
 
77
136
  Changes:
78
137
 
@@ -88,11 +147,10 @@ Changes:
88
147
 
89
148
  * fixed bug in App#inspect
90
149
  * documentation updates
91
- * changed the default load/dump configs to load and
92
- dump data without serialization
150
+ * changed the default load/dump configs to load and dump data without
151
+ serialization
93
152
  * made stdin the default input to load
94
- * updated run syntax to allow arguments to be passed
95
- to saved workflows
153
+ * updated run syntax to allow arguments to be passed to saved workflows
96
154
  * updates to RootGenerator
97
155
 
98
156
  == 0.12.3 / 2009-03-05
@@ -155,8 +213,7 @@ Upgrade note:
155
213
 
156
214
  == 0.11.0 / 2008-10-20
157
215
 
158
- Significant update to Tap with many internal reworks.
159
- Major changes include:
216
+ Significant update to Tap with many internal reworks. Major changes include:
160
217
 
161
218
  * Addition of Parser/Schema
162
219
  * Addition of rap and task declarations
@@ -167,8 +224,7 @@ Major changes include:
167
224
 
168
225
  == 0.10.1 / 2008-08-21
169
226
 
170
- Update of Tap with a few improvements to manifests
171
- and a new manifest command.
227
+ Update of Tap with a few improvements to manifests and a new manifest command.
172
228
 
173
229
  * Fixed some bugs and extended manifests
174
230
  * Bug fixes in generators
@@ -176,16 +232,15 @@ and a new manifest command.
176
232
 
177
233
  == 0.10.0 / 2008-08-08
178
234
 
179
- Major revision. Reworked configurations and the execution
180
- environment. Added Lazydoc documentation. Backwards incompatible.
181
- Development is now on GitHub.
235
+ Major revision. Reworked configurations and the execution environment. Added
236
+ Lazydoc documentation. Backwards incompatible. Development is now on GitHub.
182
237
 
183
238
  == 0.9.1 / 2008-04-26 revision 253
184
239
 
185
- Relatively minor update, but with one important refactoring that
186
- removes the Tap::Script module. This breaks backward compatibility
187
- but only should affect people who have made their own commands.
188
- Simply sub Tap::Support::CommandLine for Tap::Script to fix.
240
+ Relatively minor update, but with one important refactoring that removes the
241
+ Tap::Script module. This breaks backward compatibility but only should affect
242
+ people who have made their own commands. Simply sub Tap::Support::CommandLine
243
+ for Tap::Script to fix.
189
244
 
190
245
  * Added constants methods (ex try_constantize) to String
191
246
  * Added gem discovery when no tap.yml file is present
@@ -1,6 +1,6 @@
1
1
  Copyright (c) 2006-2009, Regents of the University of Colorado.
2
2
 
3
- Copyright (c) 2009, Simon Chiang.
3
+ Copyright (c) 2009-2010, Simon Chiang.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README CHANGED
@@ -10,12 +10,11 @@ Tap allows the construction of workflows that may be defined, configured, and
10
10
  run from the command line. The tasks and joins composing a workflow are easy
11
11
  to test, subclass, and distribute as gems.
12
12
 
13
- Tap is the core of the
14
- {Tap-Suite}[http://tap.rubyforge.org/tap-suite/index.html]
15
- which provides a standard library of
13
+ Tap provides a standard library of
16
14
  {tasks}[http://tap.rubyforge.org/tap-tasks/index.html],
17
- {generators}[http://tap.rubyforge.org/tap-gen/index.html], and
18
- {test utilities}[http://tap.rubyforge.org/tap-test/index.html].
15
+ {generators}[http://tap.rubyforge.org/tap-gen/index.html], and {test
16
+ modules}[http://tap.rubyforge.org/tap-test/index.html] to expedite
17
+ development.
19
18
 
20
19
  * Website[http://tap.rubyforge.org]
21
20
  * Github[http://github.com/bahuvrihi/tap/tree/master]
@@ -26,8 +25,9 @@ which provides a standard library of
26
25
  Tasks are defined as subclasses of Tap::Task.
27
26
 
28
27
  [lib/goodnight.rb]
28
+ require 'tap/task'
29
29
 
30
- # Goodnight::task your basic goodnight moon task
30
+ # ::task your basic goodnight moon task
31
31
  # Says goodnight with a configurable message.
32
32
  class Goodnight < Tap::Task
33
33
  config :message, 'goodnight' # a goodnight message
@@ -37,74 +37,118 @@ Tasks are defined as subclasses of Tap::Task.
37
37
  end
38
38
  end
39
39
 
40
- Tap automatically discovers tasks.
41
-
42
- % tap run -T
43
- sample:
44
- goodnight # your basic goodnight moon task
45
- tap:
46
- dump # the default dump task
47
- load # the default load task
48
-
49
- And generates command line documentation.
50
-
51
- % tap run -- goodnight --help
40
+ Tap discovers tasks.
41
+
42
+ % tap list
43
+ task:
44
+ dump # dump data
45
+ goodnight # your basic goodnight moon task
46
+ list # list resources
47
+ load # load data
48
+ prompt # open a prompt
49
+ signal # signal via a task
50
+ join:
51
+ gate # collects results
52
+ join # unsyncrhonized multi-way join
53
+ sync # synchronized multi-way join
54
+ middleware:
55
+ debugger # default debugger
56
+
57
+ Generates command-line documentation.
58
+
59
+ % tap goodnight --help
52
60
  Goodnight -- your basic goodnight moon task
53
61
  --------------------------------------------------------------------------------
54
62
  Says goodnight with a configurable message.
55
63
  --------------------------------------------------------------------------------
56
- usage: tap run -- goodnight NAME
64
+ usage: tap goodnight NAME
57
65
 
58
66
  configurations:
59
67
  --message MESSAGE a goodnight message
60
68
 
61
69
  options:
62
70
  --help Print this help
63
- --enque Manually enques self
64
71
  --config FILE Specifies a config file
65
72
 
66
- Tasks are immediately available for use in workflows, and may be configured as
67
- if they were individual executables. This workflow joins the goodnight task to
68
- a dump task, which prints the message to stdout.
73
+ And provides a robust
74
+ {syntax}[http://tap.rubyforge.org/rdoc/files/doc/Workflow%20Syntax.html] for
75
+ building both simple and complex workflows. This joins a goodnight task to a
76
+ dump task in order to print the goodnight message.
69
77
 
70
- % tap run -- goodnight moon --: dump
78
+ % tap goodnight moon -: dump
71
79
  goodnight moon
72
80
 
73
- % tap run -- goodnight world --message hello --: dump
81
+ % tap goodnight world --message hello -: dump
74
82
  hello world
75
83
 
76
- === Workflow Syntax
77
-
78
- Workflows are specified on the command line using argument vectors separated
79
- by option breaks (ie '--'). The argument vectors define the tasks while
80
- modifications to the breaks specify joins.
81
-
82
- A simple sequence.
83
-
84
- % tap run -- load 'goodnight moon' --: dump
85
- goodnight moon
86
-
87
- A more formal way of specifying a sequence.
84
+ Workflows support the use of middleware to wrap the execution of each task,
85
+ most commonly for logging and/or debugging.
88
86
 
89
- % tap run -- load 'goodnight moon' -- dump --[0][1]
87
+ % tap goodnight moon -: dump --/use debugger
88
+ 21:06:53 0 << ["moon"] (Goodnight)
89
+ 21:06:53 0 >> "goodnight moon" (Goodnight)
90
+ 21:06:53 1 << "goodnight moon" (Tap::Tasks::Dump)
90
91
  goodnight moon
92
+ 21:06:53 1 >> "goodnight moon" (Tap::Tasks::Dump)
91
93
 
92
- A fork.
93
-
94
- % tap run -- load 'goodnight moon' -- dump -- dump --[0][1,2]
95
- goodnight moon
96
- goodnight moon
94
+ Tap provides a set of {test
95
+ modules}[http://tap.rubyforge.org/tap-test/index.html] to simplify testing of
96
+ workflows both off and on the command-line (this documentation is tested, for
97
+ example):
97
98
 
98
- A merge (note that dump receives the inputs in serial).
99
+ require 'tap/test/unit'
100
+
101
+ class ShellTestTest < Test::Unit::TestCase
102
+ acts_as_shell_test
103
+
104
+ def test_goodnight_moon
105
+ sh_test %q{
106
+ % tap load 'goodnight moon' -: dump
107
+ goodnight moon
108
+ }
109
+ end
110
+ end
99
111
 
100
- % tap run -- load goodnight -- load moon -- dump --[0,1][2]
101
- goodnight
102
- moon
112
+ Tasks can be packaged into gems like any other code. Tap automatically finds
113
+ tasks in gems containing a tap.yml file so that distribution feels normal and
114
+ unobtrusive.
103
115
 
104
- A synchronized merge (the printout is <tt>['goodnight', 'moon'].to_s</tt>).
116
+ % tap load/yaml
117
+ unresolvable constant: "load/yaml"
118
+
119
+ % gem install tap-tasks
120
+ ...
121
+
122
+ % tap load/yaml "[1, 2, 3]" -: dump/yaml
123
+ ---
124
+ - 1
125
+ - 2
126
+ - 3
127
+
128
+ For local tasks that don't need to be distributed, Tap provides declarations
129
+ a-la {Rake}[http://rake.rubyforge.org/]. By default any tasks in a tapfile are
130
+ available for use.
131
+
132
+ [tapfile]
133
+ desc "concat file contents"
134
+ task :cat do |config, *files|
135
+ files.collect {|file| File.read(file) }.join
136
+ end
137
+
138
+ desc "grep lines"
139
+ task :grep, :e => '.' do |config, str|
140
+ str.split("\n").grep(/#{config.e}/)
141
+ end
142
+
143
+ % tap cat tapfile -:a grep -e task -:i dump
144
+ task :cat do |config, *files|
145
+ task :grep, :e => '.' do |config, str|
105
146
 
106
- % tap run -- load goodnight -- load moon -- dump --[0,1][2].sync
107
- goodnightmoon
147
+ See the documentation for a greater explanation of the {workflow
148
+ syntax}[http://tap.rubyforge.org/rdoc/files/doc/Workflow%20Syntax.html],
149
+ several common
150
+ {patterns}[http://tap.rubyforge.org/rdoc/files/doc/Examples.html], and the
151
+ underlying {APIs}[http://tap.rubyforge.org/rdoc/files/doc/API.html].
108
152
 
109
153
  == Installation
110
154
 
@@ -115,4 +159,4 @@ Tap is available as a gem on Gemcutter[http://gemcutter.org/gems/tap].
115
159
  == Info
116
160
 
117
161
  Developer:: {Simon Chiang}[http://bahuvrihi.wordpress.com]
118
- License:: {MIT-Style}[link:files/MIT-LICENSE.html]
162
+ License:: {MIT-Style}[http://tap.rubyforge.org/rdoc/files/MIT-LICENSE.html]
data/bin/tap CHANGED
@@ -1,62 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
- # usage: tap <command> {options} [args]
3
2
  #
4
- # Launches a tap command.
3
+ # Runs tapexe, first setting the default ENV variables expected
4
+ # by tap when installed by RubyGems. Splitting the work into
5
+ # two files like this is a pattern allowing tapexe to be run
6
+ # without RubyGems or the default ENV (ie 'ruby tapexe').
5
7
  #
6
- # examples:
7
- # tap generate root . # generates a root dir
8
- # tap run taskname --option input # runs the 'taskname' task
9
- #
10
- # help:
11
- # tap --help # prints this help
12
- # tap command --help # prints help for 'command'
13
- #
14
-
15
- require "#{File.dirname(__FILE__)}/../lib/tap.rb"
16
-
17
- #
18
- # setup the application
19
- #
20
-
21
- begin
22
- app = Tap::App.setup
23
- rescue(Tap::Env::ConfigError)
24
- # catch errors and exit gracefully
25
- # (errors usu from gem loading errors)
26
- puts $!.message
27
- exit(1)
28
- end
29
-
30
- #
31
- # launch the command
32
- #
33
-
34
- commands = app.env.manifest do |env|
35
- env.root.glob(:cmd, "**/*.rb")
36
- end
37
-
38
- case command = ARGV.shift.to_s
39
- when '', '--help'
40
- template = %Q{<% unless minimap.empty? || count <= 1 %>
41
- <%= env_key %>:
42
- <% end %>
43
- <% minimap.each do |key, path| %>
44
- <%= key.ljust(width) %>
45
- <% end %>}
46
8
 
47
- puts Lazydoc.usage(__FILE__)
48
- puts
49
- puts "available commands:"
50
- puts commands.summarize(template)
51
- puts
52
- puts "version #{Tap::VERSION} -- #{Tap::WEBSITE}"
53
- else
54
- if path = commands.seek(command)
55
- load path
56
- else
57
- puts "Unknown command: '#{command}'"
58
- puts "Type 'tap --help' for usage information."
59
- end
60
- end
9
+ ENV['TAP_GEMS'] ||= '.'
10
+ ENV['TAP_PATH'] ||= '.'
11
+ ENV['TAPENV'] ||= 'tapenv'
12
+ ENV['TAPRC'] ||= '~/.taprc:taprc'
13
+ ENV['TAPFILE'] ||= 'tapfile'
14
+ ENV['TAP_CACHE'] ||= '~/.tap'
61
15
 
62
- exit(0)
16
+ load File.expand_path('../tapexe', __FILE__)