logging 0.4.0 → 0.5.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.
@@ -1,11 +1,10 @@
1
- # $Id: root_logger.rb 13 2007-01-15 17:19:37Z tim_pease $
1
+ # $Id: root_logger.rb 37 2007-10-26 19:12:44Z tim_pease $
2
2
 
3
3
  require 'logging'
4
4
  require 'logging/logger'
5
5
 
6
6
  module Logging
7
7
 
8
- #
9
8
  # The root logger exists to ensure that all loggers have a parent and a
10
9
  # defined logging level. If a logger is additive, eventually its log
11
10
  # events will propogate up to the root logger.
@@ -17,7 +16,6 @@ module Logging
17
16
  undef_method m.intern
18
17
  end
19
18
 
20
- #
21
19
  # call-seq:
22
20
  # RootLogger.new
23
21
  #
@@ -36,7 +34,6 @@ module Logging
36
34
  self.level = 0
37
35
  end
38
36
 
39
- #
40
37
  # call-seq:
41
38
  # log <=> other
42
39
  #
@@ -50,7 +47,6 @@ module Logging
50
47
  else raise ArgumentError, 'expecting a Logger instance' end
51
48
  end
52
49
 
53
- #
54
50
  # call-seq:
55
51
  # level = :all
56
52
  #
@@ -0,0 +1,43 @@
1
+ # $Id: doc.rake 11 2007-08-23 15:45:16Z tim_pease $
2
+
3
+ require 'rake/rdoctask'
4
+
5
+ namespace :doc do
6
+
7
+ desc 'Generate RDoc documentation'
8
+ Rake::RDocTask.new do |rd|
9
+ rd.main = PROJ.rdoc_main
10
+ rd.options << '-d' if !WIN32 and `which dot` =~ %r/\/dot/
11
+ rd.rdoc_dir = PROJ.rdoc_dir
12
+
13
+ incl = Regexp.new(PROJ.rdoc_include.join('|'))
14
+ excl = Regexp.new(PROJ.rdoc_exclude.join('|'))
15
+ files = PROJ.files.find_all do |fn|
16
+ case fn
17
+ when excl: false
18
+ when incl: true
19
+ else false end
20
+ end
21
+ rd.rdoc_files.push(*files)
22
+
23
+ title = "#{PROJ.name}-#{PROJ.version} Documentation"
24
+ title = "#{PROJ.rubyforge_name}'s " + title if PROJ.rubyforge_name != title
25
+
26
+ rd.options << "-t #{title}"
27
+ end
28
+
29
+ desc 'Generate ri locally for testing'
30
+ task :ri => :clobber_ri do
31
+ sh "#{RDOC} --ri -o ri ."
32
+ end
33
+
34
+ desc 'Remove ri products'
35
+ task :clobber_ri do
36
+ rm_r 'ri' rescue nil
37
+ end
38
+
39
+ end # namespace :doc
40
+
41
+ task :clobber => %w(doc:clobber_rdoc doc:clobber_ri)
42
+
43
+ # EOF
@@ -0,0 +1,85 @@
1
+ # $Id: gem.rake 11 2007-08-23 15:45:16Z tim_pease $
2
+
3
+ require 'rake/gempackagetask'
4
+
5
+ namespace :gem do
6
+
7
+ PROJ.spec = Gem::Specification.new do |s|
8
+ s.name = PROJ.name
9
+ s.version = PROJ.version
10
+ s.summary = PROJ.summary
11
+ s.authors = Array(PROJ.authors)
12
+ s.email = PROJ.email
13
+ s.homepage = Array(PROJ.url).first
14
+ s.rubyforge_project = PROJ.rubyforge_name
15
+
16
+ s.description = PROJ.description
17
+
18
+ PROJ.dependencies.each do |dep|
19
+ s.add_dependency(*dep)
20
+ end
21
+ s.add_dependency('rake', ">= #{RAKEVERSION}")
22
+
23
+ s.files = PROJ.files
24
+ s.executables = PROJ.executables.map {|fn| File.basename(fn)}
25
+ s.extensions = PROJ.files.grep %r/extconf\.rb$/
26
+
27
+ s.bindir = 'bin'
28
+ dirs = Dir['{lib,ext}']
29
+ s.require_paths = dirs unless dirs.empty?
30
+
31
+ incl = Regexp.new(PROJ.rdoc_include.join('|'))
32
+ excl = PROJ.rdoc_exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
33
+ excl = Regexp.new(excl.join('|'))
34
+ rdoc_files = PROJ.files.find_all do |fn|
35
+ case fn
36
+ when excl: false
37
+ when incl: true
38
+ else false end
39
+ end
40
+ s.rdoc_options = PROJ.rdoc_opts + ['--main', PROJ.rdoc_main]
41
+ s.extra_rdoc_files = rdoc_files
42
+ s.has_rdoc = true
43
+
44
+ if test ?f, PROJ.test_file
45
+ s.test_file = PROJ.test_file
46
+ else
47
+ s.test_files = PROJ.tests.to_a
48
+ end
49
+
50
+ # Do any extra stuff the user wants
51
+ # spec_extras.each do |msg, val|
52
+ # case val
53
+ # when Proc
54
+ # val.call(s.send(msg))
55
+ # else
56
+ # s.send "#{msg}=", val
57
+ # end
58
+ # end
59
+ end
60
+
61
+ desc 'Show information about the gem'
62
+ task :debug do
63
+ puts PROJ.spec.to_ruby
64
+ end
65
+
66
+ Rake::GemPackageTask.new(PROJ.spec) do |pkg|
67
+ pkg.need_tar = PROJ.need_tar
68
+ pkg.need_zip = PROJ.need_zip
69
+ end
70
+
71
+ desc 'Install the gem'
72
+ task :install => [:clobber, :package] do
73
+ sh "#{SUDO} #{GEM} install pkg/#{PROJ.spec.file_name}"
74
+ end
75
+
76
+ desc 'Uninstall the gem'
77
+ task :uninstall do
78
+ sh "#{SUDO} #{GEM} uninstall -v '#{PROJ.version}' #{PROJ.name}"
79
+ end
80
+
81
+ end # namespace :gem
82
+
83
+ task :clobber => 'gem:clobber_package'
84
+
85
+ # EOF
@@ -0,0 +1,39 @@
1
+ # $Id: manifest.rake 11 2007-08-23 15:45:16Z tim_pease $
2
+
3
+ require 'find'
4
+
5
+ namespace :manifest do
6
+
7
+ desc 'Verify the manfiest'
8
+ task :check do
9
+ fn = 'Manifest.tmp'
10
+ files = []
11
+ exclude = Regexp.new(PROJ.exclude.join('|'))
12
+ Find.find '.' do |path|
13
+ next unless test ?f, path
14
+ next if path =~ exclude
15
+ files << path[2..-1]
16
+ end
17
+
18
+ File.open(fn, 'w') {|fp| fp.puts files.sort}
19
+ system "#{DIFF} -du Manifest.txt #{fn}"
20
+ rm fn rescue nil
21
+ end
22
+
23
+ desc 'Create a new manifest'
24
+ task :create do
25
+ fn = 'Manifest.txt'
26
+ files = []
27
+ exclude = Regexp.new(PROJ.exclude.join('|'))
28
+ Find.find '.' do |path|
29
+ next unless test ?f, path
30
+ next if path =~ exclude
31
+ files << path[2..-1]
32
+ end
33
+
34
+ files << fn unless test ?f, fn
35
+ File.open(fn, 'w') {|fp| fp.puts files.sort}
36
+ end
37
+ end
38
+
39
+ # EOF
@@ -0,0 +1,57 @@
1
+ # $Id: rubyforge.rake 11 2007-08-23 15:45:16Z tim_pease $
2
+
3
+ if PROJ.rubyforge_name && HAVE_RUBYFORGE
4
+
5
+ require 'rubyforge'
6
+ require 'rake/contrib/sshpublisher'
7
+
8
+ namespace :gem do
9
+ desc 'Package and upload to RubyForge'
10
+ task :release => [:clobber, :package] do |t|
11
+ v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
12
+ abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
13
+ pkg = "pkg/#{PROJ.spec.full_name}"
14
+
15
+ if $DEBUG then
16
+ puts "release_id = rf.add_release #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
17
+ puts "rf.add_file #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
18
+ end
19
+
20
+ rf = RubyForge.new
21
+ puts 'Logging in'
22
+ rf.login
23
+
24
+ c = rf.userconfig
25
+ c['release_notes'] = PROJ.description if PROJ.description
26
+ c['release_changes'] = PROJ.changes if PROJ.changes
27
+ c['preformatted'] = true
28
+
29
+ files = [(PROJ.need_tar ? "#{pkg}.tgz" : nil),
30
+ (PROJ.need_zip ? "#{pkg}.zip" : nil),
31
+ "#{pkg}.gem"].compact
32
+
33
+ puts "Releasing #{PROJ.name} v. #{PROJ.version}"
34
+ rf.add_release PROJ.rubyforge_name, PROJ.name, PROJ.version, *files
35
+ end
36
+ end # namespace :gem
37
+
38
+
39
+ namespace :doc do
40
+ desc "Publish RDoc to RubyForge"
41
+ task :release => %w(doc:clobber_rdoc doc:rdoc) do
42
+ config = YAML.load(
43
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
44
+ )
45
+
46
+ host = "#{config['username']}@rubyforge.org"
47
+ remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge_name}/"
48
+ remote_dir << PROJ.rdoc_remote_dir || PROJ.name
49
+ local_dir = PROJ.rdoc_dir
50
+
51
+ Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
52
+ end
53
+ end # namespace :doc
54
+
55
+ end # if HAVE_RUBYFORGE
56
+
57
+ # EOF
@@ -0,0 +1,129 @@
1
+ # $Id: setup.rb 40 2007-10-26 20:25:23Z tim_pease $
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'fileutils'
6
+ require 'ostruct'
7
+
8
+ PROJ = OpenStruct.new
9
+
10
+ PROJ.name = nil
11
+ PROJ.summary = nil
12
+ PROJ.description = nil
13
+ PROJ.changes = nil
14
+ PROJ.authors = nil
15
+ PROJ.email = nil
16
+ PROJ.url = nil
17
+ PROJ.version = ENV['VERSION'] || '0.0.0'
18
+ PROJ.rubyforge_name = nil
19
+ PROJ.exclude = %w(tmp$ bak$ ~$ CVS \.svn)
20
+
21
+ # Rspec
22
+ PROJ.specs = FileList['spec/**/*_spec.rb']
23
+ PROJ.spec_opts = []
24
+
25
+ # Test::Unit
26
+ PROJ.tests = FileList['test/**/test_*.rb']
27
+ PROJ.test_file = 'test/all.rb'
28
+ PROJ.test_opts = []
29
+
30
+ # Rcov
31
+ PROJ.rcov_opts = ['--sort', 'coverage', '-T']
32
+
33
+ # Rdoc
34
+ PROJ.rdoc_opts = []
35
+ PROJ.rdoc_include = %w(^lib ^bin ^ext txt$)
36
+ PROJ.rdoc_exclude = %w(extconf\.rb$ ^Manifest\.txt$)
37
+ PROJ.rdoc_main = 'README.txt'
38
+ PROJ.rdoc_dir = 'doc'
39
+ PROJ.rdoc_remote_dir = nil
40
+
41
+ # Extensions
42
+ PROJ.extensions = FileList['ext/**/extconf.rb']
43
+ PROJ.ruby_opts = %w(-w)
44
+ PROJ.libs = []
45
+ %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
46
+
47
+ # Gem Packaging
48
+ PROJ.files =
49
+ if test ?f, 'Manifest.txt'
50
+ files = File.readlines('Manifest.txt').map {|fn| fn.chomp.strip}
51
+ files.delete ''
52
+ files
53
+ else [] end
54
+ PROJ.executables = PROJ.files.find_all {|fn| fn =~ %r/^bin/}
55
+ PROJ.dependencies = []
56
+ PROJ.need_tar = true
57
+ PROJ.need_zip = false
58
+
59
+ # Import the rake tasks
60
+ FileList['tasks/*.rake'].each {|task| import task}
61
+
62
+ # Setup some constants
63
+ WIN32 = %r/win32/ =~ RUBY_PLATFORM unless defined? WIN32
64
+
65
+ DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
66
+
67
+ def quiet( &block )
68
+ io = [STDOUT.dup, STDERR.dup]
69
+ STDOUT.reopen DEV_NULL
70
+ STDERR.reopen DEV_NULL
71
+ block.call
72
+ ensure
73
+ STDOUT.reopen io.first
74
+ STDERR.reopen io.last
75
+ end
76
+
77
+ DIFF = if WIN32 then 'diff.exe'
78
+ else
79
+ if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
80
+ else 'diff' end
81
+ end unless defined? DIFF
82
+
83
+ SUDO = if WIN32 then ''
84
+ else
85
+ if quiet {system 'which sudo'} then 'sudo'
86
+ else '' end
87
+ end
88
+
89
+ RCOV = WIN32 ? 'rcov.cmd' : 'rcov'
90
+ GEM = WIN32 ? 'gem.cmd' : 'gem'
91
+
92
+ %w(rcov spec rubyforge).each do |lib|
93
+ begin
94
+ require lib
95
+ Object.instance_eval {const_set "HAVE_#{lib.upcase}", true}
96
+ rescue LoadError
97
+ Object.instance_eval {const_set "HAVE_#{lib.upcase}", false}
98
+ end
99
+ end
100
+
101
+ # Reads a file at +path+ and spits out an array of the +paragraphs+
102
+ # specified.
103
+ #
104
+ # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
105
+ # summary, *description = paragraphs_of('README.txt', 3, 3..8)
106
+ #
107
+ def paragraphs_of(path, *paragraphs)
108
+ File.read(path).delete("\r").split(/\n\n+/).values_at(*paragraphs)
109
+ end
110
+
111
+ # Adds the given gem _name_ to the current project's dependency list. An
112
+ # optional gem _version_ can be given. If omitted, the newest gem version
113
+ # will be used.
114
+ #
115
+ def depend_on( name, version = nil )
116
+ spec = Gem.source_index.find_name(name).last
117
+ version = spec.version.to_s if version.nil? and !spec.nil?
118
+
119
+ PROJ.dependencies << (version.nil? ? [name] : [name, ">= #{version}"])
120
+ end
121
+
122
+ # Adds the given _path_ to the include path if it is not already there
123
+ #
124
+ def ensure_in_path( path )
125
+ path = File.expand_path(path)
126
+ $: << path if test(?d, path) and not $:.include?(path)
127
+ end
128
+
129
+ # EOF
@@ -0,0 +1,35 @@
1
+ # $Id$
2
+
3
+ require 'rake/testtask'
4
+
5
+ namespace :test do
6
+
7
+ Rake::TestTask.new(:run) do |t|
8
+ t.libs = PROJ.libs
9
+ t.test_files = if test ?f, PROJ.test_file then [PROJ.test_file]
10
+ else PROJ.tests end
11
+ t.ruby_opts += PROJ.ruby_opts
12
+ t.ruby_opts += PROJ.test_opts
13
+ end
14
+
15
+ if HAVE_RCOV
16
+ desc 'Run rcov on the unit tests'
17
+ task :rcov => :clobber_rcov do
18
+ opts = PROJ.rcov_opts.join(' ')
19
+ files = if test ?f, PROJ.test_file then [PROJ.test_file]
20
+ else PROJ.tests end
21
+ files = files.join(' ')
22
+ sh "#{RCOV} #{files} #{opts}"
23
+ end
24
+
25
+ desc 'Remove rcov products'
26
+ task :clobber_rcov do
27
+ rm_r 'coverage' rescue nil
28
+ end
29
+ end
30
+
31
+ end # namespace :test
32
+
33
+ task :clobber => 'test:clobber_rcov' if HAVE_RCOV
34
+
35
+ # EOF
@@ -0,0 +1,38 @@
1
+ # $Id: website.rake 12 2007-08-23 16:43:11Z tim_pease $
2
+
3
+ namespace :website do
4
+
5
+ desc 'Build the Logging website'
6
+ task :build do
7
+ begin
8
+ olddir = pwd
9
+ chdir 'website'
10
+ sh 'rake build'
11
+ cp_r 'output/.', olddir + '/doc'
12
+ ensure
13
+ chdir olddir
14
+ end
15
+ end
16
+
17
+ desc 'Remove the Logging website'
18
+ task :clobber do
19
+ rm_r 'doc' rescue nil
20
+ end
21
+
22
+ desc 'Publish the website to RubyForge'
23
+ task :release => %w(website:clobber doc:rdoc website:build) do
24
+ config = YAML.load(
25
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
26
+ )
27
+
28
+ host = "#{config['username']}@rubyforge.org"
29
+ remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge_name}/"
30
+
31
+ sh "rsync --delete -rulptzCF doc/ #{host}:#{remote_dir}"
32
+ end
33
+
34
+ end # namespace :website
35
+
36
+ task :clobber => 'website:clobber'
37
+
38
+ # EOF