treequel 1.2.0 → 1.2.1

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/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Treequel - an honest LDAP library
2
2
 
3
+ * http://deveiate.org/projects/Treequel
4
+
5
+ ## Description
6
+
3
7
  Treequel is an LDAP toolkit for Ruby. It is intended to allow quick, easy
4
8
  access to LDAP directories in a manner consistent with LDAP's hierarchical,
5
9
  free-form nature.
@@ -43,7 +47,33 @@ You can submit bug reports, suggestions, and read more about future plans at
43
47
 
44
48
  ## License
45
49
 
46
- See the included LICENSE file for licensing details.
50
+ Copyright (c) 2008-2010, Michael Granger and Mahlon E. Smith
51
+ All rights reserved.
52
+
53
+ Redistribution and use in source and binary forms, with or without
54
+ modification, are permitted provided that the following conditions are met:
55
+
56
+ * Redistributions of source code must retain the above copyright notice,
57
+ this list of conditions and the following disclaimer.
58
+
59
+ * Redistributions in binary form must reproduce the above copyright notice,
60
+ this list of conditions and the following disclaimer in the documentation
61
+ and/or other materials provided with the distribution.
62
+
63
+ * Neither the name of the author/s, nor the names of the project's
64
+ contributors may be used to endorse or promote products derived from this
65
+ software without specific prior written permission.
66
+
67
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
68
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
69
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
70
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
71
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
72
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
73
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
74
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
75
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
76
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47
77
 
48
78
 
49
79
  ## Authors
data/Rakefile CHANGED
@@ -1,376 +1,58 @@
1
- #!rake -*- ruby -*-
2
- #
3
- # Treequel rakefile
4
- #
5
- # Based on various other Rakefiles, especially one by Ben Bleything
6
- #
7
- # Copyright (c) 2007-2010 The FaerieMUD Consortium
8
- #
9
- # Authors:
10
- # * Michael Granger <ged@FaerieMUD.org>
11
- #
1
+ #!/usr/bin/env rake
12
2
 
13
- BEGIN {
14
- require 'rbconfig'
15
- require 'pathname'
16
- basedir = Pathname.new( __FILE__ ).dirname
3
+ require 'hoe'
17
4
 
18
- libdir = basedir + "lib"
19
- extdir = libdir + Config::CONFIG['sitearch']
5
+ Hoe.plugin :hg
6
+ Hoe.plugin :yard
7
+ Hoe.plugin :signing
20
8
 
21
- $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
22
- $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
23
- $LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s )
24
- }
9
+ Hoe.plugins.delete :rubyforge
25
10
 
26
- begin
27
- require 'readline'
28
- include Readline
29
- rescue LoadError
30
- # Fall back to a plain prompt
31
- def readline( text )
32
- $stderr.print( text.chomp )
33
- return $stdin.gets
34
- end
35
- end
36
-
37
- begin
38
- require 'rubygems'
39
- rescue LoadError
40
- module Gem
41
- class Specification; end
42
- end
43
- end
11
+ hoespec = Hoe.spec 'treequel' do
12
+ self.name = 'treequel'
13
+ self.readme_file = 'README.md'
44
14
 
45
- require 'pathname'
46
- require 'rbconfig'
47
- require 'rake'
48
- require 'rake/testtask'
49
- require 'rake/packagetask'
50
- require 'rake/clean'
51
- # require 'rake/191_compat.rb'
15
+ self.developer 'Michael Granger', 'ged@FaerieMUD.org'
16
+ self.developer 'Mahlon E. Smith', 'mahlon@martini.nu'
52
17
 
53
- $dryrun = false
18
+ self.extra_deps <<
19
+ ['ruby-ldap', '~> 0.9.11']
20
+ self.extra_dev_deps <<
21
+ ['rspec', '~> 2.1.0'] <<
22
+ ['ruby-termios', '~> 0.9.6'] <<
23
+ ['ruby-terminfo', '~> 0.1.1'] <<
24
+ ['yard', '~> 0.6.1']
54
25
 
55
- ### Config constants
56
- BASEDIR = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd )
57
- BINDIR = BASEDIR + 'bin'
58
- LIBDIR = BASEDIR + 'lib'
59
- EXTDIR = BASEDIR + 'ext'
60
- DOCSDIR = BASEDIR + 'docs'
61
- PKGDIR = BASEDIR + 'pkg'
62
- DATADIR = BASEDIR + 'data'
26
+ self.spec_extras[:licenses] = ["BSD"]
27
+ self.spec_extras[:post_install_message] = [
28
+ "If you want to use the included 'treequel' LDAP shell, you'll need to install",
29
+ "the following libraries as well:",
30
+ " - termios",
31
+ " - ruby-terminfo",
32
+ " - columnize",
33
+ ].join( "\n" )
63
34
 
64
- MANUALDIR = DOCSDIR + 'manual'
35
+ self.require_ruby_version( '>=1.8.7' )
65
36
 
66
- PROJECT_NAME = 'Treequel'
67
- PKG_NAME = PROJECT_NAME.downcase
68
- PKG_SUMMARY = 'An honest LDAP library'
69
-
70
- # Cruisecontrol stuff
71
- CC_BUILD_LABEL = ENV['CC_BUILD_LABEL']
72
- CC_BUILD_ARTIFACTS = ENV['CC_BUILD_ARTIFACTS'] || 'artifacts'
73
-
74
- VERSION_FILE = LIBDIR + 'treequel.rb'
75
- if VERSION_FILE.exist? && buildrev = ENV['CC_BUILD_LABEL']
76
- PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ] + '.' + buildrev
77
- elsif VERSION_FILE.exist?
78
- PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ]
37
+ self.yard_title = 'Treequel'
38
+ self.yard_opts = [ '--use-cache', '--protected', '--verbose' ]
79
39
  end
80
40
 
81
- PKG_VERSION = '0.0.0' unless defined?( PKG_VERSION ) && !PKG_VERSION.nil?
82
-
83
- PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}"
84
- GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem"
85
-
86
- # Universal VCS constants
87
- DEFAULT_EDITOR = 'vi'
88
- COMMIT_MSG_FILE = 'commit-msg.txt'
89
- FILE_INDENT = " " * 12
90
- LOG_INDENT = " " * 3
91
-
92
- EXTCONF = EXTDIR + 'extconf.rb'
93
-
94
- ARTIFACTS_DIR = Pathname.new( CC_BUILD_ARTIFACTS )
95
-
96
- TEXT_FILES = Rake::FileList.new( %w[Rakefile ChangeLog README* LICENSE] )
97
- BIN_FILES = Rake::FileList.new( "#{BINDIR}/*" )
98
- LIB_FILES = Rake::FileList.new( "#{LIBDIR}/**/*.rb" )
99
- EXT_FILES = Rake::FileList.new( "#{EXTDIR}/**/*.{c,h,rb}" )
100
- DATA_FILES = Rake::FileList.new( "#{DATADIR}/**/*" )
101
-
102
- SPECDIR = BASEDIR + 'spec'
103
- SPECLIBDIR = SPECDIR + 'lib'
104
- SPEC_FILES = Rake::FileList.new( "#{SPECDIR}/**/*_spec.rb", "#{SPECLIBDIR}/**/*.rb" )
105
-
106
- TESTDIR = BASEDIR + 'tests'
107
- TEST_FILES = Rake::FileList.new( "#{TESTDIR}/**/*.tests.rb" )
108
-
109
- RAKE_TASKDIR = BASEDIR + 'rake'
110
- RAKE_TASKLIBS = Rake::FileList.new( "#{RAKE_TASKDIR}/*.rb" )
111
- PKG_TASKLIBS = Rake::FileList.new( "#{RAKE_TASKDIR}/{191_compat,helpers,packaging,rdoc,testing}.rb" )
112
- PKG_TASKLIBS.include( "#{RAKE_TASKDIR}/manual.rb" ) if MANUALDIR.exist?
113
-
114
- RAKE_TASKLIBS_URL = 'http://repo.deveiate.org/rake-tasklibs'
115
-
116
- LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local'
117
-
118
- EXTRA_PKGFILES = Rake::FileList.new
119
- EXTRA_PKGFILES.include( "#{BASEDIR}/examples/**/*.{rb,erb,css,png}" )
120
-
121
- RELEASE_FILES = TEXT_FILES +
122
- SPEC_FILES +
123
- TEST_FILES +
124
- BIN_FILES +
125
- LIB_FILES +
126
- EXT_FILES +
127
- DATA_FILES +
128
- RAKE_TASKLIBS +
129
- EXTRA_PKGFILES
41
+ ENV['VERSION'] ||= hoespec.spec.version.to_s
130
42
 
43
+ include Hoe::MercurialHelpers
131
44
 
132
- RELEASE_FILES << LOCAL_RAKEFILE.to_s if LOCAL_RAKEFILE.exist?
45
+ ### Task: prerelease
46
+ desc "Append the package build number to package versions"
47
+ task :pre do
48
+ rev = get_numeric_rev()
49
+ trace "Current rev is: %p" % [ rev ]
50
+ hoespec.spec.version.version << "pre#{rev}"
51
+ Rake::Task[:gem].clear
133
52
 
134
- RELEASE_ANNOUNCE_ADDRESSES = [
135
- "Ruby-Talk List <ruby-talk@ruby-lang.org>",
136
- ]
137
-
138
- COVERAGE_MINIMUM = ENV['COVERAGE_MINIMUM'] ? Float( ENV['COVERAGE_MINIMUM'] ) : 85.0
139
- RCOV_EXCLUDES = 'spec,tests,/Library/Ruby,/var/lib,/usr/local/lib'
140
- RCOV_OPTS = [
141
- '--exclude', RCOV_EXCLUDES,
142
- '--xrefs',
143
- '--save',
144
- '--callsites',
145
- #'--aggregate', 'coverage.data' # <- doesn't work as of 0.8.1.2.0
146
- ]
147
-
148
-
149
- ### Load some task libraries that need to be loaded early
150
- if !RAKE_TASKDIR.exist?
151
- $stderr.puts "It seems you don't have the build task directory. Shall I fetch it "
152
- ans = readline( "for you? [y]" )
153
- ans = 'y' if !ans.nil? && ans.empty?
154
-
155
- if ans =~ /^y/i
156
- $stderr.puts "Okay, fetching #{RAKE_TASKLIBS_URL} into #{RAKE_TASKDIR}..."
157
- system 'hg', 'clone', RAKE_TASKLIBS_URL, "./#{RAKE_TASKDIR}"
158
- if ! $?.success?
159
- fail "Damn. That didn't work. Giving up; maybe try manually fetching?"
160
- end
161
- else
162
- $stderr.puts "Then I'm afraid I can't continue. Best of luck."
163
- fail "Rake tasklibs not present."
53
+ Gem::PackageTask.new( hoespec.spec ) do |pkg|
54
+ pkg.need_zip = true
55
+ pkg.need_tar = true
164
56
  end
165
-
166
- RAKE_TASKLIBS.include( "#{RAKE_TASKDIR}/*.rb" )
167
- end
168
-
169
- require RAKE_TASKDIR + 'helpers.rb'
170
- include RakefileHelpers
171
-
172
- # Set the build ID if the mercurial executable is available
173
- if hg = which( 'hg' )
174
- id = `#{hg} id -n`.chomp
175
- PKG_BUILD = (id.chomp[ /^[[:xdigit:]]+/ ] || '1')
176
- else
177
- PKG_BUILD = '0'
178
- end
179
- SNAPSHOT_PKG_NAME = "#{PKG_FILE_NAME}.#{PKG_BUILD}"
180
- SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem"
181
-
182
- # Documentation constants
183
- API_DOCSDIR = DOCSDIR + 'api'
184
- README_FILE = TEXT_FILES.find {|path| path =~ /^README/ } || 'README'
185
- RDOC_OPTIONS = [
186
- '--tab-width=4',
187
- '--show-hash',
188
- '--include', BASEDIR.to_s,
189
- "--main=#{README_FILE}",
190
- "--title=#{PKG_NAME}",
191
- ]
192
- YARD_OPTIONS = [
193
- '--use-cache',
194
- '--protected',
195
- '-r', README_FILE,
196
- '--exclude', 'extconf\\.rb',
197
- '--files', 'ChangeLog,LICENSE',
198
- '--output-dir', API_DOCSDIR.to_s,
199
- '--title', "#{PKG_NAME} #{PKG_VERSION}",
200
- ]
201
-
202
- # Release constants
203
- SMTP_HOST = "mail.faeriemud.org"
204
- SMTP_PORT = 465 # SMTP + SSL
205
-
206
- # Project constants
207
- PROJECT_HOST = 'deveiate'
208
- PROJECT_PUBDIR = '/usr/local/www/public/code'
209
- PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}"
210
- PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}"
211
- PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}"
212
-
213
- GEM_PUBHOST = 'rubygems.org'
214
-
215
- # Gem dependencies: gemname => version
216
- DEPENDENCIES = {
217
- 'ruby-ldap' => '~> 0.9.9',
218
- }
219
-
220
- # Developer Gem dependencies: gemname => version
221
- DEVELOPMENT_DEPENDENCIES = {
222
- 'rake' => '~> 0.8.7',
223
- 'rcodetools' => '~> 0.7.0.0',
224
- 'rcov' => '~> 0.8.1.2.0',
225
- 'yard' => '~> 0.6.1',
226
- 'RedCloth' => '~> 4.2.3',
227
- 'rspec' => '~> 2.0.1',
228
- 'ruby-termios' => '~> 0.9.6',
229
- 'text-format' => '~> 1.0.0',
230
- 'tmail' => '~> 1.2.3.1',
231
- 'columnize' => '~> 0.3.1',
232
- 'diff-lcs' => '~> 1.1.2',
233
- 'ruby-termios' => '~> 0.9.6',
234
- 'rspec' => '~> 2.0.1',
235
- 'ruby-terminfo' => '~> 0.1.1',
236
- }
237
-
238
- # Non-gem requirements: packagename => version
239
- REQUIREMENTS = {
240
- 'ldap' => '>=0',
241
- }
242
-
243
- # RubyGem specification
244
- GEMSPEC = Gem::Specification.new do |gem|
245
- gem.name = PKG_NAME.downcase
246
- gem.version = PKG_VERSION
247
-
248
- gem.summary = PKG_SUMMARY
249
- gem.description = [
250
- "A library for interacting with LDAP (modeled after Sequel). It is an attempt to remove",
251
- "the impedence mismatch of trying to treat LDAP as if it's a relational database, and",
252
- "instead embrace its hierarchical, free-form nature.",
253
- ].join( "\n" )
254
- gem.post_install_message = [
255
- "If you want to use the included 'treequel' LDAP shell, you'll need to install",
256
- "the following libraries as well:",
257
- " - termios",
258
- " - ruby-terminfo",
259
- " - columnize",
260
- " - diff-lcs",
261
- ].join( "\n" )
262
-
263
- gem.authors = ["Michael Granger", "Mahlon E. Smith"]
264
- gem.email = ["mahlon@martini.nu", "ged@FaerieMUD.org"]
265
- gem.homepage = 'http://deveiate.org/projects/Treequel'
266
- gem.licenses = ["BSD"]
267
-
268
- gem.has_rdoc = true
269
- gem.rdoc_options = RDOC_OPTIONS
270
- gem.extra_rdoc_files = TEXT_FILES - [ 'Rakefile' ]
271
-
272
- gem.bindir = BINDIR.relative_path_from(BASEDIR).to_s
273
- gem.executables = BIN_FILES.select {|pn| File.executable?(pn) }.
274
- collect {|pn| File.basename(pn) }
275
- gem.require_paths << EXTDIR.relative_path_from( BASEDIR ).to_s if EXTDIR.exist?
276
-
277
- if EXTCONF.exist?
278
- gem.extensions << EXTCONF.relative_path_from( BASEDIR ).to_s
279
- end
280
-
281
- gem.files = RELEASE_FILES
282
- gem.test_files = SPEC_FILES
283
-
284
- # signing key and certificate chain
285
- gem.signing_key = '/Volumes/Keys/ged-private_gem_key.pem'
286
- gem.cert_chain = [File.expand_path('~/.gem/ged-public_gem_cert.pem')]
287
-
288
-
289
- gem.required_ruby_version = '>=1.8.7'
290
-
291
- DEPENDENCIES.each do |name, version|
292
- version = '>= 0' if version.length.zero?
293
- gem.add_runtime_dependency( name, version )
294
- end
295
-
296
- REQUIREMENTS.each do |name, version|
297
- gem.requirements << [ name, version ].compact.join(' ')
298
- end
299
- end
300
-
301
- $trace = Rake.application.options.trace ? true : false
302
- $dryrun = Rake.application.options.dryrun ? true : false
303
- $include_dev_dependencies = false
304
-
305
- # Load any remaining task libraries
306
- RAKE_TASKLIBS.each do |tasklib|
307
- next if tasklib.to_s =~ %r{/helpers\.rb$}
308
- begin
309
- trace " loading tasklib %s" % [ tasklib ]
310
- import tasklib
311
- rescue ScriptError => err
312
- fail "Task library '%s' failed to load: %s: %s" %
313
- [ tasklib, err.class.name, err.message ]
314
- trace "Backtrace: \n " + err.backtrace.join( "\n " )
315
- rescue => err
316
- log "Task library '%s' failed to load: %s: %s. Some tasks may not be available." %
317
- [ tasklib, err.class.name, err.message ]
318
- trace "Backtrace: \n " + err.backtrace.join( "\n " )
319
- end
320
- end
321
-
322
- # Load any project-specific rules defined in 'Rakefile.local' if it exists
323
- import LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist?
324
-
325
-
326
- #####################################################################
327
- ### T A S K S
328
- #####################################################################
329
-
330
- ### Default task
331
- task :default => [:clean, :local, :spec, :apidocs, :package]
332
-
333
- ### Task the local Rakefile can append to -- no-op by default
334
- task :local
335
-
336
- ### Task: clean
337
- CLEAN.include 'coverage', '**/*.orig', '**/*.rej'
338
- CLOBBER.include 'artifacts', 'coverage.info', 'ChangeLog', PKGDIR
339
-
340
- ### Task: changelog
341
- file 'ChangeLog' do |task|
342
- log "Updating #{task.name}"
343
-
344
- changelog = make_changelog()
345
- File.open( task.name, 'w' ) do |fh|
346
- fh.print( changelog )
347
- end
348
- end
349
-
350
-
351
- ### Task: cruise (Cruisecontrol task)
352
- desc "Cruisecontrol build"
353
- task :cruise => [:clean, 'spec:quiet', :package] do |task|
354
- raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty?
355
- artifact_dir = ARTIFACTS_DIR.cleanpath + (CC_BUILD_LABEL || Time.now.strftime('%Y%m%d-%T'))
356
- artifact_dir.mkpath
357
-
358
- coverage = BASEDIR + 'coverage'
359
- if coverage.exist? && coverage.directory?
360
- $stderr.puts "Copying coverage stats..."
361
- FileUtils.cp_r( 'coverage', artifact_dir )
362
- end
363
-
364
- $stderr.puts "Copying packages..."
365
- FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir )
366
- end
367
-
368
-
369
- desc "Update the build system to the latest version"
370
- task :update_build do
371
- log "Updating the build system"
372
- run 'hg', '-R', RAKE_TASKDIR, 'pull', '-u'
373
- log "Updating the Rakefile"
374
- sh 'rake', '-f', RAKE_TASKDIR + 'Metarakefile'
375
57
  end
376
58