reap 9.2.1 → 9.3.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.
Files changed (62) hide show
  1. data/CHANGES +4 -0
  2. data/COPYING +675 -674
  3. data/MANIFEST +37 -44
  4. data/NOTES +4 -4
  5. data/Rakefile +1486 -0
  6. data/data/reap/base/COPYING +674 -674
  7. data/data/reap/base/README +23 -2
  8. data/data/reap/base/Rakefile +1486 -0
  9. data/data/reap/base/test/template.rb +16 -0
  10. data/data/reap/init/meta/project.yaml +19 -14
  11. data/lib/reap/default.yaml +57 -45
  12. data/lib/reap/extensions/file.rb +8 -0
  13. data/lib/reap/extensions/net/smtp_tls.rb +108 -0
  14. data/lib/reap/extensions.rb +2 -0
  15. data/lib/reap/metadata.rb +3 -2
  16. data/lib/reap/{manager → project}/announce.rb +3 -3
  17. data/lib/reap/{manager → project}/check.rb +1 -1
  18. data/lib/reap/{manager → project}/clean.rb +1 -1
  19. data/lib/reap/{manager → project}/gem.rb +5 -5
  20. data/lib/reap/{manager → project}/html.rb +25 -24
  21. data/lib/reap/{manager → project}/log.rb +19 -9
  22. data/lib/reap/{manager → project}/make.rb +29 -36
  23. data/lib/reap/{manager → project}/package.rb +4 -8
  24. data/lib/reap/{manager → project}/publish.rb +3 -3
  25. data/lib/reap/{manager → project}/rdoc.rb +13 -30
  26. data/lib/reap/{manager → project}/release.rb +5 -5
  27. data/lib/reap/{manager → project}/rubyforge.rb +7 -6
  28. data/lib/reap/{manager → project}/scaffold.rb +7 -2
  29. data/lib/reap/{manager → project}/scm.rb +3 -3
  30. data/lib/reap/{manager → project}/site.rb +1 -1
  31. data/lib/reap/{manager → project}/spec.rb +1 -1
  32. data/lib/reap/{manager → project}/stamp.rb +14 -11
  33. data/lib/reap/{manager → project}/stats.rb +1 -1
  34. data/lib/reap/{manager → project}/svn.rb +1 -1
  35. data/lib/reap/{manager → project}/test.rb +2 -20
  36. data/lib/reap/project.rb +34 -2
  37. data/lib/reap/systems/rubyforge.rb +5 -12
  38. data/lib/reap/systems/subversion.rb +4 -6
  39. data/lib/reap/{utilities/fileutils.rb → utilities.rb} +148 -60
  40. data/log/Changelog.txt +118 -0
  41. data/log/Fixme.txt +26 -0
  42. data/log/Todo.txt +94 -0
  43. data/meta/VERSION +1 -1
  44. data/meta/project.yaml +1 -1
  45. data/meta/unixname +1 -0
  46. data/test/unit/lib/reap/extensions/test_array.rb +12 -0
  47. metadata +44 -46
  48. data/data/reap/build/rake/Rakefile +0 -130
  49. data/data/reap/build/rake/setup.rb +0 -1616
  50. data/data/reap/build/rake-lite/install.rb +0 -79
  51. data/data/reap/build/tasks/task/rdoc +0 -211
  52. data/data/reap/build/tasks/task/setup +0 -1616
  53. data/data/reap/build/tasks/task/test +0 -38
  54. data/lib/reap/manager.rb +0 -75
  55. data/lib/reap/utilities/netutils.rb +0 -221
  56. data/lib/reap/utilities/setuputils.rb +0 -124
  57. data/lib/reap/utilities/shellutils.rb +0 -175
  58. data/log/FIXME.txt +0 -25
  59. data/log/TODO.txt +0 -72
  60. data/task/man +0 -14
  61. data/task/rdoc +0 -20
  62. data/task/setup +0 -1616
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+
3
+ class TC_Sample < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def teardown
9
+ end
10
+
11
+ def test_sample
12
+ assert(true)
13
+ end
14
+
15
+ end
16
+
@@ -1,21 +1,26 @@
1
1
  ---
2
- title : Reap
3
- summary : Ruby Project Assistant
4
- description: >
5
- Reap is a Ruby project management system.
2
+ project : foo
3
+ contact : Your Name <yourmail@foomail.com>
4
+ license : GPLv3
5
+ created : 2005-08-09
6
+ homepage : http://orphans.rubyforge.org
7
+ repository : http://orphans.rubyforge.org/svn
6
8
 
7
- project : reap
8
- author : Thomas Sawyer <transfire@gmail.com>
9
- created : "2005-08-09"
10
- homepage : "http://reap.rubyforge.org"
11
- repository : "http://reap.rubyforge.org/svn"
12
- slogan : Reap Your Rewards
9
+ # Title. This defaults to project capitalized, if not given.
10
+ title : Project Title Here
13
11
 
14
- exclude : [ pkg, work, doc, ri ]
12
+ # One line description.
13
+ brief : Foo Foo the Rabbit
15
14
 
16
- dependency :
17
- - [facets, ">= 2.1.0"]
15
+ # Detailed description.
16
+ description: >
17
+ Little rabbit Foo Foo was hoping through the forest.
18
+ Picking up field mice and bopping them on the head.
18
19
 
19
- loadpath: lib/reap
20
+ # Directories to exclude from package.
21
+ exclude : [ pkg, work, doc, ri ]
20
22
 
23
+ # List of dependenices with version constraints.
24
+ dependency :
25
+ - [facets, '>= 2.1.0']
21
26
 
@@ -12,66 +12,78 @@
12
12
  secure: false # Uses TLS security, true or false?
13
13
  login: plain # Login type: plain, cram_md5 or login.
14
14
  cutoff: 30 # How many lines of changelog to provide.
15
+
15
16
  check:
16
- loadpath: #{metadata.loadpath}
17
- exclude: []
17
+ loadpath: ~ # Defaults to metadata.loadpath.
18
+ exclude: [] # Files or directories to specifically exclude.
19
+
18
20
  check-syntax:
19
- loadpath: #{metadata.loadpath}
20
- exclude: [ext]
21
+ loadpath: ~ # Defaults to metadata.loadpath.
22
+ exclude: [ext] # Files or directories to specifically exclude.
23
+
21
24
  check-load:
22
- loadpath: #{metadata.loadpath}
23
- exclude: []
25
+ loadpath: ~ # Defaults to metadata.loadpath.
26
+ exclude: [] # Files or directories to specifically exclude.
27
+
24
28
  clean:
25
- remove: [**/*~, **/*.bak]
29
+ remove: [**/*~, **/*.bak] # Files globs to remove when cleaning.
30
+
26
31
  log:
27
32
  policy: [cap, ext] # How to save log files. (cap=capitialize, up=uppercase, low=lowercase, ext=extension)
28
- output: log
33
+ output: log # Where to store log files. (This is to become convention!)
34
+
29
35
  log-notes:
30
- loadpath: #{metadata.loadpath} # Files to search for notes.
31
- labels: [TODO, FIXME, OPTIMIZE]
32
- make:
33
- extensions: #{metadata.extensions} # Defaults to ext/**/extconf.rb (NOT USED YET)
36
+ loadpath: ~ # File paths to search for notes. Defaults to metadata.loadpath.
37
+ labels: [TODO, FIXME, OPTIMIZE] # Note labels to scan.
38
+
34
39
  package:
35
- formats: [zip, gem]
40
+ formats: [zip, gem] # Package formats to create (gem, zip, tgz)
41
+
36
42
  publish:
37
- source: doc
38
- webdir: ~
39
- username: #{ENV['RUBYFORGE_USERNAME']}
43
+ source: site # Directory to publish.
44
+ webdir: ~ # Remote directory to copy to.
45
+ username: ~ # Account username. Deafults to ENV['RUBYFORGE_USERNAME'].
40
46
  protect: [usage, statcvs, statsvn, robot.txt, wiki] # Used as defaults for creating .rsync-filter (after that edit .rsync-filter)
41
47
  exclude: [.svn, scrap] # Used as defaults for creating .rsync-filter (after that edit .rsync-filter)
48
+
42
49
  rdoc:
43
- template: html
44
- output: doc/rdoc
45
- main: 'README{,.txt}'
46
- inline: true
47
- merge: true
48
- exclude: []
49
- include: ['lib', '[A-Z]*']
50
- adfile: doc/ads/rdoc.html
51
- targets: ~
50
+ template: html # Template to use.
51
+ output: doc # Where to save rdoc files.
52
+ main: 'README{,.txt}' # Main file (pattern).
53
+ inline: true # Inline source?
54
+ merge: true # Merge code?
55
+ include: [lib, '[A-Z]*'] # Which files to include (be careful of including a Rakefile).
56
+ exclude: [] # Paths to specifically exclude. (RDOC SUCKS --THIS DOESN'T WORK!!!)
57
+ adfile: site/ads/rdoc.html # Ad file html snippet to add te html rdocs.
58
+ targets: ~ # If you need more then one rdoc set, use targets.
59
+
52
60
  ri:
53
- output: ri
54
- exclude: []
55
- include: #{metadata.loadpath}
61
+ output: ri # Where to save ri files.
62
+ include: ~ # Defaults to metadata.loadpath.
63
+ exclude: [] # Paths to specifically exclude.
64
+
56
65
  release:
57
- username: #{ENV['RUBYFORGE_USERNAME']}
58
- changelog: 'CHANGES{,.txt}'
59
- notelog: 'NOTES{,.txt}'
66
+ username: ~ # Account username. Deafults to ENV['RUBYFORGE_USERNAME'].
67
+ changelog: 'CHANGES{,.txt}' # File to send as changes.
68
+ notelog: 'NOTES{,.txt}' # File to send as notes.
69
+
60
70
  spec:
61
- specs: [spec/**/*_spec.rb, spec/**/spec_*.rb]
62
- loadpath: #{metadata.loadpath}
63
- require: []
64
- warning: false
65
- command: spec
66
- live: false
71
+ specs: [spec/**/*_spec.rb, spec/**/spec_*.rb] # Pattern for rspec files.
72
+ loadpath: ~ # Defaults to metadata.loadpath.
73
+ require: [] # Any files to pre-require.
74
+ warning: false # Run specs with Ruby's warning turned-on.
75
+ command: spec # The spec command.
76
+ live: false # If true, will not use loadpath setting.
77
+
67
78
  stats:
68
- loadpath: #{metadata.loadpath}
69
- exclude: ['ext']
79
+ loadpath: ~ # Defaults to metadata.loadpath.
80
+ exclude: ['ext'] # File to specifically exclude from stats.
81
+
70
82
  test:
71
- tests: test/**/{test,tc}_*.rb
72
- loadpath: #{metadata.loadpath}
73
- require: []
74
- exclude: ext
75
- command: testrb
76
- live: false
83
+ tests: test/**/{test,tc}_*.rb # Pattern for unit test files.
84
+ loadpath: ~ # Defaults to metadata.loadpath.
85
+ require: [] # Any files to pre-require.
86
+ exclude: ext # ?
87
+ command: testrb # The test command.
88
+ live: false # If true, will not use loadpath setting.
77
89
 
@@ -0,0 +1,8 @@
1
+ class File
2
+
3
+ def self.write(file, str)
4
+ open(file, 'w'){ |f| f << str.to_s }
5
+ end
6
+
7
+ end
8
+
@@ -0,0 +1,108 @@
1
+ require 'net/smtp'
2
+ require 'timeout'
3
+ begin
4
+ require 'openssl'
5
+ rescue LoadError
6
+ end
7
+
8
+ module Net #:nodoc: all
9
+ class SMTP
10
+ module TLS
11
+
12
+ def self.included(base)
13
+ base.extend(ClassMethods)
14
+
15
+ @usetls = base.use_tls?
16
+ end
17
+
18
+ module ClassMethods
19
+ def self.extended(base)
20
+ base.disable_tls
21
+ end
22
+
23
+ def enable_tls()
24
+ @@usetls = true
25
+ end
26
+
27
+ def disable_tls()
28
+ @@usetls = false
29
+ end
30
+
31
+ def use_tls?()
32
+ @@usetls
33
+ end
34
+ end
35
+
36
+ def use_tls?()
37
+ @usetls
38
+ end
39
+
40
+ def enable_tls()
41
+ @usetls = true
42
+ end
43
+
44
+ def disable_tls()
45
+ @usetls = false
46
+ end
47
+
48
+ def use_tls?()
49
+ @usetls
50
+ end
51
+
52
+ private
53
+ def do_start(helodomain, user, secret, authtype)
54
+ raise IOError('SMTP session already started') if @started
55
+ check_auth_args user, secret, authtype if user or secret
56
+
57
+ sock = timeout(@open_timeout) {TCPSocket.open(@address, @port) }
58
+ @socket = Net::InternetMessageIO.new(sock)
59
+ @socket.read_timeout = @read_timeout
60
+ @socket.debug_output = STDERR
61
+
62
+ check_response(critical {recv_response() } )
63
+ do_helo(helodomain)
64
+
65
+ if @@usetls
66
+ raise 'openssl is not installed' unless defined?(OpenSSL)
67
+ ssl = OpenSSL::SSL::SSLSocket.new(sock)
68
+ starttls
69
+ ssl.sync_close = true
70
+ ssl.connect
71
+
72
+ @socket = Net::InternetMessageIO.new(ssl)
73
+ @socket.read_timeout = @read_timeout
74
+ @socket.debug_output = STDERR
75
+ do_helo(helodomain)
76
+ end
77
+
78
+ authenticate user, secret, authtype if user
79
+ @started = true
80
+ ensure
81
+ @socket.close if not @started and @socket and not @socket.closed?
82
+ end
83
+
84
+ def do_helo(helodomain)
85
+ begin
86
+ if @esmtp
87
+ ehlo helodomain
88
+ else
89
+ helo helodomain
90
+ end
91
+ rescue Net::ProtocolError
92
+ if @esmtp
93
+ @esmtp = false
94
+ @error_occured = false
95
+ retry
96
+ end
97
+ raise
98
+ end
99
+ end
100
+
101
+ def starttls
102
+ getok('STARTTLS')
103
+ end
104
+ end
105
+
106
+ end
107
+ end
108
+
@@ -1,6 +1,8 @@
1
1
  require 'facets/dir/multiglob'
2
+ require 'facets/file/write'
2
3
 
3
4
  require 'reap/extensions/array'
4
5
  require 'reap/extensions/hash'
5
6
  require 'reap/extensions/string'
7
+ require 'reap/extensions/net/smtp_tls'
6
8
 
data/lib/reap/metadata.rb CHANGED
@@ -229,7 +229,7 @@ class Project
229
229
 
230
230
  # Status of this release: alpha, beta, RC1, etc.
231
231
  attr_accessor :status do
232
- @stats || 'alpha'
232
+ @status || 'alpha'
233
233
  end
234
234
 
235
235
  # Date of release.
@@ -558,7 +558,8 @@ class Project
558
558
  files -= Dir.multiglob_r('pkg') #package_directory
559
559
  end
560
560
 
561
- files = files.to_a
561
+ # Do not include symlinks.
562
+ files.reject!{ |f| FileTest.symlink?(f) }
562
563
 
563
564
  unless with_dirs
564
565
  files = files.select{ |f| !File.directory?(f) }
@@ -1,6 +1,6 @@
1
1
  module Reap
2
2
 
3
- class Manager
3
+ class Project
4
4
 
5
5
  # Make a release announcement. Generates and can email release
6
6
  # announcements. The announcement if built from the README file
@@ -57,13 +57,13 @@ module Reap
57
57
  version = options.versoin || metadata.version
58
58
 
59
59
  # defaults
60
- subject ||= "%s, v%s released"
60
+ subject ||= "%s, v%s release"
61
61
  account ||= mail_from
62
62
 
63
63
  subject = subject % [title, version]
64
64
 
65
65
  if dryrun?
66
- puts "[DRYRUN] Email '#{subject}'"
66
+ puts "email '#{subject}'"
67
67
  puts "\n#{message}\n\n" if verbose?
68
68
  else
69
69
  puts "\n#{message}\n\n"
@@ -1,6 +1,6 @@
1
1
  module Reap
2
2
 
3
- class Manager
3
+ class Project
4
4
 
5
5
  # Verify syntax of ruby scripts.
6
6
  #
@@ -1,6 +1,6 @@
1
1
  module Reap
2
2
 
3
- class Manager
3
+ class Project
4
4
 
5
5
  # Clean scrap products. All directory paths and or file globs
6
6
  # listed under the clean configuration entry, can be removed via
@@ -1,6 +1,6 @@
1
1
  module Reap
2
2
 
3
- class Manager
3
+ class Project
4
4
 
5
5
  # Remove gem package products.
6
6
 
@@ -26,8 +26,6 @@ module Reap
26
26
  #raise LoadError, "RubyGems is not installed?"
27
27
  end
28
28
 
29
- status "Creating .gem package"
30
-
31
29
  options = configure_options(options, 'package-gem', 'package')
32
30
 
33
31
  prepare(options)
@@ -125,7 +123,7 @@ module Reap
125
123
  # Platform: ruby, mswin32, i586-linux, powerpc-darwin, current
126
124
  spec.platform = 'ruby' # TODO current support!
127
125
 
128
- spec.require_paths = [package.gem_path].flatten.reverse
126
+ spec.require_paths = [package.loadpath].flatten
129
127
 
130
128
  #if package.platform != 'ruby'
131
129
  # spec.require_paths.concat(spec.require_paths.collect{ |d| File.join(d, platform) })
@@ -134,7 +132,9 @@ module Reap
134
132
  spec.bindir = "bin"
135
133
  spec.executables = package.executables
136
134
  spec.requirements = package.requirements
137
- spec.has_rdoc = !(FalseClass===package.document)
135
+
136
+ # TODO: Looks like there is no choice but to auto-rdoc gem install.
137
+ spec.has_rdoc = !(FalseClass===package.document)
138
138
 
139
139
  if package.dependencies
140
140
  package.dependencies.each do |d,v|
@@ -1,10 +1,12 @@
1
1
  module Reap
2
2
 
3
- class Manager
3
+ class Project
4
4
 
5
5
  # Create web index.html from README. (Not yet used)
6
6
 
7
7
  def html
8
+ status_title "Creating HTML documents"
9
+
8
10
  require 'rdoc/markup/simple_markup'
9
11
  require 'rdoc/markup/simple_markup/to_html'
10
12
 
@@ -38,32 +40,31 @@ module Reap
38
40
  end
39
41
  path = File.join(output, name + '.html')
40
42
 
41
- if dryrun?
42
- puts "[DRYRUN] Create #{path}"
43
- else
44
- next unless out_of_date?(path, file)
45
-
46
- title = "#{package.title} #{name.upcase}"
47
-
48
- input = File.read(file)
49
- output = s.convert(input, h)
50
-
51
- File.open(path, 'w') do |f|
52
- f << %{<html>}
53
- f << %{<head>}
54
- f << %{ <title>#{title}<title>}
55
- f << %{ <link rel="stylesheet" TYPE="text/css" HREF="#{style}">} if style
56
- f << %{</head>}
57
- f << %{<body>}
58
- f << output
59
- f << %{</body>}
60
- f << %{</html>}
61
- end
62
- puts "Created #{path}"
63
- end
43
+ next unless out_of_date?(path, file)
44
+
45
+ title = "#{package.title} #{name.upcase}"
46
+
47
+ input = File.read(file)
48
+ output = s.convert(input, h) # FIX
49
+
50
+ text = ''
51
+ text << %{<html>}
52
+ text << %{<head>}
53
+ text << %{ <title>#{title}<title>}
54
+ text << %{ <link rel="stylesheet" TYPE="text/css" HREF="#{style}">} if style
55
+ text << %{</head>}
56
+ text << %{<body>}
57
+ text << output
58
+ text << %{</body>}
59
+ text << %{</html>}
60
+
61
+ write(path, text)
62
+
63
+ puts "Created #{path}"
64
64
  end
65
65
  end
66
66
 
67
67
  end
68
68
 
69
69
  end
70
+
@@ -1,8 +1,8 @@
1
- require 'reap/manager/scm'
1
+ require 'reap/project/scm'
2
2
 
3
3
  module Reap
4
4
 
5
- class Manager
5
+ class Project
6
6
 
7
7
  # Update all logs.
8
8
 
@@ -40,6 +40,8 @@ module Reap
40
40
  labels = options['labels'] || ['TODO', 'FIXME', 'OPTIMIZE']
41
41
  output = options['output'] || 'log'
42
42
 
43
+ loadpath = list_option(loadpath)
44
+
43
45
  labels = labels.split(',') if String === labels
44
46
  labels = [labels].flatten.compact
45
47
 
@@ -62,7 +64,7 @@ module Reap
62
64
  # Gather notes.
63
65
 
64
66
  def log_notes_extract(labels, loadpath=nil)
65
- files = Dir.multiglob_r(*loadpath)
67
+ files = multiglob_r(*loadpath)
66
68
 
67
69
  counts = Hash.new(0)
68
70
  records = []
@@ -148,18 +150,26 @@ module Reap
148
150
  def naming_policy
149
151
  @naming_policy ||= (
150
152
  logconfig = configuration['log'] || {}
151
- logconfig['policy'] || DEFAULT['log']['policy']
153
+ policy = logconfig['policy'] || ['cap', 'ext']
154
+ list_option(policy)
152
155
  )
153
156
  end
154
157
 
155
158
  # TODO: Naming policy needs to be apply to changelog too.
156
159
 
157
160
  def apply_naming_policy(name, ext)
158
- policy = naming_policy
159
- name = name.downcase if /low/i =~ policy
160
- name = name.upcase if /up/i =~ policy
161
- name = name.capitalize if /cap/i =~ policy
162
- name = name + ".#{ext}" if /ext/i =~ policy
161
+ naming_policy.each do |policy|
162
+ case policy
163
+ when /^low/, /^down/
164
+ name = name.downcase
165
+ when /^up/
166
+ name = name.upcase
167
+ when /^cap/
168
+ name = name.capitalize
169
+ when /^ext/
170
+ name = name + ".#{ext}"
171
+ end
172
+ end
163
173
  name
164
174
  end
165
175
 
@@ -1,51 +1,44 @@
1
- #
2
- # The Make tool routes to extension Makefile(s).
3
- # At this point it's designed to support extconf.rb design.
4
- #
5
- # TODO: Perhaps make a true compiler class in the future.
6
- # TODO: win32 cross-compile.
1
+ #require 'reap/project/compile'
7
2
 
8
3
  module Reap
9
4
 
10
- class Manager
5
+ class Project
11
6
 
12
- def extensions
13
- @extensions ||= metadata.extensions || 'ext/**/extconf.rb'
14
- end
7
+ # The Make tool routes to extension Makefile(s).
8
+ # Presently, it is designed to support only extconf.rb design.
9
+ #
10
+ # TODO: win32 cross-compile ?
15
11
 
16
- # Return list of extconf.rb scripts.
12
+ MAKE_COMMAND = ENV['make'] || (RUBY_PLATFORM =~ /(win|w)32$/ ? 'nmake' : 'make')
17
13
 
18
- def extension_scripts
19
- [extensions].flatten.collect do |ext|
20
- Dir.glob(ext)
21
- end.flatten
22
- end
23
14
 
24
- # Return list of directory locations of extconf.rb scripts.
15
+ # Check to see if this project has extensions that need to be compiled.
25
16
 
26
- def extension_directories
27
- glob(extension_scripts).map do |ext|
28
- File.dirname(ext)
29
- end
17
+ def compiles?
18
+ !extensions.empty?
30
19
  end
31
20
 
32
- # Check to see if this project has extensions that need to be compiled.
21
+ # Extension directories. Often this will simply be 'ext'.
22
+ # but sometimes more then one extension is needed and are kept
23
+ # in separate directories. This works by looking for ext/**/*.c
24
+ # files, where ever they are is considered an extension directory.
33
25
 
34
- def compiles?
35
- !extension_directories.empty?
26
+ def extensions
27
+ @extensions ||= Dir['ext/**/*.c'].collect{ |file| File.dirname(file) }.uniq
36
28
  end
37
29
 
30
+
38
31
  # Compile extensions.
39
32
 
40
33
  def make
41
- make_extconf
34
+ make_config
42
35
  make_target
43
36
  end
44
37
 
45
38
  # Compile static.
46
39
 
47
40
  def make_static
48
- make_extconf
41
+ make_config
49
42
  make_target 'static'
50
43
  end
51
44
 
@@ -59,20 +52,21 @@ module Reap
59
52
 
60
53
  def make_distclean
61
54
  make_target 'distclean'
55
+ extensions.each do |directory|
56
+ makefile = File.join(directory, 'Makefile')
57
+ rm(makefile) if File.exist?(makefile)
58
+ end
62
59
  end
63
60
 
64
- # TODO: Clobber should get rid of Makefiles too.
65
-
66
- #alias_method :clobber_make, :make_distclean
61
+ alias_method :clobber_make, :make_distclean
67
62
 
68
63
  # Create Makefile(s).
69
64
 
70
- def make_extconf
71
- extensions.each do |file|
72
- directory = File.dirname(file)
65
+ def make_config
66
+ extensions.each do |directory|
73
67
  next if File.exist?(File.join(directory, 'Makefile'))
74
68
  cd(directory) do
75
- sh "ruby #{File.basename(file)}"
69
+ sh "ruby extconf.rb"
76
70
  end
77
71
  end
78
72
  end
@@ -80,14 +74,13 @@ module Reap
80
74
  private
81
75
 
82
76
  def make_target(target='')
83
- extension_directories.each do |directory|
77
+ extensions.each do |directory|
84
78
  cd(directory) do
85
- sh "make #{target}"
79
+ sh "#{MAKE_COMMAND} #{target}"
86
80
  end
87
81
  end
88
82
  end
89
83
 
90
-
91
84
  # Eric Hodel said NOT to copy the compiled libs.
92
85
  #
93
86
  #task :copy_files do