reap 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/ChangeLog +2 -0
  2. data/LICENSE +11 -0
  3. data/README +59 -0
  4. data/Reapfile +85 -0
  5. data/bin/reap +103 -0
  6. data/doc/classes/Reap/AnnounceTask.html +331 -0
  7. data/doc/classes/Reap/ChmodTask.html +278 -0
  8. data/doc/classes/Reap/PackageTask.html +372 -0
  9. data/doc/classes/Reap/PublishTask.html +231 -0
  10. data/doc/classes/Reap/RDocTask.html +254 -0
  11. data/doc/classes/Reap/Runner.html +307 -0
  12. data/doc/classes/Reap/Task.html +390 -0
  13. data/doc/classes/Reap/TemplateTask.html +233 -0
  14. data/doc/classes/Reap/TestTask.html +242 -0
  15. data/doc/classes/Reap.html +184 -0
  16. data/doc/created.rid +1 -0
  17. data/doc/files/LICENSE.html +119 -0
  18. data/doc/files/README.html +194 -0
  19. data/doc/files/lib/reap/reap_rb.html +110 -0
  20. data/doc/files/lib/reap/runner_rb.html +113 -0
  21. data/doc/files/lib/reap/task_rb.html +108 -0
  22. data/doc/files/lib/reap/tasks/announce-task_rb.html +113 -0
  23. data/doc/files/lib/reap/tasks/chmod-task_rb.html +101 -0
  24. data/doc/files/lib/reap/tasks/package-task_rb.html +108 -0
  25. data/doc/files/lib/reap/tasks/publish-task_rb.html +101 -0
  26. data/doc/files/lib/reap/tasks/rdoc-task_rb.html +101 -0
  27. data/doc/files/lib/reap/tasks/template-task_rb.html +108 -0
  28. data/doc/files/lib/reap/tasks/test-task_rb.html +101 -0
  29. data/doc/files/lib/reap/template_rb.html +101 -0
  30. data/doc/fr_class_index.html +36 -0
  31. data/doc/fr_file_index.html +39 -0
  32. data/doc/fr_method_index.html +69 -0
  33. data/doc/index.html +24 -0
  34. data/doc/rdoc-style.css +208 -0
  35. data/lib/reap/reap.rb +11 -0
  36. data/lib/reap/runner.rb +95 -0
  37. data/lib/reap/task.rb +103 -0
  38. data/lib/reap/tasks/announce-task.rb +140 -0
  39. data/lib/reap/tasks/chmod-task.rb +72 -0
  40. data/lib/reap/tasks/package-task.rb +153 -0
  41. data/lib/reap/tasks/publish-task.rb +33 -0
  42. data/lib/reap/tasks/rdoc-task.rb +57 -0
  43. data/lib/reap/tasks/template-task.rb +38 -0
  44. data/lib/reap/tasks/test-task.rb +45 -0
  45. data/lib/reap/template.rb +72 -0
  46. data/setup.rb +1361 -0
  47. data/test/test_require.rb +11 -0
  48. metadata +112 -0
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: template.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>template.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/reap/template.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sun Apr 03 15:08:10 EDT 2005</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+ </div>
77
+
78
+
79
+ <!-- if includes -->
80
+
81
+ <div id="section">
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <!-- if method_list -->
91
+
92
+
93
+ </div>
94
+
95
+
96
+ <div id="validator-badges">
97
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
+ </div>
99
+
100
+ </body>
101
+ </html>
@@ -0,0 +1,36 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Classes
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Classes</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Classes</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Reap.html">Reap</a><br />
24
+ <a href="classes/Reap/AnnounceTask.html">Reap::AnnounceTask</a><br />
25
+ <a href="classes/Reap/ChmodTask.html">Reap::ChmodTask</a><br />
26
+ <a href="classes/Reap/PackageTask.html">Reap::PackageTask</a><br />
27
+ <a href="classes/Reap/PublishTask.html">Reap::PublishTask</a><br />
28
+ <a href="classes/Reap/RDocTask.html">Reap::RDocTask</a><br />
29
+ <a href="classes/Reap/Runner.html">Reap::Runner</a><br />
30
+ <a href="classes/Reap/Task.html">Reap::Task</a><br />
31
+ <a href="classes/Reap/TemplateTask.html">Reap::TemplateTask</a><br />
32
+ <a href="classes/Reap/TestTask.html">Reap::TestTask</a><br />
33
+ </div>
34
+ </div>
35
+ </body>
36
+ </html>
@@ -0,0 +1,39 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Files
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Files</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Files</h1>
22
+ <div id="index-entries">
23
+ <a href="files/LICENSE.html">LICENSE</a><br />
24
+ <a href="files/README.html">README</a><br />
25
+ <a href="files/lib/reap/reap_rb.html">lib/reap/reap.rb</a><br />
26
+ <a href="files/lib/reap/runner_rb.html">lib/reap/runner.rb</a><br />
27
+ <a href="files/lib/reap/task_rb.html">lib/reap/task.rb</a><br />
28
+ <a href="files/lib/reap/tasks/announce-task_rb.html">lib/reap/tasks/announce-task.rb</a><br />
29
+ <a href="files/lib/reap/tasks/chmod-task_rb.html">lib/reap/tasks/chmod-task.rb</a><br />
30
+ <a href="files/lib/reap/tasks/package-task_rb.html">lib/reap/tasks/package-task.rb</a><br />
31
+ <a href="files/lib/reap/tasks/publish-task_rb.html">lib/reap/tasks/publish-task.rb</a><br />
32
+ <a href="files/lib/reap/tasks/rdoc-task_rb.html">lib/reap/tasks/rdoc-task.rb</a><br />
33
+ <a href="files/lib/reap/tasks/template-task_rb.html">lib/reap/tasks/template-task.rb</a><br />
34
+ <a href="files/lib/reap/tasks/test-task_rb.html">lib/reap/tasks/test-task.rb</a><br />
35
+ <a href="files/lib/reap/template_rb.html">lib/reap/template.rb</a><br />
36
+ </div>
37
+ </div>
38
+ </body>
39
+ </html>
@@ -0,0 +1,69 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Methods
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Methods</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Methods</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Reap/Task.html#M000036">[] (Reap::Task)</a><br />
24
+ <a href="classes/Reap/Runner.html#M000031">acknowledge (Reap::Runner)</a><br />
25
+ <a href="classes/Reap/Runner.html#M000029">call (Reap::Runner)</a><br />
26
+ <a href="classes/Reap/ChmodTask.html#M000018">chmod (Reap::ChmodTask)</a><br />
27
+ <a href="classes/Reap/TemplateTask.html#M000024">desc (Reap::TemplateTask)</a><br />
28
+ <a href="classes/Reap/PackageTask.html#M000002">desc (Reap::PackageTask)</a><br />
29
+ <a href="classes/Reap/RDocTask.html#M000007">desc (Reap::RDocTask)</a><br />
30
+ <a href="classes/Reap/ChmodTask.html#M000015">desc (Reap::ChmodTask)</a><br />
31
+ <a href="classes/Reap/AnnounceTask.html#M000041">desc (Reap::AnnounceTask)</a><br />
32
+ <a href="classes/Reap/PublishTask.html#M000020">desc (Reap::PublishTask)</a><br />
33
+ <a href="classes/Reap/TestTask.html#M000011">desc (Reap::TestTask)</a><br />
34
+ <a href="classes/Reap/Task.html#M000032">inherited (Reap::Task)</a><br />
35
+ <a href="classes/Reap/Task.html#M000035">new (Reap::Task)</a><br />
36
+ <a href="classes/Reap/Runner.html#M000027">new (Reap::Runner)</a><br />
37
+ <a href="classes/Reap/Task.html#M000039">package_name (Reap::Task)</a><br />
38
+ <a href="classes/Reap/Task.html#M000033">registry (Reap::Task)</a><br />
39
+ <a href="classes/Reap/Task.html#M000038">ruby (Reap::Task)</a><br />
40
+ <a href="classes/Reap/TestTask.html#M000013">run (Reap::TestTask)</a><br />
41
+ <a href="classes/Reap/Runner.html#M000030">run (Reap::Runner)</a><br />
42
+ <a href="classes/Reap/ChmodTask.html#M000017">run (Reap::ChmodTask)</a><br />
43
+ <a href="classes/Reap/RDocTask.html#M000009">run (Reap::RDocTask)</a><br />
44
+ <a href="classes/Reap/TemplateTask.html#M000026">run (Reap::TemplateTask)</a><br />
45
+ <a href="classes/Reap/PackageTask.html#M000004">run (Reap::PackageTask)</a><br />
46
+ <a href="classes/Reap/AnnounceTask.html#M000043">run (Reap::AnnounceTask)</a><br />
47
+ <a href="classes/Reap/PublishTask.html#M000022">run (Reap::PublishTask)</a><br />
48
+ <a href="classes/Reap/PackageTask.html#M000005">run_gem (Reap::PackageTask)</a><br />
49
+ <a href="classes/Reap/TemplateTask.html#M000025">set (Reap::TemplateTask)</a><br />
50
+ <a href="classes/Reap/PackageTask.html#M000003">set (Reap::PackageTask)</a><br />
51
+ <a href="classes/Reap/PublishTask.html#M000021">set (Reap::PublishTask)</a><br />
52
+ <a href="classes/Reap/AnnounceTask.html#M000042">set (Reap::AnnounceTask)</a><br />
53
+ <a href="classes/Reap/TestTask.html#M000012">set (Reap::TestTask)</a><br />
54
+ <a href="classes/Reap/RDocTask.html#M000008">set (Reap::RDocTask)</a><br />
55
+ <a href="classes/Reap/ChmodTask.html#M000016">set (Reap::ChmodTask)</a><br />
56
+ <a href="classes/Reap/Task.html#M000037">sh (Reap::Task)</a><br />
57
+ <a href="classes/Reap/TestTask.html#M000010">task (Reap::TestTask)</a><br />
58
+ <a href="classes/Reap/PackageTask.html#M000001">task (Reap::PackageTask)</a><br />
59
+ <a href="classes/Reap/ChmodTask.html#M000014">task (Reap::ChmodTask)</a><br />
60
+ <a href="classes/Reap/RDocTask.html#M000006">task (Reap::RDocTask)</a><br />
61
+ <a href="classes/Reap/PublishTask.html#M000019">task (Reap::PublishTask)</a><br />
62
+ <a href="classes/Reap/TemplateTask.html#M000023">task (Reap::TemplateTask)</a><br />
63
+ <a href="classes/Reap/AnnounceTask.html#M000040">task (Reap::AnnounceTask)</a><br />
64
+ <a href="classes/Reap/Runner.html#M000028">task? (Reap::Runner)</a><br />
65
+ <a href="classes/Reap/Task.html#M000034">tasks (Reap::Task)</a><br />
66
+ </div>
67
+ </div>
68
+ </body>
69
+ </html>
data/doc/index.html ADDED
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ Reap
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>Reap</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/README.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
data/lib/reap/reap.rb ADDED
@@ -0,0 +1,11 @@
1
+
2
+ require 'facet/kernel/require_all'
3
+
4
+ require 'reap/runner'
5
+ require 'reap/task'
6
+ require_all 'reap/tasks/*.rb'
7
+
8
+
9
+ module Reap
10
+ VERSION = "0.4.0"
11
+ end
@@ -0,0 +1,95 @@
1
+
2
+ require 'yaml'
3
+ require 'fileutils'
4
+ require 'facet/fileutils/safe_ln'
5
+ #require 'facet/hash/to_ostruct'
6
+ require 'facet/hash/traverse'
7
+ require 'facet/hash/has_keys?'
8
+ require 'carat/filelist'
9
+
10
+
11
+ # class Hash
12
+ # def downcase_keys!
13
+ # new_hash = {}
14
+ # self.each_pair { |k,v| new_hash[k.to_s.downcase] = v }
15
+ # self.replace( new_hash )
16
+ # end
17
+ # end
18
+
19
+
20
+ module Reap
21
+
22
+ #
23
+ # Main Runner class
24
+ #
25
+ class Runner
26
+
27
+ attr_reader :config
28
+
29
+ def initialize( config_file=nil )
30
+ config_file ||= 'Reapfile'
31
+ if File.file?( config_file )
32
+ # load config file
33
+ config = YAML.load( File.open( config_file ) )
34
+ config.traverse!{ |k,v| [k.downcase, v] }
35
+ @config = config
36
+
37
+ # main parameters
38
+ @title = @config['title']
39
+ @name = @config['name']
40
+ @version = @config['version']
41
+ @summary = @config['summary']
42
+ @description = @config['description']
43
+
44
+ raise "TITLE is a required configuration field" unless @title
45
+ raise "NAME is a required configuration field" unless @name
46
+ raise "VERSION is a required configuration field" unless @version
47
+ else
48
+ @config = {}
49
+ end
50
+ end
51
+
52
+ def task?( tsk )
53
+ tsk = tsk.to_s.downcase.to_sym
54
+ case tsk
55
+ when :acknowledge, :show
56
+ return true
57
+ else
58
+ return true if Reap::Task.tasks.include?( tsk )
59
+ end
60
+ false
61
+ end
62
+
63
+ def call( tsk, *args )
64
+ tsk = tsk.to_s.downcase.to_sym
65
+ case tsk
66
+ when :acknowledge, :show
67
+ acknowledge
68
+ else
69
+ run( tsk, *args )
70
+ end
71
+ end
72
+
73
+ def run( tsk, *args )
74
+ taskClass = Task.registry.find { |t| t.task.to_sym == tsk }
75
+ raise "Task undefined." unless taskClass # should not happen
76
+ task = taskClass.new( @config )
77
+ section = taskClass.task.to_s.downcase
78
+ if @config[section].is_a?( Array )
79
+ @config[section].each do |s|
80
+ task.set( s )
81
+ task.run
82
+ end
83
+ else
84
+ task.set( @config[section] )
85
+ task.run
86
+ end
87
+ end
88
+
89
+ def acknowledge
90
+ y @config
91
+ end
92
+
93
+ end #class Runner
94
+
95
+ end
data/lib/reap/task.rb ADDED
@@ -0,0 +1,103 @@
1
+
2
+ require 'rbconfig'
3
+
4
+ module Reap
5
+
6
+ #
7
+ # Base class for all tasks
8
+ #
9
+ class Task
10
+
11
+ RUBY = Config::CONFIG['ruby_install_name']
12
+
13
+ DEFAULT_INCLUDE = [ '[A-Z]*', 'setup.rb', 'lib/**/*', 'bin/**/*',
14
+ 'doc/**/*', 'rdoc/**/*', 'test/**/*', 'bench/**/*',
15
+ 'demo/**/*', 'samples/**/*', 'examples/**/*' ]
16
+
17
+ MUST_EXCLUDE = [ 'InstalledFiles', '**/CVS/**/*', '**/*~' ]
18
+
19
+
20
+ def self.inherited( klass )
21
+ (@task_registry ||= []) << klass
22
+ end
23
+
24
+ def self.registry ; @task_registry ||= [] ; end
25
+
26
+ def self.tasks ; @task ||= registry.collect { |t| t.task } ; end
27
+
28
+
29
+ attr_reader :config, :section
30
+
31
+ def initialize( config )
32
+ @config = config
33
+ end
34
+
35
+ def [](x)
36
+ @config[x]
37
+ end
38
+
39
+ # Run the system command +cmd+.
40
+ #
41
+ # Example:
42
+ # sh %{ls -ltr}
43
+ #
44
+ def sh(cmd, options={})
45
+ FileUtils.send( :fu_check_options, options, :noop, :verbose )
46
+ FileUtils.send( :fu_output_message, cmd ) if options[:verbose]
47
+ unless options[:noop]
48
+ system(cmd) or fail "Command Failed: [#{cmd}]"
49
+ end
50
+ end
51
+
52
+ # Run a Ruby interpreter with the given arguments.
53
+ #
54
+ # Example:
55
+ # ruby %{-pe '$_.upcase!' <README}
56
+ #
57
+ def ruby(*args)
58
+ if Hash === args.last
59
+ options = args.pop
60
+ else
61
+ options = {}
62
+ end
63
+ puts "#{RUBY} #{args.join(' ')}" if $DEBUG
64
+ sh "#{RUBY} #{args.join(' ')}", options
65
+ end
66
+
67
+ # # Attempt to do a normal file link, but fall back
68
+ # # to a copy if the link fails.
69
+ # def safe_ln(*args)
70
+ # if @link_not_supported
71
+ # FileUtils.cp(*args)
72
+ # else
73
+ # begin
74
+ # FileUtils.ln(*args)
75
+ # rescue Errno::EOPNOTSUPP
76
+ # @link_not_supported = true
77
+ # FileUtils.cp(*args)
78
+ # end
79
+ # end
80
+ # end
81
+
82
+ # Returns the full package name which combines package name and version.
83
+ def package_name
84
+ @config['name'] + '--' + ( @config['version'] || '0.0.1' )
85
+ end
86
+
87
+ # def rakefile
88
+ # s = ''
89
+ # rf = File.join(locate, 'packmule', 'packmule.rake')
90
+ # File.open( rf ) { |f| s << f.gets(nil) }
91
+ # s
92
+ # end
93
+ #
94
+ # def yamlform
95
+ # s = ''
96
+ # yf = File.join(locate, 'packmule', 'packmule.yaml')
97
+ # File.open( yf ) { |f| s << f.gets(nil) }
98
+ # s
99
+ # end
100
+
101
+ end
102
+
103
+ end #module Reap