reap 0.4.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 (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