treequel 1.0.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.
- data/ChangeLog +354 -0
- data/LICENSE +27 -0
- data/README +66 -0
- data/Rakefile +345 -0
- data/Rakefile.local +43 -0
- data/bin/treeirb +14 -0
- data/bin/treequel +229 -0
- data/examples/company-directory.rb +112 -0
- data/examples/ldap-monitor.rb +143 -0
- data/examples/ldap-monitor/public/css/master.css +328 -0
- data/examples/ldap-monitor/public/images/card_small.png +0 -0
- data/examples/ldap-monitor/public/images/chain_small.png +0 -0
- data/examples/ldap-monitor/public/images/globe_small.png +0 -0
- data/examples/ldap-monitor/public/images/globe_small_green.png +0 -0
- data/examples/ldap-monitor/public/images/plug.png +0 -0
- data/examples/ldap-monitor/public/images/shadows/large-30-down.png +0 -0
- data/examples/ldap-monitor/public/images/tick.png +0 -0
- data/examples/ldap-monitor/public/images/tick_circle.png +0 -0
- data/examples/ldap-monitor/public/images/treequel-favicon.png +0 -0
- data/examples/ldap-monitor/views/backends.erb +41 -0
- data/examples/ldap-monitor/views/connections.erb +74 -0
- data/examples/ldap-monitor/views/databases.erb +39 -0
- data/examples/ldap-monitor/views/dump_subsystem.erb +14 -0
- data/examples/ldap-monitor/views/index.erb +14 -0
- data/examples/ldap-monitor/views/layout.erb +35 -0
- data/examples/ldap-monitor/views/listeners.erb +30 -0
- data/examples/ldap_state.rb +62 -0
- data/lib/treequel.rb +145 -0
- data/lib/treequel/branch.rb +589 -0
- data/lib/treequel/branchcollection.rb +204 -0
- data/lib/treequel/branchset.rb +360 -0
- data/lib/treequel/constants.rb +604 -0
- data/lib/treequel/directory.rb +541 -0
- data/lib/treequel/exceptions.rb +32 -0
- data/lib/treequel/filter.rb +704 -0
- data/lib/treequel/mixins.rb +325 -0
- data/lib/treequel/schema.rb +245 -0
- data/lib/treequel/schema/attributetype.rb +252 -0
- data/lib/treequel/schema/ldapsyntax.rb +96 -0
- data/lib/treequel/schema/matchingrule.rb +124 -0
- data/lib/treequel/schema/matchingruleuse.rb +124 -0
- data/lib/treequel/schema/objectclass.rb +289 -0
- data/lib/treequel/sequel_integration.rb +26 -0
- data/lib/treequel/utils.rb +169 -0
- data/rake/191_compat.rb +26 -0
- data/rake/dependencies.rb +76 -0
- data/rake/helpers.rb +434 -0
- data/rake/hg.rb +261 -0
- data/rake/manual.rb +782 -0
- data/rake/packaging.rb +135 -0
- data/rake/publishing.rb +318 -0
- data/rake/rdoc.rb +30 -0
- data/rake/style.rb +62 -0
- data/rake/svn.rb +668 -0
- data/rake/testing.rb +187 -0
- data/rake/verifytask.rb +64 -0
- data/rake/win32.rb +190 -0
- data/spec/lib/constants.rb +93 -0
- data/spec/lib/helpers.rb +100 -0
- data/spec/treequel/branch_spec.rb +569 -0
- data/spec/treequel/branchcollection_spec.rb +213 -0
- data/spec/treequel/branchset_spec.rb +376 -0
- data/spec/treequel/directory_spec.rb +487 -0
- data/spec/treequel/filter_spec.rb +482 -0
- data/spec/treequel/mixins_spec.rb +330 -0
- data/spec/treequel/schema/attributetype_spec.rb +237 -0
- data/spec/treequel/schema/ldapsyntax_spec.rb +83 -0
- data/spec/treequel/schema/matchingrule_spec.rb +158 -0
- data/spec/treequel/schema/matchingruleuse_spec.rb +137 -0
- data/spec/treequel/schema/objectclass_spec.rb +262 -0
- data/spec/treequel/schema_spec.rb +118 -0
- data/spec/treequel/utils_spec.rb +49 -0
- data/spec/treequel_spec.rb +179 -0
- metadata +169 -0
data/ChangeLog
ADDED
@@ -0,0 +1,354 @@
|
|
1
|
+
117[tip] e98fb34df0c0 2009-08-13 16:43 -0700 ged
|
2
|
+
Adding Branchset#to_hash
|
3
|
+
|
4
|
+
116 e18bfe831135 2009-08-13 16:16 -0700 ged
|
5
|
+
Updated build system.
|
6
|
+
|
7
|
+
115 a8927110eaa6 2009-08-13 15:57 -0700 ged
|
8
|
+
Fixed the display in the company directory example template.
|
9
|
+
|
10
|
+
114 dddcad307b99 2009-08-13 15:53 -0700 ged
|
11
|
+
* Adding some more examples, updating the README.
|
12
|
+
|
13
|
+
113 c8fc81f20772 2009-08-13 13:28 -0700 ged
|
14
|
+
Some cleanup and additions for release.
|
15
|
+
|
16
|
+
112 e352bc86498a 2009-08-13 11:06 -0700 ged
|
17
|
+
Bumping version for release.
|
18
|
+
|
19
|
+
111 73775f828f6b 2009-08-13 09:35 -0700 ged
|
20
|
+
Fixes for Ruby 1.9.1.
|
21
|
+
|
22
|
+
110 af19a52bb21a 2009-08-13 07:38 -0700 ged
|
23
|
+
More work on the ldap-monitor example.
|
24
|
+
|
25
|
+
109 809044df70bd 2009-08-12 10:04 -0700 ged
|
26
|
+
* Removing unused deveiate-theme stylesheet.
|
27
|
+
|
28
|
+
108 633687b023c4 2009-08-12 08:02 -0700 ged
|
29
|
+
Committing CSS I forgot to commit with the last rev
|
30
|
+
|
31
|
+
107 f9551821eced 2009-08-11 20:59 -0700 ged
|
32
|
+
* Added another real-world example and added a bit more work to the web monitor app.
|
33
|
+
|
34
|
+
106 85dadbaf70a9 2009-08-11 08:54 -0700 ged
|
35
|
+
* Added my nascent LDAP web monitor sinatra app under examples/
|
36
|
+
|
37
|
+
105 c8c4db6916f1 2009-08-10 23:53 -0700 ged
|
38
|
+
Stripped SVN constants and headers.
|
39
|
+
|
40
|
+
104 3624f71a141d 2009-08-10 14:42 -0700 ged
|
41
|
+
* More manual work
|
42
|
+
|
43
|
+
103 1b0eaa8f5a64 2009-08-10 08:11 -0700 ged
|
44
|
+
Fixes for the manual footer
|
45
|
+
|
46
|
+
102 72833e18e4f8 2009-08-10 07:59 -0700 ged
|
47
|
+
* Removing Branch#order, since the client-library sort attribute and function don't do
|
48
|
+
|
49
|
+
101 bacf91784530 2009-08-05 13:26 -0700 ged
|
50
|
+
* Manual headings have a bit more top-margin.
|
51
|
+
|
52
|
+
100:99,98 b53d391399ce 2009-08-03 14:18 -0700 ged
|
53
|
+
Merged f9ac0e1fa95f
|
54
|
+
|
55
|
+
99:97 afeff031274d 2009-08-03 14:17 -0700 ged
|
56
|
+
* Finished conversion of the manual to client-side syntax-highlighting instead of
|
57
|
+
|
58
|
+
98 f9ac0e1fa95f 2009-08-03 08:41 -0700 ged
|
59
|
+
* Adding a prompt mode to the .irbrc for manual example generation.
|
60
|
+
|
61
|
+
97 1ddf7d4212c7 2009-08-01 08:31 -0700 ged
|
62
|
+
* Added details about Branchset#filter, #scope, #limit, and #select
|
63
|
+
|
64
|
+
96 6b5358420802 2009-07-31 08:29 -0700 ged
|
65
|
+
Updated build system
|
66
|
+
|
67
|
+
95:94,92 a5e715f5f877 2009-07-31 08:13 -0700 ged
|
68
|
+
Merged. Someday I'll get the hang of this.
|
69
|
+
|
70
|
+
94:93,91 395b7bf6f248 2009-07-28 06:11 -0700 ged
|
71
|
+
Merged with 34cc97817266
|
72
|
+
|
73
|
+
93:89 89f74035c67d 2009-07-28 06:10 -0700 ged
|
74
|
+
Manual rewording, .hgignore updates
|
75
|
+
|
76
|
+
92 46e6dce0c011 2009-07-29 13:28 -0700 ged
|
77
|
+
* Adding coverage cache to the ignorefile.
|
78
|
+
|
79
|
+
91 34cc97817266 2009-07-27 12:06 -0700 ged
|
80
|
+
Updated build system
|
81
|
+
|
82
|
+
90:86,89 daf0e44c41ac 2009-07-27 11:58 -0700 ged
|
83
|
+
Merging work from gont
|
84
|
+
|
85
|
+
89:83,88 b7a919b2ad5d 2009-07-24 21:07 -0700 ged
|
86
|
+
Merging build system fixes
|
87
|
+
|
88
|
+
88 620807d4c6d5 2009-07-24 21:05 -0700 ged
|
89
|
+
Updated build system
|
90
|
+
|
91
|
+
87:85 f631900a9ad8 2009-07-24 19:33 -0700 ged
|
92
|
+
Removing subrepo, as it doesn't work quite the way I'd hoped.
|
93
|
+
|
94
|
+
86:83 fc3c3bac2c22 2009-07-24 17:27 -0700 ged
|
95
|
+
Unlinking the subrepo, as it doesn't behave well enough quite yet.
|
96
|
+
|
97
|
+
85 65236b2101e5 2009-07-24 11:22 -0700 ged
|
98
|
+
Initial commit of Mercurial-based tasks
|
99
|
+
|
100
|
+
84 76e4c3cc308b 2009-07-23 08:51 -0700 ged
|
101
|
+
Started converting svn-specific helpers and tasks to vcs-agnostic ones
|
102
|
+
|
103
|
+
83 8be8e94f829d 2009-07-21 18:10 -0700 ged
|
104
|
+
Adding experimental .hgsub for the rake tasklibs
|
105
|
+
|
106
|
+
82 7bd626d9f0cd 2009-07-21 15:44 +0000 mahlon
|
107
|
+
Manual updates for Branches, Branchsets, and Directory.base.
|
108
|
+
|
109
|
+
81 8ca3428f711e 2009-07-21 12:51 +0000 ged
|
110
|
+
* Treequel::Branch
|
111
|
+
|
112
|
+
80 15bfd9785019 2009-07-21 00:16 +0000 ged
|
113
|
+
* Fixing Treequel::Branch#copy, which was mistakenly using a modrdn to copy.
|
114
|
+
|
115
|
+
79 74b7a9bca977 2009-07-20 22:22 +0000 ged
|
116
|
+
* Treequel::Branch: Don't freeze non-Arrays in the cached attribute values hash.
|
117
|
+
|
118
|
+
78 3e4105c3ebaa 2009-07-20 17:30 +0000 ged
|
119
|
+
* Made the Hash merge function a module_function instead of a constant
|
120
|
+
|
121
|
+
77 7a62ac4c346b 2009-07-20 13:20 +0000 ged
|
122
|
+
* Added the ability to include operational attributes in Treequel::Branch at the
|
123
|
+
|
124
|
+
76 206b077875e5 2009-07-19 18:36 +0000 ged
|
125
|
+
Adding missing wrap.png for the manual
|
126
|
+
|
127
|
+
75 1505adefc436 2009-07-18 06:28 +0000 ged
|
128
|
+
* Make ObjectClass#sup return the corresponding ObjectClass instance.
|
129
|
+
|
130
|
+
74 12ec14055953 2009-07-17 22:53 +0000 ged
|
131
|
+
Cleaned up the manual syntax-highlighting a bunch. Red logo!
|
132
|
+
|
133
|
+
73 8c8193c00a6a 2009-07-17 17:59 +0000 ged
|
134
|
+
Use client-side highlighting instead of Ultraviolet.
|
135
|
+
|
136
|
+
72 1e2391e73329 2009-07-17 15:40 +0000 mahlon
|
137
|
+
* Wrap branch rdn attributes in an array for easy mungin' and merging.
|
138
|
+
|
139
|
+
71 96e0654c8652 2009-07-17 13:27 +0000 ged
|
140
|
+
* Manual work.
|
141
|
+
|
142
|
+
70 3e2835dbe859 2009-07-17 05:14 +0000 ged
|
143
|
+
* Logo and other manual work
|
144
|
+
|
145
|
+
69 cf1c7d481519 2009-07-17 03:00 +0000 ged
|
146
|
+
* Treequel::Branch
|
147
|
+
|
148
|
+
68 bf47d67f76f1 2009-07-16 17:04 +0000 mahlon
|
149
|
+
* Wrap branch rdn attributes in an array for easy mungin' and merging.
|
150
|
+
|
151
|
+
67 7d8dc70f5fe1 2009-07-15 15:50 +0000 ged
|
152
|
+
* Order attributes by their key when composing a multi-value RDN from a pair + a Hash for
|
153
|
+
|
154
|
+
66 f21be0277b19 2009-07-15 00:41 +0000 ged
|
155
|
+
Adding logo
|
156
|
+
|
157
|
+
65 e434f63779e5 2009-07-13 17:48 +0000 ged
|
158
|
+
* Updated build system
|
159
|
+
|
160
|
+
64 f2b47be064b6 2009-07-08 17:38 +0000 ged
|
161
|
+
* A bit more hacking on the OHM experiment.
|
162
|
+
|
163
|
+
63 57360b9b8143 2009-07-03 00:57 +0000 ged
|
164
|
+
* Treequel::Branch
|
165
|
+
|
166
|
+
62 1c3bd5a2a4f0 2009-07-02 15:22 +0000 ged
|
167
|
+
* Adding experimental Arrow service that uses Treequel to return ou=People records.
|
168
|
+
|
169
|
+
61 1853efa345e2 2009-06-30 15:31 +0000 ged
|
170
|
+
Removing the call to `Time.today` from the specs, as it requires the loading of 'time'.
|
171
|
+
|
172
|
+
60 e5a2a960c89d 2009-06-30 15:08 +0000 ged
|
173
|
+
* Added Treequel::Branch#to_ufn
|
174
|
+
|
175
|
+
59 9759280f111a 2009-06-29 17:00 +0000 ged
|
176
|
+
* Adding the beginnings of an experimental object-mapping (tree-based ORM analogue) for LDAP
|
177
|
+
|
178
|
+
58 bc236240ca46 2009-06-27 00:43 +0000 ged
|
179
|
+
Updated HTML logger formatter to the latest.
|
180
|
+
|
181
|
+
57 35d0872f8b7f 2009-06-25 18:49 +0000 ged
|
182
|
+
* Renamed Treequel::Branch#modify to #merge
|
183
|
+
|
184
|
+
56 30445a043298 2009-06-24 14:15 +0000 ged
|
185
|
+
Fixed some LAIKA references in the manual.
|
186
|
+
|
187
|
+
55 6cc39e6befdb 2009-06-23 19:34 +0000 ged
|
188
|
+
* Fixed docs on the binding arguments for Treequel::Directory#initialize.
|
189
|
+
|
190
|
+
54 3a204e54603e 2009-06-23 14:57 +0000 ged
|
191
|
+
* Added delegation to the connection wrapper.
|
192
|
+
|
193
|
+
53 6defed90cfcc 2009-06-22 17:09 +0000 ged
|
194
|
+
* Fixed RDoc headers.
|
195
|
+
|
196
|
+
52 cdbb80f015b6 2009-06-18 18:45 +0000 ged
|
197
|
+
* Updated the build system.
|
198
|
+
|
199
|
+
51 6da5c8ac1752 2009-06-18 15:29 +0000 ged
|
200
|
+
* Adding BranchCollection class.
|
201
|
+
|
202
|
+
50 8713fc4b41a9 2009-06-17 18:42 +0000 ged
|
203
|
+
* Updated build system
|
204
|
+
|
205
|
+
49 d33d81ff8327 2009-06-11 22:17 +0000 ged
|
206
|
+
Adding the beginnings of a manual.
|
207
|
+
|
208
|
+
48 99d1553532f1 2009-06-11 22:11 +0000 ged
|
209
|
+
* Treequel::Branch:
|
210
|
+
|
211
|
+
47 3cf7a6589f40 2009-06-11 03:51 +0000 ged
|
212
|
+
* Fetch the default baseDN from the directory's root DSE instead of just using
|
213
|
+
|
214
|
+
46 decd99bd99e9 2009-06-09 22:54 +0000 ged
|
215
|
+
* Added Branch#to_ldif
|
216
|
+
|
217
|
+
45 b27a2eb78d02 2009-06-08 17:53 +0000 ged
|
218
|
+
* Added datatype conversions for some of the default syntaxes to Directory.
|
219
|
+
|
220
|
+
44 4c2477eb2a68 2009-06-04 03:55 +0000 ged
|
221
|
+
* Treequel::Branch
|
222
|
+
|
223
|
+
43 b02d86bf9162 2009-06-02 15:42 +0000 ged
|
224
|
+
* Finished hooking up LDAPSyntax to AttributeType.
|
225
|
+
|
226
|
+
42 7617a4b44fd9 2009-06-01 16:17 +0000 ged
|
227
|
+
* Finished implementation of matchingRuleUses and ldapSyntaxes.
|
228
|
+
|
229
|
+
41 99fd606993ac 2009-06-01 14:27 +0000 ged
|
230
|
+
* Checkpoint commit of Treequel::Schema::LDAPSyntax class.
|
231
|
+
|
232
|
+
40 3dd18fa1c7fc 2009-05-29 20:57 +0000 ged
|
233
|
+
* Adding Treequel::Schema::MatchingRule.
|
234
|
+
|
235
|
+
39 cb93500e5d98 2009-05-29 15:28 +0000 ged
|
236
|
+
* Treequel::Branch -- Changed the 'value' and 'attribute' attributes to 'rdn_value' and
|
237
|
+
|
238
|
+
38 fb415faaeddb 2009-05-29 02:49 +0000 ged
|
239
|
+
* Added custom #inspect methods for Schema and Directory.
|
240
|
+
|
241
|
+
37 aaef0c5c4703 2009-05-23 21:44 +0000 ged
|
242
|
+
* Updated build system
|
243
|
+
|
244
|
+
36 3132d19804a1 2009-05-20 19:08 +0000 ged
|
245
|
+
* Treequel::Branch
|
246
|
+
|
247
|
+
35 e43f57f0f04c 2009-05-19 08:01 +0000 ged
|
248
|
+
Include the superior class's name in Treequel::Schema::ObjectClass#inspect output.
|
249
|
+
|
250
|
+
34 3ebeec1eacf6 2009-05-19 00:13 +0000 ged
|
251
|
+
* Treequel::Branch
|
252
|
+
|
253
|
+
33 c615693a11e0 2009-05-18 21:10 +0000 ged
|
254
|
+
* Finished up Treequel::Branch#[]=
|
255
|
+
|
256
|
+
32 72cd36c693ca 2009-05-18 14:56 +0000 mahlon
|
257
|
+
* If a user/pass is supplied via the directory connect URI, bind immediately.
|
258
|
+
|
259
|
+
31 a9bcbecb60f3 2009-05-16 00:03 +0000 ged
|
260
|
+
* Treequel::Branch
|
261
|
+
|
262
|
+
30 72ccdbdccd8d 2009-05-15 16:52 +0000 ged
|
263
|
+
* Treequel::Branch:
|
264
|
+
|
265
|
+
29 34bce6d3ec1a 2009-05-14 18:43 +0000 ged
|
266
|
+
* Finished the initial implementation of the Sequel::Schema::AttributeType class.
|
267
|
+
|
268
|
+
28 3a222b303870 2009-05-13 16:38 +0000 ged
|
269
|
+
* Replaced the plain Treequel::Directory#schema method with the one that
|
270
|
+
|
271
|
+
27 4946985217e9 2009-05-13 01:00 +0000 ged
|
272
|
+
* Renamed Treequel::Branch#attr_pair to #rdn.
|
273
|
+
|
274
|
+
26 da533735fb9f 2009-05-12 14:22 +0000 ged
|
275
|
+
* Unified must/may oids into @must_oids and @may_oids to distinguish between them and
|
276
|
+
|
277
|
+
25 44a3834ff324 2009-05-11 23:09 +0000 ged
|
278
|
+
* Added name, desc, kind, must, and may attribute normalization to
|
279
|
+
|
280
|
+
24 1d9b831d1579 2009-05-11 16:49 +0000 ged
|
281
|
+
Checkpoint commit:
|
282
|
+
|
283
|
+
23 9a1ba6888856 2009-05-11 13:21 +0000 ged
|
284
|
+
Checkpoint commit:
|
285
|
+
|
286
|
+
22 fc25616368b8 2009-05-08 01:08 +0000 ged
|
287
|
+
More work on parsing objectClasses.
|
288
|
+
|
289
|
+
21 2378ca43e383 2009-05-07 19:44 +0000 ged
|
290
|
+
Checkpoint commit -- converting schema regexps to match the BNF in RFC 4512 instead of the one from 2252.
|
291
|
+
|
292
|
+
20 feedf3cfda8b 2009-04-29 16:59 +0000 ged
|
293
|
+
* Added more RFC2252 regexp patterns to constants.rb.
|
294
|
+
|
295
|
+
19 f2fef4dea785 2009-04-24 17:03 +0000 ged
|
296
|
+
* Starting work on schema support.
|
297
|
+
|
298
|
+
18 fa68642a4c6b 2009-04-22 16:21 +0000 ged
|
299
|
+
* Fixed .filter( :attribute => value )
|
300
|
+
|
301
|
+
17 d009a339d2cd 2009-04-22 13:24 +0000 ged
|
302
|
+
* Started filter support for Sequel expressions
|
303
|
+
|
304
|
+
16 cb0752ae5ce9 2009-04-21 01:57 +0000 ged
|
305
|
+
More filter work.
|
306
|
+
|
307
|
+
15 53fef8079a4e 2009-04-20 16:32 +0000 ged
|
308
|
+
Finished up initial filter work.
|
309
|
+
|
310
|
+
14 621dbbe99418 2009-04-18 08:05 +0000 ged
|
311
|
+
* Committing yesterday's work on substring filters before I fall asleep.
|
312
|
+
|
313
|
+
13 b71338a3b66f 2009-04-16 16:31 +0000 ged
|
314
|
+
* Started work on substring item filter syntax and class.
|
315
|
+
|
316
|
+
12 27d7a681eb00 2009-04-16 01:08 +0000 ged
|
317
|
+
Checkpoint of more filter work.
|
318
|
+
|
319
|
+
11 53cf56feaad8 2009-04-15 15:41 +0000 ged
|
320
|
+
Committing this morning's work.
|
321
|
+
|
322
|
+
10 ba1440c71f01 2009-04-13 20:15 +0000 ged
|
323
|
+
Checkpoint commit of this morning's work.
|
324
|
+
|
325
|
+
9 e8fd5884c22f 2009-04-10 16:01 +0000 ged
|
326
|
+
Checkpoint commit.
|
327
|
+
|
328
|
+
8 6924adc0feb2 2009-04-09 15:58 +0000 ged
|
329
|
+
Checkpoint commit.
|
330
|
+
|
331
|
+
7 0c1438a9105a 2009-03-30 15:27 +0000 ged
|
332
|
+
Checkpoint commit.
|
333
|
+
|
334
|
+
6 5f3f334406cf 2009-03-18 00:54 +0000 ged
|
335
|
+
* Finished Treequel::Branch.new_from_dn
|
336
|
+
|
337
|
+
5 83d533b2987d 2009-03-10 16:49 +0000 ged
|
338
|
+
* Checkpoint of the morning's work.
|
339
|
+
|
340
|
+
4 27b230b291a3 2009-03-10 05:10 +0000 ged
|
341
|
+
* Snapshot of today's work.
|
342
|
+
|
343
|
+
3 f73835204ddc 2009-03-09 20:05 +0000 ged
|
344
|
+
* Committing the morning's work.
|
345
|
+
|
346
|
+
2 7709b9520686 2009-03-09 13:44 +0000 ged
|
347
|
+
* Updated build system
|
348
|
+
|
349
|
+
1 d8e78b6b4088 2009-03-07 04:37 +0000 ged
|
350
|
+
* Started an initial spike and installed build system.
|
351
|
+
|
352
|
+
0 b21f833298d6 2008-12-05 19:28 +0000 ged
|
353
|
+
Creating repo
|
354
|
+
|
data/LICENSE
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
Copyright (c) 2008-2009, Michael Granger and Mahlon E. Smith
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice,
|
8
|
+
this list of conditions and the following disclaimer.
|
9
|
+
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
12
|
+
and/or other materials provided with the distribution.
|
13
|
+
|
14
|
+
* Neither the name of the author/s, nor the names of the project's
|
15
|
+
contributors may be used to endorse or promote products derived from this
|
16
|
+
software without specific prior written permission.
|
17
|
+
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
19
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
20
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
21
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
22
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
24
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
25
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
26
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
27
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
= Treequel - an honest LDAP library
|
2
|
+
|
3
|
+
Treequel is an LDAP toolkit for Ruby. It is intended to allow quick, easy
|
4
|
+
access to LDAP directories in a manner consistent with LDAP's hierarchical,
|
5
|
+
free-form nature.
|
6
|
+
|
7
|
+
It's inspired by and modeled after Sequel (http://sequel.rubyforge.org/), a
|
8
|
+
kick-ass database library.
|
9
|
+
|
10
|
+
|
11
|
+
== Examples
|
12
|
+
|
13
|
+
Here are a few short examples to whet your appetite:
|
14
|
+
|
15
|
+
# Connect to the directory at the specified URL
|
16
|
+
dir = Treequel.directory( 'ldap://ldap.company.com/dc=company,dc=com' )
|
17
|
+
|
18
|
+
# Get a list of email addresses of every person in the directory (as
|
19
|
+
# long as people are under ou=people)
|
20
|
+
dir.ou( :people ).filter( :mail ).map( :mail ).flatten
|
21
|
+
|
22
|
+
# Get a list of all IP addresses for all hosts in any ou=hosts group
|
23
|
+
# in the whole directory:
|
24
|
+
dir.filter( :ou => :hosts ).collection.filter( :ipHostNumber ).
|
25
|
+
map( :ipHostNumber ).flatten
|
26
|
+
|
27
|
+
# Get all people in the directory in the form of a hash of names
|
28
|
+
# keyed by email addresses
|
29
|
+
dir.ou( :people ).filter( :mail ).to_hash( :mail, :cn )
|
30
|
+
|
31
|
+
More elaborate examples of real-world usage can be found in the examples/
|
32
|
+
directory in the distribution. You can also browse them in a web browser
|
33
|
+
via the project page:
|
34
|
+
|
35
|
+
http://deveiate.org/projects/Treequel/browser/examples
|
36
|
+
|
37
|
+
|
38
|
+
== Contributing
|
39
|
+
|
40
|
+
You can check out the current development source with Mercurial from the
|
41
|
+
following URL:
|
42
|
+
|
43
|
+
http://repo.deveiate.org/Treequel
|
44
|
+
|
45
|
+
You can submit bug reports, suggestions, and read more about future plans at
|
46
|
+
the project page:
|
47
|
+
|
48
|
+
http://deveiate.org/projects/Treequel
|
49
|
+
|
50
|
+
|
51
|
+
== License
|
52
|
+
|
53
|
+
See the included LICENSE file for licensing details.
|
54
|
+
|
55
|
+
|
56
|
+
== Authors
|
57
|
+
|
58
|
+
* Michael Granger
|
59
|
+
* Mahlon E. Smith
|
60
|
+
|
61
|
+
|
62
|
+
== Contributors
|
63
|
+
|
64
|
+
A special thanks to Ben Bleything, who was part of the initial brainstorm that
|
65
|
+
led to the creation of this library.
|
66
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,345 @@
|
|
1
|
+
#!rake
|
2
|
+
#
|
3
|
+
# Treequel rakefile
|
4
|
+
#
|
5
|
+
# Based on various other Rakefiles, especially one by Ben Bleything
|
6
|
+
#
|
7
|
+
# Copyright (c) 2007-2009 The FaerieMUD Consortium
|
8
|
+
#
|
9
|
+
# Authors:
|
10
|
+
# * Michael Granger <ged@FaerieMUD.org>
|
11
|
+
# * Mahlon E. Smith <mahlon@martini.nu>
|
12
|
+
#
|
13
|
+
|
14
|
+
BEGIN {
|
15
|
+
require 'pathname'
|
16
|
+
basedir = Pathname.new( __FILE__ ).dirname
|
17
|
+
|
18
|
+
libdir = basedir + "lib"
|
19
|
+
extdir = basedir + "ext"
|
20
|
+
|
21
|
+
$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
|
22
|
+
$LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s )
|
23
|
+
}
|
24
|
+
|
25
|
+
begin
|
26
|
+
require 'readline'
|
27
|
+
include Readline
|
28
|
+
rescue LoadError
|
29
|
+
# Fall back to a plain prompt
|
30
|
+
def readline( text )
|
31
|
+
$stderr.print( text.chomp )
|
32
|
+
return $stdin.gets
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'rbconfig'
|
37
|
+
require 'rake'
|
38
|
+
require 'rake/testtask'
|
39
|
+
require 'rake/packagetask'
|
40
|
+
require 'rake/clean'
|
41
|
+
# require 'rake/191_compat.rb'
|
42
|
+
|
43
|
+
$dryrun = false
|
44
|
+
|
45
|
+
### Config constants
|
46
|
+
BASEDIR = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd )
|
47
|
+
BINDIR = BASEDIR + 'bin'
|
48
|
+
LIBDIR = BASEDIR + 'lib'
|
49
|
+
EXTDIR = BASEDIR + 'ext'
|
50
|
+
DOCSDIR = BASEDIR + 'docs'
|
51
|
+
PKGDIR = BASEDIR + 'pkg'
|
52
|
+
DATADIR = BASEDIR + 'data'
|
53
|
+
|
54
|
+
MANUALDIR = DOCSDIR + 'manual'
|
55
|
+
|
56
|
+
PROJECT_NAME = 'Treequel'
|
57
|
+
PKG_NAME = PROJECT_NAME.downcase
|
58
|
+
PKG_SUMMARY = 'An honest LDAP library'
|
59
|
+
|
60
|
+
# Cruisecontrol stuff
|
61
|
+
CC_BUILD_LABEL = ENV['CC_BUILD_LABEL']
|
62
|
+
CC_BUILD_ARTIFACTS = ENV['CC_BUILD_ARTIFACTS'] || 'artifacts'
|
63
|
+
|
64
|
+
VERSION_FILE = LIBDIR + 'treequel.rb'
|
65
|
+
if VERSION_FILE.exist? && buildrev = ENV['CC_BUILD_LABEL']
|
66
|
+
PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ] + '.' + buildrev
|
67
|
+
elsif VERSION_FILE.exist?
|
68
|
+
PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ]
|
69
|
+
else
|
70
|
+
PKG_VERSION = '0.0.0'
|
71
|
+
end
|
72
|
+
|
73
|
+
PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}"
|
74
|
+
GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem"
|
75
|
+
|
76
|
+
# Universal VCS constants
|
77
|
+
DEFAULT_EDITOR = 'vi'
|
78
|
+
COMMIT_MSG_FILE = 'commit-msg.txt'
|
79
|
+
FILE_INDENT = " " * 12
|
80
|
+
LOG_INDENT = " " * 3
|
81
|
+
|
82
|
+
CHANGELOG = BASEDIR + 'ChangeLog'
|
83
|
+
EXTCONF = EXTDIR + 'extconf.rb'
|
84
|
+
|
85
|
+
ARTIFACTS_DIR = Pathname.new( CC_BUILD_ARTIFACTS )
|
86
|
+
|
87
|
+
TEXT_FILES = Rake::FileList.new( %w[Rakefile ChangeLog README LICENSE] )
|
88
|
+
BIN_FILES = Rake::FileList.new( "#{BINDIR}/*" )
|
89
|
+
LIB_FILES = Rake::FileList.new( "#{LIBDIR}/**/*.rb" )
|
90
|
+
EXT_FILES = Rake::FileList.new( "#{EXTDIR}/**/*.{c,h,rb}" )
|
91
|
+
DATA_FILES = Rake::FileList.new( "#{DATADIR}/**/*" )
|
92
|
+
|
93
|
+
SPECDIR = BASEDIR + 'spec'
|
94
|
+
SPECLIBDIR = SPECDIR + 'lib'
|
95
|
+
SPEC_FILES = Rake::FileList.new( "#{SPECDIR}/**/*_spec.rb", "#{SPECLIBDIR}/**/*.rb" )
|
96
|
+
|
97
|
+
TESTDIR = BASEDIR + 'tests'
|
98
|
+
TEST_FILES = Rake::FileList.new( "#{TESTDIR}/**/*.tests.rb" )
|
99
|
+
|
100
|
+
RAKE_TASKDIR = BASEDIR + 'rake'
|
101
|
+
RAKE_TASKLIBS = Rake::FileList.new( "#{RAKE_TASKDIR}/*.rb" )
|
102
|
+
PKG_TASKLIBS = Rake::FileList.new( "#{RAKE_TASKDIR}/{191_compat,helpers,packaging,rdoc,testing}.rb" )
|
103
|
+
PKG_TASKLIBS.include( "#{RAKE_TASKDIR}/manual.rb" ) if MANUALDIR.exist?
|
104
|
+
|
105
|
+
RAKE_TASKLIBS_URL = 'http://repo.deveiate.org/rake-tasklibs'
|
106
|
+
|
107
|
+
LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local'
|
108
|
+
|
109
|
+
EXTRA_PKGFILES = Rake::FileList.new
|
110
|
+
EXTRA_PKGFILES.include( "#{BASEDIR}/examples/**/*.{rb,erb,css,png}" )
|
111
|
+
|
112
|
+
RELEASE_FILES = TEXT_FILES +
|
113
|
+
SPEC_FILES +
|
114
|
+
TEST_FILES +
|
115
|
+
BIN_FILES +
|
116
|
+
LIB_FILES +
|
117
|
+
EXT_FILES +
|
118
|
+
DATA_FILES +
|
119
|
+
RAKE_TASKLIBS +
|
120
|
+
EXTRA_PKGFILES
|
121
|
+
|
122
|
+
|
123
|
+
RELEASE_FILES << LOCAL_RAKEFILE.to_s if LOCAL_RAKEFILE.exist?
|
124
|
+
|
125
|
+
COVERAGE_MINIMUM = ENV['COVERAGE_MINIMUM'] ? Float( ENV['COVERAGE_MINIMUM'] ) : 85.0
|
126
|
+
RCOV_EXCLUDES = 'spec,tests,/Library/Ruby,/var/lib,/usr/local/lib'
|
127
|
+
RCOV_OPTS = [
|
128
|
+
'--exclude', RCOV_EXCLUDES,
|
129
|
+
'--xrefs',
|
130
|
+
'--save',
|
131
|
+
'--callsites',
|
132
|
+
#'--aggregate', 'coverage.data' # <- doesn't work as of 0.8.1.2.0
|
133
|
+
]
|
134
|
+
|
135
|
+
|
136
|
+
### Load some task libraries that need to be loaded early
|
137
|
+
if !RAKE_TASKDIR.exist?
|
138
|
+
$stderr.puts "It seems you don't have the build task directory. Shall I fetch it "
|
139
|
+
ans = readline( "for you? [y]" )
|
140
|
+
ans = 'y' if !ans.nil? && ans.empty?
|
141
|
+
|
142
|
+
if ans =~ /^y/i
|
143
|
+
$stderr.puts "Okay, fetching #{RAKE_TASKLIBS_URL} into #{RAKE_TASKDIR}..."
|
144
|
+
system 'hg', 'clone', RAKE_TASKLIBS_URL, RAKE_TASKDIR
|
145
|
+
if ! $?.success?
|
146
|
+
fail "Damn. That didn't work. Giving up; maybe try manually fetching?"
|
147
|
+
end
|
148
|
+
else
|
149
|
+
$stderr.puts "Then I'm afraid I can't continue. Best of luck."
|
150
|
+
fail "Rake tasklibs not present."
|
151
|
+
end
|
152
|
+
|
153
|
+
RAKE_TASKLIBS.include( "#{RAKE_TASKDIR}/*.rb" )
|
154
|
+
end
|
155
|
+
|
156
|
+
require RAKE_TASKDIR + 'helpers.rb'
|
157
|
+
|
158
|
+
# Define some constants that depend on the 'svn' tasklib
|
159
|
+
if hg = which( 'hg' )
|
160
|
+
id = IO.read('|-') or exec hg, 'id', '-q'
|
161
|
+
PKG_BUILD = id.chomp
|
162
|
+
else
|
163
|
+
PKG_BUILD = 0
|
164
|
+
end
|
165
|
+
SNAPSHOT_PKG_NAME = "#{PKG_FILE_NAME}.#{PKG_BUILD}"
|
166
|
+
SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem"
|
167
|
+
|
168
|
+
# Documentation constants
|
169
|
+
RDOCDIR = DOCSDIR + 'api'
|
170
|
+
RDOC_OPTIONS = [
|
171
|
+
'-w', '4',
|
172
|
+
'-HN',
|
173
|
+
'-i', '.',
|
174
|
+
'-m', 'README',
|
175
|
+
'-t', PKG_NAME,
|
176
|
+
'-W', 'http://deveiate.org/projects/Treequel/browser/'
|
177
|
+
]
|
178
|
+
|
179
|
+
# Release constants
|
180
|
+
SMTP_HOST = 'mail.faeriemud.org'
|
181
|
+
SMTP_PORT = 465 # SMTP + SSL
|
182
|
+
|
183
|
+
# Project constants
|
184
|
+
PROJECT_HOST = 'deveiate'
|
185
|
+
PROJECT_PUBDIR = '/usr/local/www/public/code'
|
186
|
+
PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}"
|
187
|
+
PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}"
|
188
|
+
PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}"
|
189
|
+
|
190
|
+
# Rubyforge stuff
|
191
|
+
RUBYFORGE_GROUP = 'deveiate'
|
192
|
+
RUBYFORGE_PROJECT = 'treequel'
|
193
|
+
|
194
|
+
# Gem dependencies: gemname => version
|
195
|
+
DEPENDENCIES = {
|
196
|
+
'ruby-ldap' => '>= 0.9.9',
|
197
|
+
}
|
198
|
+
|
199
|
+
# Developer Gem dependencies: gemname => version
|
200
|
+
DEVELOPMENT_DEPENDENCIES = {
|
201
|
+
'rake' => '>= 0.8.7',
|
202
|
+
'rcodetools' => '>= 0.7.0.0',
|
203
|
+
'rcov' => '>= 0.8.1.2.0',
|
204
|
+
'rdoc' => '>= 2.4.3',
|
205
|
+
'RedCloth' => '>= 4.0.3',
|
206
|
+
'rspec' => '>= 1.2.6',
|
207
|
+
'rubyforge' => '>= 0',
|
208
|
+
'termios' => '>= 0',
|
209
|
+
'text-format' => '>= 1.0.0',
|
210
|
+
'tmail' => '>= 1.2.3.1',
|
211
|
+
}
|
212
|
+
|
213
|
+
# Non-gem requirements: packagename => version
|
214
|
+
REQUIREMENTS = {
|
215
|
+
'ldap' => '>=0',
|
216
|
+
}
|
217
|
+
|
218
|
+
# RubyGem specification
|
219
|
+
GEMSPEC = Gem::Specification.new do |gem|
|
220
|
+
gem.name = PKG_NAME.downcase
|
221
|
+
gem.version = PKG_VERSION
|
222
|
+
|
223
|
+
gem.summary = PKG_SUMMARY
|
224
|
+
gem.description = [
|
225
|
+
"A library for interacting with LDAP (modeled after Sequel). It is an attempt to remove",
|
226
|
+
"the impedence mismatch of trying to treat LDAP as if it's a relational database, and",
|
227
|
+
"instead embrace its hierarchical, free-form nature.",
|
228
|
+
].join( "\n" )
|
229
|
+
|
230
|
+
gem.authors = "Michael Granger, Mahlon E. Smith"
|
231
|
+
gem.email = ["ged@FaerieMUD.org", "mahlon@martini.nu"]
|
232
|
+
gem.homepage = 'http://deveiate.org/projects/Treequel'
|
233
|
+
gem.rubyforge_project = RUBYFORGE_PROJECT
|
234
|
+
|
235
|
+
gem.has_rdoc = true
|
236
|
+
gem.rdoc_options = RDOC_OPTIONS
|
237
|
+
gem.extra_rdoc_files = %w[ChangeLog README LICENSE]
|
238
|
+
|
239
|
+
gem.bindir = BINDIR.relative_path_from(BASEDIR).to_s
|
240
|
+
gem.executables = BIN_FILES.select {|pn| File.executable?(pn) }.
|
241
|
+
collect {|pn| File.basename(pn) }
|
242
|
+
gem.require_paths << EXTDIR.relative_path_from( BASEDIR ).to_s if EXTDIR.exist?
|
243
|
+
|
244
|
+
if EXTCONF.exist?
|
245
|
+
gem.extensions << EXTCONF.relative_path_from( BASEDIR ).to_s
|
246
|
+
end
|
247
|
+
|
248
|
+
gem.files = RELEASE_FILES
|
249
|
+
gem.test_files = SPEC_FILES
|
250
|
+
|
251
|
+
DEPENDENCIES.each do |name, version|
|
252
|
+
version = '>= 0' if version.length.zero?
|
253
|
+
gem.add_runtime_dependency( name, version )
|
254
|
+
end
|
255
|
+
|
256
|
+
# # Developmental dependencies don't work as of RubyGems 1.2.0
|
257
|
+
# unless Gem::Version.new( Gem::RubyGemsVersion ) <= Gem::Version.new( "1.2.0" )
|
258
|
+
# DEVELOPMENT_DEPENDENCIES.each do |name, version|
|
259
|
+
# version = '>= 0' if version.length.zero?
|
260
|
+
# gem.add_development_dependency( name, version )
|
261
|
+
# end
|
262
|
+
# end
|
263
|
+
|
264
|
+
REQUIREMENTS.each do |name, version|
|
265
|
+
gem.requirements << [ name, version ].compact.join(' ')
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
$trace = Rake.application.options.trace ? true : false
|
270
|
+
$dryrun = Rake.application.options.dryrun ? true : false
|
271
|
+
|
272
|
+
|
273
|
+
# Load any remaining task libraries
|
274
|
+
RAKE_TASKLIBS.each do |tasklib|
|
275
|
+
next if tasklib.to_s =~ %r{/helpers\.rb$}
|
276
|
+
begin
|
277
|
+
trace " loading tasklib %s" % [ tasklib ]
|
278
|
+
import tasklib
|
279
|
+
rescue ScriptError => err
|
280
|
+
fail "Task library '%s' failed to load: %s: %s" %
|
281
|
+
[ tasklib, err.class.name, err.message ]
|
282
|
+
trace "Backtrace: \n " + err.backtrace.join( "\n " )
|
283
|
+
rescue => err
|
284
|
+
log "Task library '%s' failed to load: %s: %s. Some tasks may not be available." %
|
285
|
+
[ tasklib, err.class.name, err.message ]
|
286
|
+
trace "Backtrace: \n " + err.backtrace.join( "\n " )
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
# Load any project-specific rules defined in 'Rakefile.local' if it exists
|
291
|
+
import LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist?
|
292
|
+
|
293
|
+
|
294
|
+
#####################################################################
|
295
|
+
### T A S K S
|
296
|
+
#####################################################################
|
297
|
+
|
298
|
+
### Default task
|
299
|
+
task :default => [:clean, :local, :spec, :rdoc, :package]
|
300
|
+
|
301
|
+
### Task the local Rakefile can append to -- no-op by default
|
302
|
+
task :local
|
303
|
+
|
304
|
+
|
305
|
+
### Task: clean
|
306
|
+
CLEAN.include 'coverage'
|
307
|
+
CLOBBER.include 'artifacts', 'coverage.info', PKGDIR
|
308
|
+
|
309
|
+
### Task: changelog
|
310
|
+
file CHANGELOG do |task|
|
311
|
+
log "Updating #{task.name}"
|
312
|
+
|
313
|
+
changelog = make_changelog()
|
314
|
+
File.open( task.name, 'w' ) do |fh|
|
315
|
+
fh.print( changelog )
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
|
320
|
+
### Task: cruise (Cruisecontrol task)
|
321
|
+
desc "Cruisecontrol build"
|
322
|
+
task :cruise => [:clean, 'spec:quiet', :package] do |task|
|
323
|
+
raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty?
|
324
|
+
artifact_dir = ARTIFACTS_DIR.cleanpath + (CC_BUILD_LABEL || Time.now.strftime('%Y%m%d-%T'))
|
325
|
+
artifact_dir.mkpath
|
326
|
+
|
327
|
+
coverage = BASEDIR + 'coverage'
|
328
|
+
if coverage.exist? && coverage.directory?
|
329
|
+
$stderr.puts "Copying coverage stats..."
|
330
|
+
FileUtils.cp_r( 'coverage', artifact_dir )
|
331
|
+
end
|
332
|
+
|
333
|
+
$stderr.puts "Copying packages..."
|
334
|
+
FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir )
|
335
|
+
end
|
336
|
+
|
337
|
+
|
338
|
+
desc "Update the build system to the latest version"
|
339
|
+
task :update_build do
|
340
|
+
log "Updating the build system"
|
341
|
+
run 'hg', '-R', RAKE_TASKDIR, 'pull', '-u'
|
342
|
+
log "Updating the Rakefile"
|
343
|
+
sh 'rake', '-f', RAKE_TASKDIR + 'Metarakefile'
|
344
|
+
end
|
345
|
+
|