tap 0.19.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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__)