directory_watcher 1.1.1 → 1.1.2

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/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 1.1.2 / 2008-12-14
2
+
3
+ * 1 minor bugfix
4
+ - fixed directory creation if the watched directory did not exist
5
+
1
6
  == 1.1.1 / 2008-01-01
2
7
 
3
8
  * 1 minor enhancement
data/Manifest.txt CHANGED
@@ -3,9 +3,3 @@ Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
5
  lib/directory_watcher.rb
6
- tasks/annotations.rake
7
- tasks/doc.rake
8
- tasks/gem.rake
9
- tasks/manifest.rake
10
- tasks/rubyforge.rake
11
- tasks/setup.rb
data/README.txt CHANGED
@@ -20,7 +20,12 @@ This is a pure ruby library. There are no requirements for using this code.
20
20
 
21
21
  == INSTALL:
22
22
 
23
- sudo gem install directory_watcher
23
+ sudo gem install directory_watcher
24
+
25
+ You will need have Mr Bones installed in order to develop or modify directory
26
+ watcher.
27
+
28
+ sudo gem install bones
24
29
 
25
30
  == LICENSE:
26
31
 
data/Rakefile CHANGED
@@ -1,6 +1,11 @@
1
- # $Id: Rakefile 442 2008-01-02 04:39:32Z tim_pease $
2
1
 
3
- load 'tasks/setup.rb'
2
+ begin
3
+ require 'bones'
4
+ Bones.setup
5
+ rescue LoadError
6
+ load 'tasks/setup.rb'
7
+ end
8
+
4
9
  ensure_in_path 'lib'
5
10
  require 'directory_watcher'
6
11
 
@@ -11,10 +16,10 @@ PROJ.summary = 'A class for watching files within a directory and generating eve
11
16
  PROJ.authors = 'Tim Pease'
12
17
  PROJ.email = 'tim.pease@gmail.com'
13
18
  PROJ.url = 'http://codeforpeople.rubyforge.org/directory_watcher'
14
- PROJ.description = paragraphs_of('README.txt', 1).join("\n\n")
15
- PROJ.changes = paragraphs_of('History.txt', 0..1).join("\n\n")
16
- PROJ.rubyforge_name = 'codeforpeople'
17
- PROJ.rdoc_remote_dir = 'directory_watcher'
18
19
  PROJ.version = DirectoryWatcher::VERSION
20
+ PROJ.rubyforge.name = 'codeforpeople'
21
+
22
+ PROJ.rdoc.remote_dir = 'directory_watcher'
23
+ PROJ.spec.opts << '--color'
19
24
 
20
25
  # EOF
@@ -150,7 +150,7 @@ require 'observer'
150
150
  #
151
151
  class DirectoryWatcher
152
152
 
153
- VERSION = '1.1.1' # :nodoc:
153
+ VERSION = '1.1.2' # :nodoc:
154
154
 
155
155
  # An +Event+ structure contains the _type_ of the event and the file _path_
156
156
  # to which the event pertains. The type can be one of the following:
@@ -199,7 +199,7 @@ class DirectoryWatcher
199
199
  raise ArgumentError, "'#{@dir}' is not a directory"
200
200
  end
201
201
  else
202
- Dir.create @dir
202
+ Dir.mkdir @dir
203
203
  end
204
204
 
205
205
  self.glob = opts[:glob] || '*'
data/tasks/ann.rake ADDED
@@ -0,0 +1,80 @@
1
+
2
+ begin
3
+ require 'bones/smtp_tls'
4
+ rescue LoadError
5
+ require 'net/smtp'
6
+ end
7
+ require 'time'
8
+
9
+ namespace :ann do
10
+
11
+ # A prerequisites task that all other tasks depend upon
12
+ task :prereqs
13
+
14
+ file PROJ.ann.file do
15
+ ann = PROJ.ann
16
+ puts "Generating #{ann.file}"
17
+ File.open(ann.file,'w') do |fd|
18
+ fd.puts("#{PROJ.name} version #{PROJ.version}")
19
+ fd.puts(" by #{Array(PROJ.authors).first}") if PROJ.authors
20
+ fd.puts(" #{PROJ.url}") if PROJ.url.valid?
21
+ fd.puts(" (the \"#{PROJ.release_name}\" release)") if PROJ.release_name
22
+ fd.puts
23
+ fd.puts("== DESCRIPTION")
24
+ fd.puts
25
+ fd.puts(PROJ.description)
26
+ fd.puts
27
+ fd.puts(PROJ.changes.sub(%r/^.*$/, '== CHANGES'))
28
+ fd.puts
29
+ ann.paragraphs.each do |p|
30
+ fd.puts "== #{p.upcase}"
31
+ fd.puts
32
+ fd.puts paragraphs_of(PROJ.readme_file, p).join("\n\n")
33
+ fd.puts
34
+ end
35
+ fd.puts ann.text if ann.text
36
+ end
37
+ end
38
+
39
+ desc "Create an announcement file"
40
+ task :announcement => ['ann:prereqs', PROJ.ann.file]
41
+
42
+ desc "Send an email announcement"
43
+ task :email => ['ann:prereqs', PROJ.ann.file] do
44
+ ann = PROJ.ann
45
+ from = ann.email[:from] || Array(PROJ.authors).first || PROJ.email
46
+ to = Array(ann.email[:to])
47
+
48
+ ### build a mail header for RFC 822
49
+ rfc822msg = "From: #{from}\n"
50
+ rfc822msg << "To: #{to.join(',')}\n"
51
+ rfc822msg << "Subject: [ANN] #{PROJ.name} #{PROJ.version}"
52
+ rfc822msg << " (#{PROJ.release_name})" if PROJ.release_name
53
+ rfc822msg << "\n"
54
+ rfc822msg << "Date: #{Time.new.rfc822}\n"
55
+ rfc822msg << "Message-Id: "
56
+ rfc822msg << "<#{"%.8f" % Time.now.to_f}@#{ann.email[:domain]}>\n\n"
57
+ rfc822msg << File.read(ann.file)
58
+
59
+ params = [:server, :port, :domain, :acct, :passwd, :authtype].map do |key|
60
+ ann.email[key]
61
+ end
62
+
63
+ params[3] = PROJ.email if params[3].nil?
64
+
65
+ if params[4].nil?
66
+ STDOUT.write "Please enter your e-mail password (#{params[3]}): "
67
+ params[4] = STDIN.gets.chomp
68
+ end
69
+
70
+ ### send email
71
+ Net::SMTP.start(*params) {|smtp| smtp.sendmail(rfc822msg, from, to)}
72
+ end
73
+ end # namespace :ann
74
+
75
+ desc 'Alias to ann:announcement'
76
+ task :ann => 'ann:announcement'
77
+
78
+ CLOBBER << PROJ.ann.file
79
+
80
+ # EOF
data/tasks/bones.rake ADDED
@@ -0,0 +1,20 @@
1
+
2
+ if HAVE_BONES
3
+
4
+ namespace :bones do
5
+
6
+ desc 'Show the PROJ open struct'
7
+ task :debug do |t|
8
+ atr = if t.application.top_level_tasks.length == 2
9
+ t.application.top_level_tasks.pop
10
+ end
11
+
12
+ if atr then Bones::Debug.show_attr(PROJ, atr)
13
+ else Bones::Debug.show PROJ end
14
+ end
15
+
16
+ end # namespace :bones
17
+
18
+ end # HAVE_BONES
19
+
20
+ # EOF
data/tasks/gem.rake CHANGED
@@ -1,89 +1,192 @@
1
- # $Id: gem.rake 441 2008-01-02 04:25:01Z tim_pease $
2
1
 
3
- require 'rake/gempackagetask'
2
+ require 'find'
3
+ require 'rake/packagetask'
4
+ require 'rubygems/user_interaction'
5
+ require 'rubygems/builder'
6
+
7
+ module Bones
8
+ class GemPackageTask < Rake::PackageTask
9
+ # Ruby GEM spec containing the metadata for this package. The
10
+ # name, version and package_files are automatically determined
11
+ # from the GEM spec and don't need to be explicitly provided.
12
+ #
13
+ attr_accessor :gem_spec
14
+
15
+ # Tasks from the Bones gem directory
16
+ attr_reader :bones_files
17
+
18
+ # Create a GEM Package task library. Automatically define the gem
19
+ # if a block is given. If no block is supplied, then +define+
20
+ # needs to be called to define the task.
21
+ #
22
+ def initialize(gem_spec)
23
+ init(gem_spec)
24
+ yield self if block_given?
25
+ define if block_given?
26
+ end
27
+
28
+ # Initialization tasks without the "yield self" or define
29
+ # operations.
30
+ #
31
+ def init(gem)
32
+ super(gem.name, gem.version)
33
+ @gem_spec = gem
34
+ @package_files += gem_spec.files if gem_spec.files
35
+ @bones_files = []
36
+
37
+ local_setup = File.join(Dir.pwd, %w[tasks setup.rb])
38
+ if !test(?e, local_setup)
39
+ Dir.glob(::Bones.path(%w[lib bones tasks *])).each {|fn| bones_files << fn}
40
+ gem_spec.files = (gem_spec.files +
41
+ bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
42
+ end
43
+ end
44
+
45
+ # Create the Rake tasks and actions specified by this
46
+ # GemPackageTask. (+define+ is automatically called if a block is
47
+ # given to +new+).
48
+ #
49
+ def define
50
+ super
51
+ task :prereqs
52
+ task :package => ['gem:prereqs', "#{package_dir_path}/#{gem_file}"]
53
+ file "#{package_dir_path}/#{gem_file}" => [package_dir_path] + package_files + bones_files do
54
+ when_writing("Creating GEM") {
55
+ chdir(package_dir_path) do
56
+ Gem::Builder.new(gem_spec).build
57
+ verbose(true) {
58
+ mv gem_file, "../#{gem_file}"
59
+ }
60
+ end
61
+ }
62
+ end
63
+
64
+ file package_dir_path => bones_files do
65
+ mkdir_p package_dir rescue nil
66
+ bones_files.each do |fn|
67
+ base_fn = File.join('tasks', File.basename(fn))
68
+ f = File.join(package_dir_path, base_fn)
69
+ fdir = File.dirname(f)
70
+ mkdir_p(fdir) if !File.exist?(fdir)
71
+ if File.directory?(fn)
72
+ mkdir_p(f)
73
+ else
74
+ raise "file name conflict for '#{base_fn}' (conflicts with '#{fn}')" if test(?e, f)
75
+ safe_ln(fn, f)
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ def gem_file
82
+ if @gem_spec.platform == Gem::Platform::RUBY
83
+ "#{package_name}.gem"
84
+ else
85
+ "#{package_name}-#{@gem_spec.platform}.gem"
86
+ end
87
+ end
88
+ end # class GemPackageTask
89
+ end # module Bones
4
90
 
5
91
  namespace :gem do
6
92
 
7
- PROJ.spec = Gem::Specification.new do |s|
93
+ PROJ.gem._spec = Gem::Specification.new do |s|
8
94
  s.name = PROJ.name
9
95
  s.version = PROJ.version
10
96
  s.summary = PROJ.summary
11
97
  s.authors = Array(PROJ.authors)
12
98
  s.email = PROJ.email
13
99
  s.homepage = Array(PROJ.url).first
14
- s.rubyforge_project = PROJ.rubyforge_name
100
+ s.rubyforge_project = PROJ.rubyforge.name
15
101
 
16
102
  s.description = PROJ.description
17
103
 
18
- PROJ.dependencies.each do |dep|
104
+ PROJ.gem.dependencies.each do |dep|
19
105
  s.add_dependency(*dep)
20
106
  end
21
107
 
22
- s.files = PROJ.files
23
- s.executables = PROJ.executables.map {|fn| File.basename(fn)}
24
- s.extensions = PROJ.files.grep %r/extconf\.rb$/
108
+ PROJ.gem.development_dependencies.each do |dep|
109
+ s.add_development_dependency(*dep)
110
+ end
111
+
112
+ s.files = PROJ.gem.files
113
+ s.executables = PROJ.gem.executables.map {|fn| File.basename(fn)}
114
+ s.extensions = PROJ.gem.files.grep %r/extconf\.rb$/
25
115
 
26
116
  s.bindir = 'bin'
27
117
  dirs = Dir["{#{PROJ.libs.join(',')}}"]
28
118
  s.require_paths = dirs unless dirs.empty?
29
119
 
30
- incl = Regexp.new(PROJ.rdoc_include.join('|'))
31
- excl = PROJ.rdoc_exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
120
+ incl = Regexp.new(PROJ.rdoc.include.join('|'))
121
+ excl = PROJ.rdoc.exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
32
122
  excl = Regexp.new(excl.join('|'))
33
- rdoc_files = PROJ.files.find_all do |fn|
123
+ rdoc_files = PROJ.gem.files.find_all do |fn|
34
124
  case fn
35
125
  when excl; false
36
126
  when incl; true
37
127
  else false end
38
128
  end
39
- s.rdoc_options = PROJ.rdoc_opts + ['--main', PROJ.rdoc_main]
129
+ s.rdoc_options = PROJ.rdoc.opts + ['--main', PROJ.rdoc.main]
40
130
  s.extra_rdoc_files = rdoc_files
41
131
  s.has_rdoc = true
42
132
 
43
- if test ?f, PROJ.test_file
44
- s.test_file = PROJ.test_file
133
+ if test ?f, PROJ.test.file
134
+ s.test_file = PROJ.test.file
45
135
  else
46
- s.test_files = PROJ.tests.to_a
136
+ s.test_files = PROJ.test.files.to_a
47
137
  end
48
138
 
49
139
  # Do any extra stuff the user wants
50
- # spec_extras.each do |msg, val|
51
- # case val
52
- # when Proc
53
- # val.call(s.send(msg))
54
- # else
55
- # s.send "#{msg}=", val
56
- # end
57
- # end
58
- end
140
+ PROJ.gem.extras.each do |msg, val|
141
+ case val
142
+ when Proc
143
+ val.call(s.send(msg))
144
+ else
145
+ s.send "#{msg}=", val
146
+ end
147
+ end
148
+ end # Gem::Specification.new
59
149
 
60
- desc 'Show information about the gem'
61
- task :debug do
62
- puts PROJ.spec.to_ruby
150
+ Bones::GemPackageTask.new(PROJ.gem._spec) do |pkg|
151
+ pkg.need_tar = PROJ.gem.need_tar
152
+ pkg.need_zip = PROJ.gem.need_zip
63
153
  end
64
154
 
65
- Rake::GemPackageTask.new(PROJ.spec) do |pkg|
66
- pkg.need_tar = PROJ.need_tar
67
- pkg.need_zip = PROJ.need_zip
155
+ desc 'Show information about the gem'
156
+ task :debug => 'gem:prereqs' do
157
+ puts PROJ.gem._spec.to_ruby
68
158
  end
69
159
 
70
160
  desc 'Install the gem'
71
- task :install => [:clobber, :package] do
72
- sh "#{SUDO} #{GEM} install pkg/#{PROJ.spec.file_name}"
161
+ task :install => [:clobber, 'gem:package'] do
162
+ sh "#{SUDO} #{GEM} install --local pkg/#{PROJ.gem._spec.full_name}"
163
+
164
+ # use this version of the command for rubygems > 1.0.0
165
+ #sh "#{SUDO} #{GEM} install --no-update-sources pkg/#{PROJ.gem._spec.full_name}"
73
166
  end
74
167
 
75
168
  desc 'Uninstall the gem'
76
169
  task :uninstall do
77
- sh "#{SUDO} #{GEM} uninstall -v '#{PROJ.version}' #{PROJ.name}"
170
+ installed_list = Gem.source_index.find_name(PROJ.name)
171
+ if installed_list and installed_list.collect { |s| s.version.to_s}.include?(PROJ.version) then
172
+ sh "#{SUDO} #{GEM} uninstall --version '#{PROJ.version}' --ignore-dependencies --executables #{PROJ.name}"
173
+ end
78
174
  end
79
175
 
176
+ desc 'Reinstall the gem'
177
+ task :reinstall => [:uninstall, :install]
178
+
179
+ desc 'Cleanup the gem'
180
+ task :cleanup do
181
+ sh "#{SUDO} #{GEM} cleanup #{PROJ.gem._spec.name}"
182
+ end
80
183
  end # namespace :gem
81
184
 
185
+
82
186
  desc 'Alias to gem:package'
83
187
  task :gem => 'gem:package'
84
188
 
85
189
  task :clobber => 'gem:clobber_package'
86
-
87
- remove_desc_for_task %w(gem:clobber_package)
190
+ remove_desc_for_task 'gem:clobber_package'
88
191
 
89
192
  # EOF
data/tasks/git.rake ADDED
@@ -0,0 +1,40 @@
1
+
2
+ if HAVE_GIT
3
+
4
+ namespace :git do
5
+
6
+ # A prerequisites task that all other tasks depend upon
7
+ task :prereqs
8
+
9
+ desc 'Show tags from the Git repository'
10
+ task :show_tags => 'git:prereqs' do |t|
11
+ puts %x/git tag/
12
+ end
13
+
14
+ desc 'Create a new tag in the Git repository'
15
+ task :create_tag => 'git:prereqs' do |t|
16
+ v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
17
+ abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
18
+
19
+ tag = "%s-%s" % [PROJ.name, PROJ.version]
20
+ msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
21
+
22
+ puts "Creating Git tag '#{tag}'"
23
+ unless system "git tag -a -m '#{msg}' #{tag}"
24
+ abort "Tag creation failed"
25
+ end
26
+
27
+ if %x/git remote/ =~ %r/^origin\s*$/
28
+ unless system "git push origin #{tag}"
29
+ abort "Could not push tag to remote Git repository"
30
+ end
31
+ end
32
+ end
33
+
34
+ end # namespace :git
35
+
36
+ task 'gem:release' => 'git:create_tag'
37
+
38
+ end # if HAVE_GIT
39
+
40
+ # EOF
data/tasks/manifest.rake CHANGED
@@ -1,4 +1,3 @@
1
- # $Id: manifest.rake 441 2008-01-02 04:25:01Z tim_pease $
2
1
 
3
2
  require 'find'
4
3
 
@@ -6,36 +5,44 @@ namespace :manifest do
6
5
 
7
6
  desc 'Verify the manifest'
8
7
  task :check do
9
- fn = 'Manifest.tmp'
10
- files = []
11
- exclude = Regexp.new(PROJ.exclude.join('|'))
12
- Find.find '.' do |path|
13
- path.sub! %r/^(\.\/|\/)/o, ''
14
- next unless test ?f, path
15
- next if path =~ exclude
16
- files << path
17
- end
8
+ fn = PROJ.manifest_file + '.tmp'
9
+ files = manifest_files
18
10
 
19
- File.open(fn, 'w') {|fp| fp.puts files.sort}
20
- system "#{DIFF} -du Manifest.txt #{fn}"
11
+ File.open(fn, 'w') {|fp| fp.puts files}
12
+ lines = %x(#{DIFF} -du #{PROJ.manifest_file} #{fn}).split("\n")
13
+ if HAVE_FACETS_ANSICODE and ENV.has_key?('TERM')
14
+ lines.map! do |line|
15
+ case line
16
+ when %r/^(-{3}|\+{3})/; nil
17
+ when %r/^@/; ANSICode.blue line
18
+ when %r/^\+/; ANSICode.green line
19
+ when %r/^\-/; ANSICode.red line
20
+ else line end
21
+ end
22
+ end
23
+ puts lines.compact
21
24
  rm fn rescue nil
22
25
  end
23
26
 
24
27
  desc 'Create a new manifest'
25
28
  task :create do
26
- fn = 'Manifest.txt'
27
- files = []
28
- exclude = Regexp.new(PROJ.exclude.join('|'))
29
- Find.find '.' do |path|
30
- path.sub! %r/^(\.\/|\/)/o, ''
31
- next unless test ?f, path
32
- next if path =~ exclude
33
- files << path
29
+ files = manifest_files
30
+ unless test(?f, PROJ.manifest_file)
31
+ files << PROJ.manifest_file
32
+ files.sort!
34
33
  end
34
+ File.open(PROJ.manifest_file, 'w') {|fp| fp.puts files}
35
+ end
35
36
 
36
- files << fn unless test ?f, fn
37
- File.open(fn, 'w') {|fp| fp.puts files.sort}
37
+ task :assert do
38
+ files = manifest_files
39
+ manifest = File.read(PROJ.manifest_file).split($/)
40
+ raise "ERROR: #{PROJ.manifest_file} is out of date" unless files == manifest
38
41
  end
39
- end
42
+
43
+ end # namespace :manifest
44
+
45
+ desc 'Alias to manifest:check'
46
+ task :manifest => 'manifest:check'
40
47
 
41
48
  # EOF
data/tasks/notes.rake ADDED
@@ -0,0 +1,27 @@
1
+
2
+ if HAVE_BONES
3
+
4
+ desc "Enumerate all annotations"
5
+ task :notes do |t|
6
+ id = if t.application.top_level_tasks.length > 1
7
+ t.application.top_level_tasks.slice!(1..-1).join(' ')
8
+ end
9
+ Bones::AnnotationExtractor.enumerate(
10
+ PROJ, PROJ.notes.tags.join('|'), id, :tag => true)
11
+ end
12
+
13
+ namespace :notes do
14
+ PROJ.notes.tags.each do |tag|
15
+ desc "Enumerate all #{tag} annotations"
16
+ task tag.downcase.to_sym do |t|
17
+ id = if t.application.top_level_tasks.length > 1
18
+ t.application.top_level_tasks.slice!(1..-1).join(' ')
19
+ end
20
+ Bones::AnnotationExtractor.enumerate(PROJ, tag, id)
21
+ end
22
+ end
23
+ end
24
+
25
+ end # if HAVE_BONES
26
+
27
+ # EOF
@@ -0,0 +1,39 @@
1
+
2
+ # This file does not define any rake tasks. It is used to load some project
3
+ # settings if they are not defined by the user.
4
+
5
+ PROJ.rdoc.exclude << "^#{Regexp.escape(PROJ.manifest_file)}$"
6
+ PROJ.exclude << ["^#{Regexp.escape(PROJ.ann.file)}$",
7
+ "^#{Regexp.escape(PROJ.rdoc.dir)}/",
8
+ "^#{Regexp.escape(PROJ.rcov.dir)}/"]
9
+
10
+ flatten_arrays = lambda do |this,os|
11
+ os.instance_variable_get(:@table).each do |key,val|
12
+ next if key == :dependencies \
13
+ or key == :development_dependencies
14
+ case val
15
+ when Array; val.flatten!
16
+ when OpenStruct; this.call(this,val)
17
+ end
18
+ end
19
+ end
20
+ flatten_arrays.call(flatten_arrays,PROJ)
21
+
22
+ PROJ.changes ||= paragraphs_of(PROJ.history_file, 0..1).join("\n\n")
23
+
24
+ PROJ.description ||= paragraphs_of(PROJ.readme_file, 'description').join("\n\n")
25
+
26
+ PROJ.summary ||= PROJ.description.split('.').first
27
+
28
+ PROJ.gem.files ||=
29
+ if test(?f, PROJ.manifest_file)
30
+ files = File.readlines(PROJ.manifest_file).map {|fn| fn.chomp.strip}
31
+ files.delete ''
32
+ files
33
+ else [] end
34
+
35
+ PROJ.gem.executables ||= PROJ.gem.files.find_all {|fn| fn =~ %r/^bin/}
36
+
37
+ PROJ.rdoc.main ||= PROJ.readme_file
38
+
39
+ # EOF
@@ -1,4 +1,3 @@
1
- # $Id: doc.rake 441 2008-01-02 04:25:01Z tim_pease $
2
1
 
3
2
  require 'rake/rdoctask'
4
3
 
@@ -6,13 +5,13 @@ namespace :doc do
6
5
 
7
6
  desc 'Generate RDoc documentation'
8
7
  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
8
+ rdoc = PROJ.rdoc
9
+ rd.main = rdoc.main
10
+ rd.rdoc_dir = rdoc.dir
12
11
 
13
- incl = Regexp.new(PROJ.rdoc_include.join('|'))
14
- excl = Regexp.new(PROJ.rdoc_exclude.join('|'))
15
- files = PROJ.files.find_all do |fn|
12
+ incl = Regexp.new(rdoc.include.join('|'))
13
+ excl = Regexp.new(rdoc.exclude.join('|'))
14
+ files = PROJ.gem.files.find_all do |fn|
16
15
  case fn
17
16
  when excl; false
18
17
  when incl; true
@@ -21,9 +20,12 @@ namespace :doc do
21
20
  rd.rdoc_files.push(*files)
22
21
 
23
22
  title = "#{PROJ.name}-#{PROJ.version} Documentation"
24
- title = "#{PROJ.rubyforge_name}'s " + title if PROJ.rubyforge_name != title
23
+
24
+ rf_name = PROJ.rubyforge.name
25
+ title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != title
25
26
 
26
27
  rd.options << "-t #{title}"
28
+ rd.options.concat(rdoc.opts)
27
29
  end
28
30
 
29
31
  desc 'Generate ri locally for testing'
@@ -31,7 +33,6 @@ namespace :doc do
31
33
  sh "#{RDOC} --ri -o ri ."
32
34
  end
33
35
 
34
- desc 'Remove ri products'
35
36
  task :clobber_ri do
36
37
  rm_r 'ri' rescue nil
37
38
  end
@@ -44,6 +45,6 @@ task :doc => 'doc:rdoc'
44
45
  desc 'Remove all build products'
45
46
  task :clobber => %w(doc:clobber_rdoc doc:clobber_ri)
46
47
 
47
- remove_desc_for_task %w(doc:clobber_rdoc doc:clobber_ri)
48
+ remove_desc_for_task %w(doc:clobber_rdoc)
48
49
 
49
50
  # EOF
data/tasks/rubyforge.rake CHANGED
@@ -1,23 +1,23 @@
1
- # $Id: rubyforge.rake 441 2008-01-02 04:25:01Z tim_pease $
2
1
 
3
- if PROJ.rubyforge_name && HAVE_RUBYFORGE
2
+ if PROJ.rubyforge.name.valid? && HAVE_RUBYFORGE
4
3
 
5
4
  require 'rubyforge'
6
5
  require 'rake/contrib/sshpublisher'
7
6
 
8
7
  namespace :gem do
9
8
  desc 'Package and upload to RubyForge'
10
- task :release => [:clobber, :package] do |t|
9
+ task :release => [:clobber, 'gem'] do |t|
11
10
  v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
12
11
  abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
13
- pkg = "pkg/#{PROJ.spec.full_name}"
12
+ pkg = "pkg/#{PROJ.gem._spec.full_name}"
14
13
 
15
14
  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\""
15
+ puts "release_id = rf.add_release #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
16
+ puts "rf.add_file #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
18
17
  end
19
18
 
20
19
  rf = RubyForge.new
20
+ rf.configure rescue nil
21
21
  puts 'Logging in'
22
22
  rf.login
23
23
 
@@ -26,12 +26,10 @@ namespace :gem do
26
26
  c['release_changes'] = PROJ.changes if PROJ.changes
27
27
  c['preformatted'] = true
28
28
 
29
- files = [(PROJ.need_tar ? "#{pkg}.tgz" : nil),
30
- (PROJ.need_zip ? "#{pkg}.zip" : nil),
31
- "#{pkg}.gem"].compact
29
+ files = Dir.glob("#{pkg}*.*")
32
30
 
33
31
  puts "Releasing #{PROJ.name} v. #{PROJ.version}"
34
- rf.add_release PROJ.rubyforge_name, PROJ.name, PROJ.version, *files
32
+ rf.add_release PROJ.rubyforge.name, PROJ.name, PROJ.version, *files
35
33
  end
36
34
  end # namespace :gem
37
35
 
@@ -44,9 +42,9 @@ namespace :doc do
44
42
  )
45
43
 
46
44
  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
45
+ remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge.name}/"
46
+ remote_dir << PROJ.rdoc.remote_dir if PROJ.rdoc.remote_dir
47
+ local_dir = PROJ.rdoc.dir
50
48
 
51
49
  Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
52
50
  end
data/tasks/setup.rb CHANGED
@@ -1,70 +1,129 @@
1
- # $Id: setup.rb 441 2008-01-02 04:25:01Z tim_pease $
2
1
 
3
2
  require 'rubygems'
4
3
  require 'rake'
4
+ require 'rake/clean'
5
5
  require 'fileutils'
6
6
  require 'ostruct'
7
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 ^pkg ^doc)
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}
8
+ class OpenStruct; undef :gem; end
9
+
10
+ # TODO: make my own openstruct type object that includes descriptions
11
+ # TODO: use the descriptions to output help on the available bones options
12
+
13
+ PROJ = OpenStruct.new(
14
+ # Project Defaults
15
+ :name => nil,
16
+ :summary => nil,
17
+ :description => nil,
18
+ :changes => nil,
19
+ :authors => nil,
20
+ :email => nil,
21
+ :url => "\000",
22
+ :version => ENV['VERSION'] || '0.0.0',
23
+ :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
24
+ :release_name => ENV['RELEASE'],
25
+
26
+ # System Defaults
27
+ :ruby_opts => %w(-w),
28
+ :libs => [],
29
+ :history_file => 'History.txt',
30
+ :manifest_file => 'Manifest.txt',
31
+ :readme_file => 'README.txt',
32
+
33
+ # Announce
34
+ :ann => OpenStruct.new(
35
+ :file => 'announcement.txt',
36
+ :text => nil,
37
+ :paragraphs => [],
38
+ :email => {
39
+ :from => nil,
40
+ :to => %w(ruby-talk@ruby-lang.org),
41
+ :server => 'localhost',
42
+ :port => 25,
43
+ :domain => ENV['HOSTNAME'],
44
+ :acct => nil,
45
+ :passwd => nil,
46
+ :authtype => :plain
47
+ }
48
+ ),
49
+
50
+ # Gem Packaging
51
+ :gem => OpenStruct.new(
52
+ :dependencies => [],
53
+ :development_dependencies => [],
54
+ :executables => nil,
55
+ :extensions => FileList['ext/**/extconf.rb'],
56
+ :files => nil,
57
+ :need_tar => true,
58
+ :need_zip => false,
59
+ :extras => {}
60
+ ),
61
+
62
+ # File Annotations
63
+ :notes => OpenStruct.new(
64
+ :exclude => %w(^tasks/setup\.rb$),
65
+ :extensions => %w(.txt .rb .erb .rdoc) << '',
66
+ :tags => %w(FIXME OPTIMIZE TODO)
67
+ ),
68
+
69
+ # Rcov
70
+ :rcov => OpenStruct.new(
71
+ :dir => 'coverage',
72
+ :opts => %w[--sort coverage -T],
73
+ :threshold => 90.0,
74
+ :threshold_exact => false
75
+ ),
76
+
77
+ # Rdoc
78
+ :rdoc => OpenStruct.new(
79
+ :opts => [],
80
+ :include => %w(^lib/ ^bin/ ^ext/ \.txt$ \.rdoc$),
81
+ :exclude => %w(extconf\.rb$),
82
+ :main => nil,
83
+ :dir => 'doc',
84
+ :remote_dir => nil
85
+ ),
46
86
 
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
- # File Annotations
60
- PROJ.annotation_exclude = []
61
- PROJ.annotation_extensions = %w(.txt .rb .erb) << ''
87
+ # Rubyforge
88
+ :rubyforge => OpenStruct.new(
89
+ :name => "\000"
90
+ ),
91
+
92
+ # Rspec
93
+ :spec => OpenStruct.new(
94
+ :files => FileList['spec/**/*_spec.rb'],
95
+ :opts => []
96
+ ),
97
+
98
+ # Subversion Repository
99
+ :svn => OpenStruct.new(
100
+ :root => nil,
101
+ :path => '',
102
+ :trunk => 'trunk',
103
+ :tags => 'tags',
104
+ :branches => 'branches'
105
+ ),
106
+
107
+ # Test::Unit
108
+ :test => OpenStruct.new(
109
+ :files => FileList['test/**/test_*.rb'],
110
+ :file => 'test/all.rb',
111
+ :opts => []
112
+ )
113
+ )
62
114
 
63
115
  # Load the other rake files in the tasks folder
64
- Dir.glob('tasks/*.rake').sort.each {|fn| import fn}
116
+ tasks_dir = File.expand_path(File.dirname(__FILE__))
117
+ post_load_fn = File.join(tasks_dir, 'post_load.rake')
118
+ rakefiles = Dir.glob(File.join(tasks_dir, '*.rake')).sort
119
+ rakefiles.unshift(rakefiles.delete(post_load_fn)).compact!
120
+ import(*rakefiles)
121
+
122
+ # Setup the project libraries
123
+ %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
65
124
 
66
125
  # Setup some constants
67
- WIN32 = %r/win32/ =~ RUBY_PLATFORM unless defined? WIN32
126
+ WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
68
127
 
69
128
  DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
70
129
 
@@ -76,6 +135,7 @@ def quiet( &block )
76
135
  ensure
77
136
  STDOUT.reopen io.first
78
137
  STDERR.reopen io.last
138
+ $stdout, $stderr = STDOUT, STDERR
79
139
  end
80
140
 
81
141
  DIFF = if WIN32 then 'diff.exe'
@@ -90,10 +150,11 @@ SUDO = if WIN32 then ''
90
150
  else '' end
91
151
  end
92
152
 
93
- RCOV = WIN32 ? 'rcov.cmd' : 'rcov'
94
- GEM = WIN32 ? 'gem.cmd' : 'gem'
153
+ RCOV = WIN32 ? 'rcov.bat' : 'rcov'
154
+ RDOC = WIN32 ? 'rdoc.bat' : 'rdoc'
155
+ GEM = WIN32 ? 'gem.bat' : 'gem'
95
156
 
96
- %w(rcov spec/rake/spectask rubyforge bones).each do |lib|
157
+ %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
97
158
  begin
98
159
  require lib
99
160
  Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
@@ -101,6 +162,16 @@ GEM = WIN32 ? 'gem.cmd' : 'gem'
101
162
  Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
102
163
  end
103
164
  end
165
+ HAVE_SVN = (Dir.entries(Dir.pwd).include?('.svn') and
166
+ system("svn --version 2>&1 > #{DEV_NULL}"))
167
+ HAVE_GIT = (Dir.entries(Dir.pwd).include?('.git') and
168
+ system("git --version 2>&1 > #{DEV_NULL}"))
169
+
170
+ # Add bones as a development dependency
171
+ #
172
+ if HAVE_BONES
173
+ PROJ.gem.development_dependencies << ['bones', ">= #{Bones::VERSION}"]
174
+ end
104
175
 
105
176
  # Reads a file at +path+ and spits out an array of the +paragraphs+
106
177
  # specified.
@@ -108,8 +179,28 @@ end
108
179
  # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
109
180
  # summary, *description = paragraphs_of('README.txt', 3, 3..8)
110
181
  #
111
- def paragraphs_of(path, *paragraphs)
112
- File.read(path).delete("\r").split(/\n\n+/).values_at(*paragraphs)
182
+ def paragraphs_of( path, *paragraphs )
183
+ title = String === paragraphs.first ? paragraphs.shift : nil
184
+ ary = File.read(path).delete("\r").split(/\n\n+/)
185
+
186
+ result = if title
187
+ tmp, matching = [], false
188
+ rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
189
+ paragraphs << (0..-1) if paragraphs.empty?
190
+
191
+ ary.each do |val|
192
+ if val =~ rgxp
193
+ break if matching
194
+ matching = true
195
+ rgxp = %r/^=+/i
196
+ elsif matching
197
+ tmp << val
198
+ end
199
+ end
200
+ tmp
201
+ else ary end
202
+
203
+ result.values_at(*paragraphs)
113
204
  end
114
205
 
115
206
  # Adds the given gem _name_ to the current project's dependency list. An
@@ -120,14 +211,19 @@ def depend_on( name, version = nil )
120
211
  spec = Gem.source_index.find_name(name).last
121
212
  version = spec.version.to_s if version.nil? and !spec.nil?
122
213
 
123
- PROJ.dependencies << (version.nil? ? [name] : [name, ">= #{version}"])
214
+ PROJ.gem.dependencies << case version
215
+ when nil; [name]
216
+ when %r/^\d/; [name, ">= #{version}"]
217
+ else [name, version] end
124
218
  end
125
219
 
126
- # Adds the given _path_ to the include path if it is not already there
220
+ # Adds the given arguments to the include path if they are not already there
127
221
  #
128
- def ensure_in_path( path )
129
- path = File.expand_path(path)
130
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
222
+ def ensure_in_path( *args )
223
+ args.each do |path|
224
+ path = File.expand_path(path)
225
+ $:.unshift(path) if test(?d, path) and not $:.include?(path)
226
+ end
131
227
  end
132
228
 
133
229
  # Find a rake task using the task name and remove any description text. This
@@ -141,4 +237,43 @@ def remove_desc_for_task( names )
141
237
  end
142
238
  end
143
239
 
240
+ # Change working directories to _dir_, call the _block_ of code, and then
241
+ # change back to the original working directory (the current directory when
242
+ # this method was called).
243
+ #
244
+ def in_directory( dir, &block )
245
+ curdir = pwd
246
+ begin
247
+ cd dir
248
+ return block.call
249
+ ensure
250
+ cd curdir
251
+ end
252
+ end
253
+
254
+ # Scans the current working directory and creates a list of files that are
255
+ # candidates to be in the manifest.
256
+ #
257
+ def manifest_files
258
+ files = []
259
+ exclude = Regexp.new(PROJ.exclude.join('|'))
260
+ Find.find '.' do |path|
261
+ path.sub! %r/^(\.\/|\/)/o, ''
262
+ next unless test ?f, path
263
+ next if path =~ exclude
264
+ files << path
265
+ end
266
+ files.sort!
267
+ end
268
+
269
+ # We need a "valid" method thtat determines if a string is suitable for use
270
+ # in the gem specification.
271
+ #
272
+ class Object
273
+ def valid?
274
+ return !(self.empty? or self == "\000") if self.respond_to?(:to_str)
275
+ return false
276
+ end
277
+ end
278
+
144
279
  # EOF
data/tasks/spec.rake ADDED
@@ -0,0 +1,54 @@
1
+
2
+ if HAVE_SPEC_RAKE_SPECTASK and not PROJ.spec.files.to_a.empty?
3
+ require 'spec/rake/verify_rcov'
4
+
5
+ namespace :spec do
6
+
7
+ desc 'Run all specs with basic output'
8
+ Spec::Rake::SpecTask.new(:run) do |t|
9
+ t.ruby_opts = PROJ.ruby_opts
10
+ t.spec_opts = PROJ.spec.opts
11
+ t.spec_files = PROJ.spec.files
12
+ t.libs += PROJ.libs
13
+ end
14
+
15
+ desc 'Run all specs with text output'
16
+ Spec::Rake::SpecTask.new(:specdoc) do |t|
17
+ t.ruby_opts = PROJ.ruby_opts
18
+ t.spec_opts = PROJ.spec.opts + ['--format', 'specdoc']
19
+ t.spec_files = PROJ.spec.files
20
+ t.libs += PROJ.libs
21
+ end
22
+
23
+ if HAVE_RCOV
24
+ desc 'Run all specs with RCov'
25
+ Spec::Rake::SpecTask.new(:rcov) do |t|
26
+ t.ruby_opts = PROJ.ruby_opts
27
+ t.spec_opts = PROJ.spec.opts
28
+ t.spec_files = PROJ.spec.files
29
+ t.libs += PROJ.libs
30
+ t.rcov = true
31
+ t.rcov_dir = PROJ.rcov.dir
32
+ t.rcov_opts = PROJ.rcov.opts + ['--exclude', 'spec']
33
+ end
34
+
35
+ RCov::VerifyTask.new(:verify) do |t|
36
+ t.threshold = PROJ.rcov.threshold
37
+ t.index_html = File.join(PROJ.rcov.dir, 'index.html')
38
+ t.require_exact_threshold = PROJ.rcov.threshold_exact
39
+ end
40
+
41
+ task :verify => :rcov
42
+ remove_desc_for_task %w(spec:clobber_rcov)
43
+ end
44
+
45
+ end # namespace :spec
46
+
47
+ desc 'Alias to spec:run'
48
+ task :spec => 'spec:run'
49
+
50
+ task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
51
+
52
+ end # if HAVE_SPEC_RAKE_SPECTASK
53
+
54
+ # EOF
data/tasks/svn.rake ADDED
@@ -0,0 +1,47 @@
1
+
2
+ if HAVE_SVN
3
+
4
+ unless PROJ.svn.root
5
+ info = %x/svn info ./
6
+ m = %r/^Repository Root:\s+(.*)$/.match(info)
7
+ PROJ.svn.root = (m.nil? ? '' : m[1])
8
+ end
9
+ PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty?
10
+
11
+ namespace :svn do
12
+
13
+ # A prerequisites task that all other tasks depend upon
14
+ task :prereqs
15
+
16
+ desc 'Show tags from the SVN repository'
17
+ task :show_tags => 'svn:prereqs' do |t|
18
+ tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/
19
+ tags.gsub!(%r/\/$/, '')
20
+ tags = tags.split("\n").sort {|a,b| b <=> a}
21
+ puts tags
22
+ end
23
+
24
+ desc 'Create a new tag in the SVN repository'
25
+ task :create_tag => 'svn:prereqs' do |t|
26
+ v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
27
+ abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
28
+
29
+ svn = PROJ.svn
30
+ trunk = File.join(svn.root, svn.trunk)
31
+ tag = "%s-%s" % [PROJ.name, PROJ.version]
32
+ tag = File.join(svn.root, svn.tags, tag)
33
+ msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
34
+
35
+ puts "Creating SVN tag '#{tag}'"
36
+ unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
37
+ abort "Tag creation failed"
38
+ end
39
+ end
40
+
41
+ end # namespace :svn
42
+
43
+ task 'gem:release' => 'svn:create_tag'
44
+
45
+ end # if PROJ.svn.path
46
+
47
+ # EOF
data/tasks/test.rake ADDED
@@ -0,0 +1,40 @@
1
+
2
+ if test(?e, PROJ.test.file) or not PROJ.test.files.to_a.empty?
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.test.files 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.dup << '-o' << PROJ.rcov.dir
19
+ opts = opts.join(' ')
20
+ files = if test(?f, PROJ.test.file) then [PROJ.test.file]
21
+ else PROJ.test.files end
22
+ files = files.join(' ')
23
+ sh "#{RCOV} #{files} #{opts}"
24
+ end
25
+
26
+ task :clobber_rcov do
27
+ rm_r 'coverage' rescue nil
28
+ end
29
+ end
30
+
31
+ end # namespace :test
32
+
33
+ desc 'Alias to test:run'
34
+ task :test => 'test:run'
35
+
36
+ task :clobber => 'test:clobber_rcov' if HAVE_RCOV
37
+
38
+ end
39
+
40
+ # EOF
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: directory_watcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pease
@@ -9,11 +9,20 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-01-01 00:00:00 -07:00
12
+ date: 2008-12-14 00:00:00 -07:00
13
13
  default_executable:
14
- dependencies: []
15
-
16
- description: "== DESCRIPTION: The directory watcher operates by scanning a directory at some interval and generating a list of files based on a user supplied glob pattern. As the file list changes from one interval to the next, events are generated and dispatched to registered observers. Three types of events are supported -- added, modified, and removed."
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bones
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.1.1
24
+ version:
25
+ description: ""
17
26
  email: tim.pease@gmail.com
18
27
  executables: []
19
28
 
@@ -28,12 +37,19 @@ files:
28
37
  - README.txt
29
38
  - Rakefile
30
39
  - lib/directory_watcher.rb
31
- - tasks/annotations.rake
32
- - tasks/doc.rake
40
+ - tasks/ann.rake
41
+ - tasks/bones.rake
33
42
  - tasks/gem.rake
43
+ - tasks/git.rake
34
44
  - tasks/manifest.rake
45
+ - tasks/notes.rake
46
+ - tasks/post_load.rake
47
+ - tasks/rdoc.rake
35
48
  - tasks/rubyforge.rake
36
49
  - tasks/setup.rb
50
+ - tasks/spec.rake
51
+ - tasks/svn.rake
52
+ - tasks/test.rake
37
53
  has_rdoc: true
38
54
  homepage: http://codeforpeople.rubyforge.org/directory_watcher
39
55
  post_install_message:
@@ -57,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
73
  requirements: []
58
74
 
59
75
  rubyforge_project: codeforpeople
60
- rubygems_version: 1.0.1
76
+ rubygems_version: 1.3.1
61
77
  signing_key:
62
78
  specification_version: 2
63
79
  summary: A class for watching files within a directory and generating events when those files change
@@ -1,30 +0,0 @@
1
- # $Id: annotations.rake 441 2008-01-02 04:25:01Z tim_pease $
2
-
3
- if HAVE_BONES
4
-
5
- desc "Enumerate all annotations"
6
- task :notes do
7
- Bones::AnnotationExtractor.enumerate(
8
- PROJ, "OPTIMIZE|FIXME|TODO", :tag => true)
9
- end
10
-
11
- namespace :notes do
12
- desc "Enumerate all OPTIMIZE annotations"
13
- task :optimize do
14
- Bones::AnnotationExtractor.enumerate(PROJ, "OPTIMIZE")
15
- end
16
-
17
- desc "Enumerate all FIXME annotations"
18
- task :fixme do
19
- Bones::AnnotationExtractor.enumerate(PROJ, "FIXME")
20
- end
21
-
22
- desc "Enumerate all TODO annotations"
23
- task :todo do
24
- Bones::AnnotationExtractor.enumerate(PROJ, "TODO")
25
- end
26
- end
27
-
28
- end # if HAVE_BONES
29
-
30
- # EOF