reap 4.3.2 → 4.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/ANN +6 -1
  2. data/ProjectInfo +9 -7
  3. data/README +44 -13
  4. data/data/reap/setup-3.4.1/COPYING +515 -0
  5. data/data/reap/setup-3.4.1/ChangeLog +732 -0
  6. data/data/reap/setup-3.4.1/Makefile +56 -0
  7. data/data/reap/setup-3.4.1/NEWS.en +155 -0
  8. data/data/reap/setup-3.4.1/NEWS.ja +152 -0
  9. data/data/reap/setup-3.4.1/README.en +30 -0
  10. data/data/reap/setup-3.4.1/README.ja +34 -0
  11. data/data/reap/setup-3.4.1/TODO +14 -0
  12. data/data/reap/setup-3.4.1/Template.README.en +41 -0
  13. data/data/reap/setup-3.4.1/Template.README.ja +46 -0
  14. data/data/reap/setup-3.4.1/Usage_en.txt +231 -0
  15. data/data/reap/setup-3.4.1/Usage_ja.txt +250 -0
  16. data/data/reap/setup-3.4.1/doc.en/hookapi.html +91 -0
  17. data/data/reap/setup-3.4.1/doc.en/index.html +28 -0
  18. data/data/reap/setup-3.4.1/doc.en/metaconfapi.html +79 -0
  19. data/data/reap/setup-3.4.1/doc.en/news.html +189 -0
  20. data/data/reap/setup-3.4.1/doc.en/usage.html +297 -0
  21. data/data/reap/setup-3.4.1/doc.ja/hookapi.html +84 -0
  22. data/data/reap/setup-3.4.1/doc.ja/index.html +28 -0
  23. data/data/reap/setup-3.4.1/doc.ja/metaconfapi.html +80 -0
  24. data/data/reap/setup-3.4.1/doc.ja/news.html +186 -0
  25. data/data/reap/setup-3.4.1/doc.ja/usage.html +319 -0
  26. data/data/reap/setup-3.4.1/sample/add-task.rb +15 -0
  27. data/data/reap/setup-3.4.1/setup.rb +1585 -0
  28. data/data/reap/setup-3.4.1/test/test_installer.rb +136 -0
  29. data/lib/reap/{lint.rb → bin/lint.rb} +0 -0
  30. data/lib/reap/bin/reap.rb +3 -2
  31. data/lib/reap/projectinfo.rb +4 -0
  32. data/lib/reap/task.rb +84 -74
  33. data/lib/reap/task/announce.rb +137 -91
  34. data/lib/reap/task/fileperm.rb +26 -9
  35. data/lib/reap/task/info.rb +19 -3
  36. data/lib/reap/task/install.rb +9 -7
  37. data/lib/reap/task/noop.rb +3 -5
  38. data/lib/reap/task/package.rb +247 -105
  39. data/lib/reap/task/publish.rb +40 -14
  40. data/lib/reap/task/rdoc.rb +53 -27
  41. data/lib/reap/task/release.rb +275 -73
  42. data/lib/reap/task/scaffold.rb +14 -6
  43. data/lib/reap/task/test.rb +67 -48
  44. data/lib/reap/task/testext.rb +38 -11
  45. data/lib/reap/vendor/http-access2.rb +1590 -0
  46. data/lib/reap/vendor/http-access2/cookie.rb +538 -0
  47. data/lib/reap/vendor/http-access2/http.rb +542 -0
  48. data/{lib/reap → note}/interface/interface.rb +0 -0
  49. data/{lib/reap → note}/interface/rubyforge.rb +0 -0
  50. data/note/package.rb.0 +394 -0
  51. metadata +43 -8
  52. data/lib/reap/reap.rb +0 -0
@@ -1,21 +1,39 @@
1
1
 
2
2
  require 'reap/task'
3
3
 
4
+ # ___ _ _ _____ _
5
+ # | _ \___ _ _ _ __ (_)_____(_)___ _ _ ___ |_ _|_ _ __| |__
6
+ # | _/ -_) '_| ' \| (_-<_-< / _ \ ' \(_-< | |/ _` (_-< / /
7
+ # |_| \___|_| |_|_|_|_/__/__/_\___/_||_/__/ |_|\__,_/__/_\_\
4
8
  #
5
- # File Permissions Task
6
- #
9
+
10
+ # = File Permissions Task
11
+
7
12
  class Reap::Perm < Reap::Task
8
13
 
9
- task_desc "Normalize ownership and permissions of package files."
10
14
  section_required true
11
15
 
12
- attr_accessor :user, :group, :filemod, :dirmod
16
+ task_desc "Normalize ownership and permissions of package files."
17
+
18
+ task_help %{
19
+
20
+ reap perm
21
+
22
+ Normalizes file permissions.
23
+
24
+ user user name to use
25
+ group group name to use
26
+
27
+ }
28
+
29
+ #attr_accessor :user, :group, :filemod, :dirmod
30
+
31
+ task_attr :perm
13
32
 
14
33
  def init
15
- @user = section['user']
16
- @group ||= @user
17
- @filemod ||= 644
18
- @dirmod ||= 755
34
+ perm.group ||= perm.user
35
+ perm.filemod ||= 644
36
+ perm.dirmod ||= 755
19
37
  end
20
38
 
21
39
  def run
@@ -76,4 +94,3 @@ class Reap::Perm < Reap::Task
76
94
 
77
95
  end
78
96
 
79
- #Reap.register( Reap::Perm )
@@ -1,17 +1,33 @@
1
1
 
2
2
  require 'reap/task'
3
3
 
4
+ # ___ __ _____ _
5
+ # |_ _|_ _ / _|___ |_ _|_ _ __| |__
6
+ # | || ' \| _/ _ \ | |/ _` (_-< / /
7
+ # |___|_||_|_| \___/ |_|\__,_/__/_\_\
4
8
  #
5
- # Info Task - Displays the ProjectInfo file.
9
+
10
+ # = Info Task
6
11
  #
12
+ # Displays the ProjectInfo file.
13
+
7
14
  class Reap::Info < Reap::Task
8
15
 
9
16
  task_desc "Display ProjectInfo file."
10
17
 
11
- def init
18
+ task_help %{
19
+
20
+ reap info
21
+
22
+ Display ProjectInfo file.
23
+
24
+ }
25
+
26
+ def init( na )
27
+ # no initialization
12
28
  end
13
29
 
14
- def run
30
+ def run( na )
15
31
  puts $PROJECT_INFO.info_stream
16
32
  end
17
33
 
@@ -3,17 +3,19 @@
3
3
  require 'reap/task'
4
4
  require 'reap/setup'
5
5
 
6
+ # ___ _ _ _ _____ _
7
+ # |_ _|_ __ ___| |_ __ _| | | |_ _|_ _ ___| | __
8
+ # | || '_ \/ __| __/ _` | | | | |/ _` / __| |/ /
9
+ # | || | | \__ \ || (_| | | | | | (_| \__ \ <
10
+ # |___|_| |_|___/\__\__,_|_|_| |_|\__,_|___/_|\_\
6
11
  #
7
- # Install Task
8
- #
9
- class Reap::Install < Reap::Task
10
12
 
11
- task_desc "Locally install package using setup.rb or install.rb."
13
+ class Reap::Install < Reap::Task
12
14
 
13
- attr_accessor :options #, :sudo
15
+ task_desc "Locally install package using built-in setup.rb."
14
16
 
15
17
  def init
16
- @options ||= []
18
+ task.options ||= []
17
19
  #@sudo ||= true
18
20
  end
19
21
 
@@ -27,7 +29,7 @@ class Reap::Install < Reap::Task
27
29
 
28
30
  ARGV.delete('install')
29
31
  ARGV << '-q' unless $VERBOSE
30
- ARGV.concat(options)
32
+ ARGV.concat(task.options)
31
33
 
32
34
  $setup_pwd = $PROJECT_INFO.info_dir #Dir.pwd
33
35
 
@@ -15,13 +15,11 @@ class Reap::Noop < Reap::Task
15
15
 
16
16
  task_desc "A no-op task to help debug reap itself."
17
17
 
18
- attr_accessor :message
19
-
20
- def init
18
+ def init( msg )
21
19
  end
22
20
 
23
- def run
24
- puts ( message || 'No message field in noop section.' )
21
+ def run( msg )
22
+ puts ( msg.message || 'No message field in noop section.' )
25
23
  end
26
24
 
27
25
  end
@@ -7,112 +7,154 @@ rescue LoadError
7
7
  # no rubygems
8
8
  end
9
9
 
10
- ##
11
- # Package Task
10
+ # ___ _ _____ _
11
+ # | _ \__ _ __| |____ _ __ _ ___ |_ _|_ _ __| |__
12
+ # | _/ _` / _| / / _` / _` / -_) | |/ _` (_-< / /
13
+ # |_| \__,_\__|_\_\__,_\__, \___| |_|\__,_/__/_\_\
14
+ # |___/
15
+
16
+ # = Package Task
12
17
  #
13
18
  # This task creates standard .zip, .tgz, or .tbz
14
19
  # packages, plus .gem distributions.
15
- #
20
+
21
+
16
22
  class Reap::Package < Reap::Task
17
23
 
24
+ MUST_EXCLUDE = [ 'InstalledFiles', '**/CVS/**/*', '**/*~', 'dist', 'pkg' ]
25
+ LOCATIONS = [ '../leaf', '../dist', '../pkg', 'dist', 'pkg' ]
26
+
27
+ # Task line description
28
+
18
29
  task_desc do
19
30
  disttypes = $PROJECT_INFO['distribute'] || [ 'gem', 'tar.bz2', 'zip' ]
20
31
  "Build distribution packages (#{disttypes.join(', ')})."
21
32
  end
22
33
 
23
- MUST_EXCLUDE = [ 'InstalledFiles', '**/CVS/**/*', '**/*~', 'dist', 'pkg' ]
24
- LOCATIONS = [ '../leaf', '../dist', '../pkg', 'dist', 'pkg' ]
34
+ # Help information
35
+
36
+ task_help %{
37
+
38
+ reap package
39
+
40
+ Builds distribution packages. The package task supports
41
+ tar.gz, tar.bz2, zip source packages and gem, pacman and
42
+ debian ditribution packages.
43
+
44
+ dir Directory in which to store distributions.
45
+ include Files to include in distribution.
46
+ exclude Files to exclude from those.
47
+ distribute Distribution types.
48
+ tgz, tar.gz, tbz, tar.bz2, zip
49
+ gem, deb, pac
50
+ project Project name.
51
+ category Software category.
52
+ architecture Can be any, i368, i686, ppc, etc.
53
+ dependencies List of packages this program depends.
54
+ recommends List of packages that can be used with this package.
55
+ replaces List of packages this one replaces.
56
+ executables Executable files in this distribution.
57
+ source URL of source package (typically a tar.gz file).
58
+ md5 MD% checksum of source file.
25
59
 
26
- attr_master :name, :version, :date, :series, :status,
27
- :author, :maintainer, :email, :homepage,
28
- :summary, :description,
29
- :dependencies, :executables, :requirements, :architecture,
30
- :category, :recommends
60
+ These are RubyGems specific.
61
+ autorequire
62
+ platform
63
+ require_paths
31
64
 
32
- attr_accessor :dir, :project, :exclude, :include, :format,
33
- :autorequire, :platform, :require_paths
65
+ The package task also has subsection for each type of distribution.
66
+ These can be used to override settings in the package information
67
+ if it in some way differs. Possible subsections are:
34
68
 
35
- attr_reader :package_name, :series_versioning
69
+ gems
70
+ pacman
71
+ debian
36
72
 
73
+ }
37
74
 
38
- def init( options={} )
39
- @dir ||= LOCATIONS.find { |f| File.directory?(f) } || 'dist'
75
+ # Alternate for task properties accessor.
40
76
 
41
- #@name ||= master['name']
42
- #@status ||= master['status'] || 'beta/stable'
43
- #@date ||= master['date'] || Time.now.strftime("%Y-%m-%d")
44
- #@series ||= master['series'] || '1'
77
+ task_attr :pkg
45
78
 
46
- @maintainer ||= @author
47
- @status ||= 'beta/stable'
48
- @date ||= Time.now.strftime("%Y-%m-%d")
49
- @series ||= '1'
50
- @architecture ||= 'any'
79
+ # Setup package task.
51
80
 
52
- d = @date.split('-').collect{ |e| e.to_i }
81
+ def init
82
+
83
+ # Do not look in master information for this
84
+
85
+ pkg.dir = section.dir || LOCATIONS.find { |f| File.directory?(f) } || 'dist'
86
+
87
+ # Set defaults
88
+
89
+ pkg.status ||= 'beta/stable'
90
+ pkg.date ||= Time.now.strftime("%Y-%m-%d")
91
+ pkg.series ||= '1'
92
+ pkg.author ||= "Anonymous"
93
+ pkg.maintainer ||= pkg.author
94
+ pkg.email ||= ""
95
+ pkg.summary ||= ""
96
+ pkg.architecture ||= 'any'
97
+ pkg.license ||= 'Ruby/GPL'
98
+ pkg.project ||= master.rubyforge.project
99
+ pkg.homepage ||= master.rubyforge.homepage
100
+
101
+ d = pkg.date.split('-').collect{ |e| e.to_i }
53
102
  #d[0] = d[0] - 2000 # No need to keep the 2000
54
- @version ||= d.join('.')
103
+ pkg.version ||= d.join('.')
55
104
 
56
105
  if $BUILD_VERSION
57
- buildno = eval(Time.now.strftime("%H*60+%M"))
58
- @version += ".#{buildno}"
106
+ pkg.buildno = Time.now.strftime("%H*60+%M")
107
+ pkg.version += ".#{pkg.buildno}"
59
108
  end
60
109
 
61
- unless @series
62
- puts "Series is required."
63
- exit 0
64
- end
110
+ pkg.package_name ||= "#{pkg.name}-#{pkg.version}"
65
111
 
66
- @package_name ||= @name + '-' + @version
67
- #@package_name ||= @name + ',' + @date # rubyforge doesn't allow commas
112
+ pkg.exclude ||= []
113
+ pkg.exclude |= MUST_EXCLUDE
68
114
 
69
- #@author ||= master['author']
70
- #@email ||= master['email']
71
- #@summary ||= master['summary']
72
- @project ||= master['rubyforge']['project']
73
- #@homepage ||= master['homepage'] || master['rubyforge']['homepage']
74
- @homepage ||= master['rubyforge']['homepage']
115
+ pkg.include ||= ['**/*']
75
116
 
76
- @exclude ||= []
77
- @exclude |= MUST_EXCLUDE
117
+ # distribute types include 'tgz', 'tbz', 'zip', 'tar.gz' 'tar.bz2', 'gem', 'pac' and 'deb'.
78
118
 
79
- @include ||= ['**/*']
119
+ pkg.distribute ||= [ 'gem', 'tar.bz2', 'zip' ]
120
+ pkg.distribute = [pkg.distribute].flatten.collect { |t| t.to_s.strip.downcase }
80
121
 
81
- # format types include 'tgz', 'tbz', 'zip', 'tar.gz' 'tar.bz2', 'gem' and 'deb'.
82
- @format ||= master['distribute'] || [ 'gem', 'tar.bz2', 'zip' ]
83
- @format = [@format].flatten
84
- @format.collect! { |t| t.to_s.strip.downcase }
122
+ pkg.dependencies ||= []
123
+ pkg.executables ||= []
124
+ pkg.requirements ||= []
125
+ pkg.recommends ||= []
126
+ pkg.conflicts ||= []
127
+ pkg.replaces ||= []
85
128
 
86
- @dependencies ||= []
87
- @executables ||= []
88
- @requirements ||= []
89
- @recommends ||= []
129
+ # Gem specific properties
90
130
 
91
- # gem specific (at least in this context)
92
- if defined?(Gem)
93
- if @platform
131
+ if defined?(::Gem) and pkg.gem
132
+ if pkg.gem.platform
94
133
  begin
95
- @platform = ::Gem.const_get(@platform)
134
+ pkg.gem.platform = ::Gem::Platform.const_get(pkg.gem.platform.upcase)
96
135
  rescue NameError
97
- @platform = ::Gem::Platform::RUBY
136
+ pkg.gem.platform = ::Gem::Platform::RUBY
98
137
  end
99
138
  else
100
- @platform ||= ::Gem::Platform::RUBY
139
+ pkg.gem.platform = ::Gem::Platform::RUBY
101
140
  end
102
141
  #@autorequire
103
142
  end
104
143
 
105
144
  end
106
145
 
107
- def run( options={} )
108
- puts "Creating #{@format.join(',')} packages..."
146
+ # Run package task.
147
+
148
+ def run
149
+
150
+ puts "Creating #{pkg.distribute.join(',')} packages..."
109
151
 
110
152
  # create package image
111
- group_dir_path = File.join( @dir, @package_name )
112
- package_dir_path = File.join( @dir, @package_name, @package_name )
153
+ group_dir_path = File.join( pkg.dir, pkg.package_name )
154
+ package_dir_path = File.join( pkg.dir, pkg.package_name, pkg.package_name )
113
155
 
114
156
  if FileTest.directory?(group_dir_path)
115
- print "Package directory '#{package_name}' already exists. Conitnue anyway or [R]emove and continue? [y/r/N] "
157
+ print "Package directory '#{pkg.package_name}' already exists. Continue or [R]emove and continue? [y/r/N] "
116
158
  until inp = $stdin.gets[0,1] ; sleep 1 ; end
117
159
  inp = inp.to_s.downcase
118
160
  case inp
@@ -127,9 +169,9 @@ class Reap::Package < Reap::Task
127
169
  end
128
170
  end
129
171
  package_files = FileList.new
130
- package_files.include(*@include)
131
- package_files.exclude(*@exclude) if @exclude and not @exclude.empty?
132
- FileUtils.mkdir_p @dir #rescue nil
172
+ package_files.include(*pkg.include)
173
+ package_files.exclude(*pkg.exclude) if pkg.exclude and not pkg.exclude.empty?
174
+ FileUtils.mkdir_p pkg.dir #rescue nil
133
175
  package_files.each do |f|
134
176
  pkgf = File.join(package_dir_path, f)
135
177
  fdir = File.dirname(pkgf)
@@ -143,8 +185,8 @@ class Reap::Package < Reap::Task
143
185
  end
144
186
 
145
187
  # create standard package files
146
- FileUtils.chdir( File.join( @dir, @package_name ) ) do
147
- @format.each do |t|
188
+ FileUtils.chdir( File.join( pkg.dir, pkg.package_name ) ) do
189
+ pkg.distribute.each do |t|
148
190
  sh_cmd = nil
149
191
  prefix = 'ERROR' # in case of unforseen bug
150
192
  case t
@@ -160,20 +202,21 @@ class Reap::Package < Reap::Task
160
202
  prefix = 'zip'
161
203
  sh_cmd = 'zip -r'
162
204
  puts "\nReap is shelling out work to zip..."
163
- when 'gem', 'deb'
205
+ when 'gem', 'deb', 'pac'
164
206
  sh_cmd = nil
165
207
  else
166
208
  puts "Unknown package type '#{t}' skipped."
167
209
  sh_cmd = nil
168
210
  end
169
- sh %{#{sh_cmd} #{@package_name}.#{prefix} #{@package_name}} if sh_cmd
211
+ sh %{#{sh_cmd} #{pkg.package_name}.#{prefix} #{pkg.package_name}} if sh_cmd
170
212
  end
171
213
  puts
172
214
  end
173
215
 
174
216
  # create gem package
175
- if @format.include?('gem')
176
- if defined?(Gem)
217
+
218
+ if pkg.distribute.include?('gem')
219
+ if defined?(::Gem)
177
220
  run_gem
178
221
  else
179
222
  puts "Package .gem requested, but rubygems not found (skipped)."
@@ -181,7 +224,8 @@ class Reap::Package < Reap::Task
181
224
  end
182
225
 
183
226
  # create debian package
184
- if @format.include?('deb')
227
+
228
+ if pkg.distribute.include?('deb')
185
229
  if true # TODO ensure required debian tools here
186
230
  run_deb
187
231
  else
@@ -189,21 +233,33 @@ class Reap::Package < Reap::Task
189
233
  end
190
234
  end
191
235
 
236
+ # create PKGBUILD (pacman, archlinux)
237
+
238
+ if pkg.distribute.include?('pac')
239
+ if true # TODO ensure required tools here
240
+ run_pacman
241
+ else
242
+ puts "Pacman package requested, but required tools not found (skipped)."
243
+ end
244
+ end
245
+
192
246
  return true
193
247
  end
194
248
 
195
- # support methods -------------------------------------------
196
-
197
- private
249
+ private
198
250
 
199
251
  # This builds the gem package.
200
252
 
201
253
  def run_gem
254
+
255
+ use_subsection :gem
256
+ #pkg = sub ? sub : pkg
257
+
202
258
  spec = Gem::Specification.new { |s|
203
- s.name = @name
204
- s.version = @version
259
+ s.name = pkg.name
260
+ s.version = pkg.version
205
261
 
206
- @dependencies.each { |d,v|
262
+ pkg.dependencies.each { |d,v|
207
263
  if v
208
264
  s.add_dependency(d, v)
209
265
  else
@@ -211,26 +267,30 @@ class Reap::Package < Reap::Task
211
267
  end
212
268
  }
213
269
 
214
- s.platform = @platform
215
- s.summary = @summary
216
- s.requirements = @requirements
270
+ s.summary = pkg.summary
271
+ s.requirements = pkg.requirements
217
272
 
218
273
  # s.files = Dir.glob("lib/**/*").delete_if {|item| item.include?("CVS")}
219
274
  # s.files.concat Dir.glob("bin/**/*").delete_if {|item| item.include?("CVS")}
220
275
  package_files = FileList.new
221
- package_files.include(*@include)
222
- package_files.exclude(*@exclude) if @exclude and not @exclude.empty?
276
+ package_files.include(*pkg.include)
277
+ package_files.exclude(*pkg.exclude) if pkg.exclude and not pkg.exclude.empty?
223
278
  s.files = package_files.to_a
224
279
 
280
+ s.author = pkg.author
281
+ s.email = pkg.email
282
+ s.rubyforge_project = pkg.project
283
+ s.homepage = pkg.homepage
284
+
225
285
  s.require_path = 'lib'
226
- s.autorequire = @autorequire if @autorequire
227
- s.author = @author
228
- s.email = @email
229
- s.rubyforge_project = @project
230
- s.homepage = @homepage
231
- s.executables = @executables
232
- s.require_paths = @require_paths if @require_paths
286
+ s.require_paths = pkg.require_paths if pkg.require_paths
287
+
288
+ s.autorequire = pkg.autorequire if pkg.autorequire
289
+ s.platform = pkg.platform
290
+
291
+ s.executables = pkg.executables
233
292
  s.bindir = "bin"
293
+
234
294
  s.has_rdoc = true
235
295
  }
236
296
 
@@ -239,7 +299,7 @@ class Reap::Package < Reap::Task
239
299
  Gem::Builder.new(spec).build
240
300
  gems = Dir.glob( './*.gem' )
241
301
  gems.each{ |f|
242
- FileUtils.mv( f, File.join( @dir, @package_name ) )
302
+ FileUtils.mv( f, File.join( pkg.dir, pkg.package_name ) )
243
303
  }
244
304
  #sh %{mv ./*.gem #{@dir}/}
245
305
  end
@@ -249,9 +309,11 @@ class Reap::Package < Reap::Task
249
309
 
250
310
  def run_deb
251
311
 
312
+ use_subsection :deb
313
+
252
314
  # build the debian control file
253
315
 
254
- dep = dependencies.collect{ |d, v|
316
+ _dep = pkg.dependencies.collect{ |d, v|
255
317
  if v
256
318
  "#{d} (#{v})"
257
319
  else
@@ -261,31 +323,35 @@ class Reap::Package < Reap::Task
261
323
 
262
324
  # Some debian fields not yet used:
263
325
  # Installed-Size: 1024
264
- # Conflicts: wile-e-coyote, ...
265
326
  # Replaces: sam-sheepdog
266
327
  # Pre-Depends: perl, ...
267
328
  # Suggests: docbook
268
329
 
269
330
  ctrl = %{
270
- Package: #{name}
271
- Version: #{version}
331
+ Package: #{pkg.name}
332
+ Version: #{pkg.version}
272
333
  Priority: optional
273
- Architecture: #{architecture}
334
+ Architecture: #{pkg.architecture}
274
335
  Essential: no
275
336
  }.tabto(0)
276
- ctrl << "Section: #{category}" if category
277
- ctrl << "Depends: #{dep}" unless dep.empty?
278
- ctrl << "Recommends: #{recommends.join(' | ')}" unless recommends.empty?
337
+ ctrl << "Section: #{pkg.category}" if pkg.category
338
+ ctrl << "Depends: #{pkg.dep}" unless _dep.empty?
339
+ ctrl << "Recommends: #{pkg.recommends.join(' | ')}" unless pkg.recommends.empty?
340
+ ctrl << "Conflicts: #{pkg.conflicts.join(', ')}" unless pkg.conflicts.empty?
279
341
  ctrl << %{
280
- Maintainer: #{maintainer} [#{email}]
281
- Provides: #{name}
282
- Description: #{summary}
342
+ Maintainer: #{pkg.maintainer} [#{pkg.email}]
343
+ Provides: #{pkg.name}
344
+ Description: #{pkg.summary}
283
345
  .
284
- #{description}
346
+ #{pkg.description}
285
347
  }.tabto(0)
286
348
 
287
- debname = architecture == 'any' ? "ruby_#{name}_#{version}.deb" : "ruby_#{name}_#{version}_#{architecture}.deb"
288
- debdir = File.join( @dir, @package_name, 'debian' )
349
+ if pkg.architecture == 'any'
350
+ debname = "ruby_#{pkg.name}_#{pkg.version}.deb"
351
+ else
352
+ debname = "ruby_#{pkg.name}_#{pkg.version}_#{pkg.architecture}.deb"
353
+ end
354
+ debdir = File.join( pkg.dir, pkg.package_name, 'debian' )
289
355
  debdebdir = File.join( debdir, 'DEBIAN' )
290
356
  debfile = File.join( debdir, debname )
291
357
 
@@ -297,4 +363,80 @@ class Reap::Package < Reap::Task
297
363
  #sh %{dpkg-deb -b #{debdir} #{debfile}}
298
364
  end
299
365
 
366
+
367
+ # This builds a pacman (archlinux) PKGBUILD script.
368
+
369
+ def run_pacman
370
+
371
+ use_subsection :pacman
372
+
373
+ unless @source
374
+ puts "URL 'source' is require for proto package."
375
+ return nil
376
+ end
377
+
378
+ # if section.key?('pac')
379
+ # _dep = pkg.pac.dependenciers || pkg.dependencies
380
+ # _rep = pkg.pac.replaces || pkg.replaces
381
+ # _con = pkg.pac.conflicts || pkg.conflicts
382
+ # else
383
+ _dep = pkg.dependencies
384
+ _rep = pkg.replaces
385
+ _con = pkg.conflicts
386
+ # end
387
+
388
+ _dep = _dep.collect{ |d| "'#{d}'" }.join(' ')
389
+ _rep = _rep.collect{ |d| "'#{d}'" }.join(' ')
390
+ _con = _rep.collect{ |d| "'#{d}'" }.join(' ')
391
+
392
+ proto = %{
393
+ pkgname=#{pkg.name}
394
+ pkgver=#{pkg.version}
395
+ pkgrel=#{pkg.series}
396
+ pkgdesc="#{pkg.summary}"
397
+ url="#{pkg.homepage}"
398
+ license="#{pkg.license}"
399
+ depends=(#{_dep})
400
+ conflicts=(#{_con})
401
+ replaces=(#{_rep})
402
+ source=(#{pkg.source})
403
+ md5sums=(#{pkg.md5})
404
+ }.tabto(0)
405
+
406
+ # What are these for?
407
+ # install=
408
+ # backup=()
409
+
410
+ if pkg.usemake
411
+ s << %{
412
+ makedepends=()"
413
+ build() {
414
+ cd $startdir/src/$pkgname-$pkgver
415
+ ./ruby setup.rb --prefix=/usr
416
+ make || return 1
417
+ make DESTDIR=$startdir/pkg install
418
+ }
419
+ }.tabto(0)
420
+ else
421
+ s << %{
422
+ build() {
423
+ cd $startdir/src/$pkgname-$pkgver
424
+ ./ruby setup.rb --prefix=/usr
425
+ }
426
+ }
427
+ end
428
+
429
+ pacdir = File.join( pkg.dir, pkg.package_name, 'pacman' )
430
+ pacpacdir = File.join( pacdir, 'PACMAN' )
431
+ pacfile = File.join( pacdir, 'PKGBUILD' )
432
+
433
+ puts "Reap is shelling out work to the pacman..."
434
+ FileUtils.mkdir_p(pacdir)
435
+ #sh %{ruby setup.rb all --prefix=#{debdir}}
436
+ #FileUtils.mkdir_p(pacpacdir)
437
+ File.open( pacfile, 'w') { |f| f << proto }
438
+ #sh %{dpkg-deb -b #{debdir} #{debfile}}
439
+
440
+ end
441
+
300
442
  end