logging 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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