reap 5.10.10 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (224) hide show
  1. data/COPYING +400 -8
  2. data/README +136 -75
  3. data/bin/reap +2 -2
  4. data/bin/rubytest +5 -0
  5. data/data/reap/scaffold/standard/COPYING +403 -0
  6. data/data/reap/scaffold/{ChangeLog → standard/ChangeLog} +0 -0
  7. data/data/reap/scaffold/standard/INSTALL +14 -0
  8. data/data/reap/scaffold/{ProjectInfo → standard/ProjectInfo} +23 -24
  9. data/data/reap/scaffold/standard/README +3 -0
  10. data/data/reap/scaffold/standard/Rakefile +10 -0
  11. data/{Rakefile → data/reap/scaffold/standard/TODO} +0 -0
  12. data/data/reap/scaffold/{setup.rb → standard/setup.rb} +287 -270
  13. data/data/reap/scaffold/subversion/trunk/COPYING +403 -0
  14. data/data/reap/scaffold/{INSTALL → subversion/trunk/ChangeLog} +0 -0
  15. data/data/reap/scaffold/subversion/trunk/INSTALL +14 -0
  16. data/data/reap/scaffold/subversion/trunk/ProjectInfo +76 -0
  17. data/data/reap/scaffold/subversion/trunk/README +3 -0
  18. data/data/reap/scaffold/subversion/trunk/Rakefile +10 -0
  19. data/data/reap/scaffold/{README → subversion/trunk/TODO} +0 -0
  20. data/data/reap/scaffold/subversion/trunk/setup.rb +1568 -0
  21. data/data/reap/setup.rb +1568 -0
  22. data/lib/reap/bin/reap.rb +176 -80
  23. data/lib/reap/bin/rubytest.rb +53 -0
  24. data/lib/reap/class/announce.rb +220 -0
  25. data/lib/reap/class/doap.rb +80 -0
  26. data/lib/reap/class/extest.rb +151 -0
  27. data/lib/reap/class/filer.rb +62 -0
  28. data/lib/reap/class/installer.rb +178 -0
  29. data/lib/reap/class/manifest.rb +72 -0
  30. data/lib/reap/class/package.rb +468 -0
  31. data/lib/reap/class/publish.rb +152 -0
  32. data/lib/reap/class/rdoc.rb +131 -0
  33. data/lib/reap/class/test.rb +269 -0
  34. data/lib/reap/projectinfo.rb +187 -30
  35. data/lib/reap/rake.rb +42 -0
  36. data/lib/reap/reap.rb +89 -0
  37. data/lib/reap/tasks.rb +672 -11
  38. data/lib/reap/taskutils.rb +122 -0
  39. data/sample/ProjectInfo +96 -0
  40. data/sample/Rakefile +9 -0
  41. data/sample/Reapfile +11 -0
  42. data/sample/task/demo.rb +15 -0
  43. data/setup.rb +287 -272
  44. metadata +99 -257
  45. data/ANN +0 -3
  46. data/ChangeLog +0 -25
  47. data/ProjectInfo +0 -65
  48. data/data/reap/scaffold/COPYING +0 -11
  49. data/data/reap/scaffold/Rakefile +0 -146
  50. data/data/reap/scaffold/Todo +0 -0
  51. data/dev/Rakefile +0 -60
  52. data/dev/composite_task.rb +0 -27
  53. data/dev/compositepublisher.rb +0 -24
  54. data/dev/ftptools.rb +0 -139
  55. data/dev/license-each.rb +0 -85
  56. data/dev/publisher.rb +0 -75
  57. data/dev/rubyforgepublisher.rb +0 -18
  58. data/dev/sshpublisher.rb +0 -47
  59. data/dev/suby-cvs.rb +0 -46
  60. data/dev/template.rb +0 -72
  61. data/lib/reap/lint.rb +0 -0
  62. data/lib/reap/readymade.rb +0 -21
  63. data/lib/reap/task.rb +0 -187
  64. data/lib/reap/task/announce.rb +0 -156
  65. data/lib/reap/task/fileperm.rb +0 -82
  66. data/lib/reap/task/info.rb +0 -20
  67. data/lib/reap/task/install.rb +0 -33
  68. data/lib/reap/task/noop.rb +0 -26
  69. data/lib/reap/task/package.rb +0 -204
  70. data/lib/reap/task/publish.rb +0 -49
  71. data/lib/reap/task/rdoc.rb +0 -82
  72. data/lib/reap/task/scaffold.rb +0 -114
  73. data/lib/reap/task/test.rb +0 -186
  74. data/lib/reap/task/testext.rb +0 -110
  75. data/lib/reap/task/webpublish.rb +0 -43
  76. data/lib/reap/test.rb +0 -138
  77. data/test/tc_reap.rb +0 -11
  78. data/web/ProjectInfo +0 -57
  79. data/web/images/appleboy.jpg +0 -0
  80. data/web/images/grape.jpg +0 -0
  81. data/web/index.html +0 -124
  82. data/web/rdoc/classes/Object.html +0 -121
  83. data/web/rdoc/classes/ProjectInfo.html +0 -207
  84. data/web/rdoc/classes/ProjectInfo.src/M000094.html +0 -18
  85. data/web/rdoc/classes/ProjectInfo.src/M000095.html +0 -24
  86. data/web/rdoc/classes/ProjectInfo.src/M000096.html +0 -22
  87. data/web/rdoc/classes/ProjectInfo.src/M000097.html +0 -21
  88. data/web/rdoc/classes/ProjectInfo.src/M000098.html +0 -18
  89. data/web/rdoc/classes/Reap.html +0 -248
  90. data/web/rdoc/classes/Reap.src/M000023.html +0 -16
  91. data/web/rdoc/classes/Reap.src/M000024.html +0 -21
  92. data/web/rdoc/classes/Reap.src/M000025.html +0 -16
  93. data/web/rdoc/classes/Reap.src/M000026.html +0 -21
  94. data/web/rdoc/classes/Reap/Announce.html +0 -262
  95. data/web/rdoc/classes/Reap/Announce.src/M000030.html +0 -18
  96. data/web/rdoc/classes/Reap/Announce.src/M000031.html +0 -114
  97. data/web/rdoc/classes/Reap/Announce.src/M000032.html +0 -46
  98. data/web/rdoc/classes/Reap/Info.html +0 -176
  99. data/web/rdoc/classes/Reap/Info.src/M000033.html +0 -18
  100. data/web/rdoc/classes/Reap/Info.src/M000034.html +0 -17
  101. data/web/rdoc/classes/Reap/Info.src/M000035.html +0 -18
  102. data/web/rdoc/classes/Reap/Install.html +0 -193
  103. data/web/rdoc/classes/Reap/Install.src/M000036.html +0 -18
  104. data/web/rdoc/classes/Reap/Install.src/M000037.html +0 -20
  105. data/web/rdoc/classes/Reap/Install.src/M000038.html +0 -26
  106. data/web/rdoc/classes/Reap/Noop.html +0 -192
  107. data/web/rdoc/classes/Reap/Noop.src/M000027.html +0 -18
  108. data/web/rdoc/classes/Reap/Noop.src/M000028.html +0 -17
  109. data/web/rdoc/classes/Reap/Noop.src/M000029.html +0 -18
  110. data/web/rdoc/classes/Reap/Package.html +0 -310
  111. data/web/rdoc/classes/Reap/Package.src/M000055.html +0 -18
  112. data/web/rdoc/classes/Reap/Package.src/M000056.html +0 -68
  113. data/web/rdoc/classes/Reap/Package.src/M000057.html +0 -84
  114. data/web/rdoc/classes/Reap/Package.src/M000058.html +0 -61
  115. data/web/rdoc/classes/Reap/Perm.html +0 -236
  116. data/web/rdoc/classes/Reap/Perm.src/M000078.html +0 -18
  117. data/web/rdoc/classes/Reap/Perm.src/M000079.html +0 -21
  118. data/web/rdoc/classes/Reap/Perm.src/M000080.html +0 -42
  119. data/web/rdoc/classes/Reap/Perm.src/M000081.html +0 -26
  120. data/web/rdoc/classes/Reap/Perm.src/M000082.html +0 -18
  121. data/web/rdoc/classes/Reap/Publish.html +0 -213
  122. data/web/rdoc/classes/Reap/Publish.src/M000070.html +0 -18
  123. data/web/rdoc/classes/Reap/Publish.src/M000071.html +0 -22
  124. data/web/rdoc/classes/Reap/Publish.src/M000072.html +0 -37
  125. data/web/rdoc/classes/Reap/RDoc.html +0 -218
  126. data/web/rdoc/classes/Reap/RDoc.src/M000059.html +0 -18
  127. data/web/rdoc/classes/Reap/RDoc.src/M000060.html +0 -24
  128. data/web/rdoc/classes/Reap/RDoc.src/M000061.html +0 -70
  129. data/web/rdoc/classes/Reap/Task.html +0 -396
  130. data/web/rdoc/classes/Reap/Task.src/M000039.html +0 -18
  131. data/web/rdoc/classes/Reap/Task.src/M000040.html +0 -16
  132. data/web/rdoc/classes/Reap/Task.src/M000041.html +0 -16
  133. data/web/rdoc/classes/Reap/Task.src/M000042.html +0 -16
  134. data/web/rdoc/classes/Reap/Task.src/M000043.html +0 -16
  135. data/web/rdoc/classes/Reap/Task.src/M000044.html +0 -22
  136. data/web/rdoc/classes/Reap/Task.src/M000045.html +0 -16
  137. data/web/rdoc/classes/Reap/Task.src/M000046.html +0 -16
  138. data/web/rdoc/classes/Reap/Task.src/M000047.html +0 -16
  139. data/web/rdoc/classes/Reap/Task.src/M000048.html +0 -16
  140. data/web/rdoc/classes/Reap/Task.src/M000049.html +0 -16
  141. data/web/rdoc/classes/Reap/Task.src/M000050.html +0 -27
  142. data/web/rdoc/classes/Reap/Task.src/M000051.html +0 -19
  143. data/web/rdoc/classes/Reap/Task.src/M000052.html +0 -18
  144. data/web/rdoc/classes/Reap/Task.src/M000053.html +0 -18
  145. data/web/rdoc/classes/Reap/Task.src/M000054.html +0 -19
  146. data/web/rdoc/classes/Reap/Test.html +0 -253
  147. data/web/rdoc/classes/Reap/Test.src/M000062.html +0 -18
  148. data/web/rdoc/classes/Reap/Test.src/M000063.html +0 -26
  149. data/web/rdoc/classes/Reap/Test.src/M000064.html +0 -77
  150. data/web/rdoc/classes/Reap/Test.src/M000065.html +0 -27
  151. data/web/rdoc/classes/Reap/Test.src/M000066.html +0 -50
  152. data/web/rdoc/classes/Reap/Test/TestResults.html +0 -205
  153. data/web/rdoc/classes/Reap/Test/TestResults.src/M000067.html +0 -21
  154. data/web/rdoc/classes/Reap/Test/TestResults.src/M000068.html +0 -21
  155. data/web/rdoc/classes/Reap/Test/TestResults.src/M000069.html +0 -23
  156. data/web/rdoc/classes/Reap/TestExt.html +0 -234
  157. data/web/rdoc/classes/Reap/TestExt.src/M000073.html +0 -18
  158. data/web/rdoc/classes/Reap/TestExt.src/M000074.html +0 -20
  159. data/web/rdoc/classes/Reap/TestExt.src/M000075.html +0 -49
  160. data/web/rdoc/classes/Reap/TestExt.src/M000076.html +0 -34
  161. data/web/rdoc/classes/Reap/TestExt.src/M000077.html +0 -27
  162. data/web/rdoc/classes/Reap/WebPublish.html +0 -213
  163. data/web/rdoc/classes/Reap/WebPublish.src/M000083.html +0 -18
  164. data/web/rdoc/classes/Reap/WebPublish.src/M000084.html +0 -21
  165. data/web/rdoc/classes/Reap/WebPublish.src/M000085.html +0 -32
  166. data/web/rdoc/classes/ReapCommand.html +0 -425
  167. data/web/rdoc/classes/ReapCommand.src/M000001.html +0 -16
  168. data/web/rdoc/classes/ReapCommand.src/M000003.html +0 -16
  169. data/web/rdoc/classes/ReapCommand.src/M000005.html +0 -16
  170. data/web/rdoc/classes/ReapCommand.src/M000007.html +0 -16
  171. data/web/rdoc/classes/ReapCommand.src/M000009.html +0 -16
  172. data/web/rdoc/classes/ReapCommand.src/M000011.html +0 -16
  173. data/web/rdoc/classes/ReapCommand.src/M000013.html +0 -18
  174. data/web/rdoc/classes/ReapCommand.src/M000014.html +0 -19
  175. data/web/rdoc/classes/ReapCommand.src/M000015.html +0 -19
  176. data/web/rdoc/classes/ReapCommand.src/M000016.html +0 -24
  177. data/web/rdoc/classes/ReapCommand.src/M000018.html +0 -29
  178. data/web/rdoc/classes/Scaffold.html +0 -211
  179. data/web/rdoc/classes/Scaffold.src/M000086.html +0 -16
  180. data/web/rdoc/classes/Scaffold.src/M000087.html +0 -28
  181. data/web/rdoc/classes/Scaffold.src/M000088.html +0 -32
  182. data/web/rdoc/classes/Scaffold.src/M000089.html +0 -18
  183. data/web/rdoc/classes/UnitTestKernel.html +0 -176
  184. data/web/rdoc/classes/UnitTestKernel.src/M000019.html +0 -18
  185. data/web/rdoc/classes/UnitTestKernel.src/M000020.html +0 -18
  186. data/web/rdoc/classes/UnitTestKernel.src/M000021.html +0 -22
  187. data/web/rdoc/classes/UnitTestKernel.src/M000022.html +0 -22
  188. data/web/rdoc/classes/UnitTesting.html +0 -165
  189. data/web/rdoc/classes/UnitTesting.src/M000090.html +0 -34
  190. data/web/rdoc/classes/UnitTesting.src/M000091.html +0 -18
  191. data/web/rdoc/classes/UnitTesting/Failure.html +0 -156
  192. data/web/rdoc/classes/UnitTesting/Failure.src/M000092.html +0 -18
  193. data/web/rdoc/classes/UnitTesting/Failure.src/M000093.html +0 -21
  194. data/web/rdoc/created.rid +0 -1
  195. data/web/rdoc/files/ANN.html +0 -107
  196. data/web/rdoc/files/COPYING.html +0 -119
  197. data/web/rdoc/files/ChangeLog.html +0 -144
  198. data/web/rdoc/files/ProjectInfo.html +0 -190
  199. data/web/rdoc/files/README.html +0 -274
  200. data/web/rdoc/files/Rakefile.html +0 -101
  201. data/web/rdoc/files/lib/reap/bin/reap_rb.html +0 -129
  202. data/web/rdoc/files/lib/reap/lint_rb.html +0 -101
  203. data/web/rdoc/files/lib/reap/projectinfo_rb.html +0 -110
  204. data/web/rdoc/files/lib/reap/readymade_rb.html +0 -123
  205. data/web/rdoc/files/lib/reap/task/announce_rb.html +0 -114
  206. data/web/rdoc/files/lib/reap/task/fileperm_rb.html +0 -108
  207. data/web/rdoc/files/lib/reap/task/info_rb.html +0 -108
  208. data/web/rdoc/files/lib/reap/task/install_rb.html +0 -108
  209. data/web/rdoc/files/lib/reap/task/noop_rb.html +0 -108
  210. data/web/rdoc/files/lib/reap/task/package_rb.html +0 -109
  211. data/web/rdoc/files/lib/reap/task/publish_rb.html +0 -108
  212. data/web/rdoc/files/lib/reap/task/rdoc_rb.html +0 -108
  213. data/web/rdoc/files/lib/reap/task/scaffold_rb.html +0 -107
  214. data/web/rdoc/files/lib/reap/task/test_rb.html +0 -110
  215. data/web/rdoc/files/lib/reap/task/testext_rb.html +0 -109
  216. data/web/rdoc/files/lib/reap/task/webpublish_rb.html +0 -108
  217. data/web/rdoc/files/lib/reap/task_rb.html +0 -120
  218. data/web/rdoc/files/lib/reap/tasks_rb.html +0 -116
  219. data/web/rdoc/files/lib/reap/test_rb.html +0 -109
  220. data/web/rdoc/fr_class_index.html +0 -47
  221. data/web/rdoc/fr_file_index.html +0 -51
  222. data/web/rdoc/fr_method_index.html +0 -124
  223. data/web/rdoc/index.html +0 -24
  224. data/web/rdoc/rdoc-style.css +0 -208
@@ -1,156 +0,0 @@
1
-
2
- require 'reap/task'
3
-
4
- require 'net/smtp'
5
- require 'facet/string/margin'
6
- require 'facet/string/tab'
7
- require 'facet/string/align_center'
8
- require 'facet/string/fold'
9
- require 'facet/string/word_wrap'
10
-
11
- class Reap::Announce < Reap::Task
12
-
13
- section_required true
14
-
15
- def task_desc
16
- "Send announcement email to ruby-talk or other address."
17
- end
18
-
19
- attr_accessor :title, :version, :summary, :description, :subject
20
- attr_accessor :to, :from, :server, :port, :domain, :account
21
- attr_accessor :authtype, :sectype
22
- attr_accessor :links, :slogan, :memo, :file
23
-
24
- def init
25
- @to = (@to || 'ruby-talk@ruby-lang.org').to_s.strip
26
- @from = (@from || master['email']).to_s.strip
27
- @server = @server.to_s.strip
28
- @port = (@port || 25).to_i
29
- @domain = @domain.to_s.strip if @domain
30
- @account = @account.to_s.strip
31
- @authtype = (@authtype || 'plain').to_s.strip #cram_md5 #plain #login
32
- #@sectype = @sectype
33
-
34
- raise "server is a require announce field" if @server.empty?
35
- raise "account is a require announce field" if @account.empty?
36
-
37
- @title ||= master['title']
38
- @version ||= master['version']
39
- @summary ||= master['summary']
40
- @description ||= master['description']
41
- @links ||= []
42
- @subject ||= "[ANN] #{@title}, v#{@version}"
43
-
44
- @address = @to # TODO
45
-
46
- #raise "DOMAIN is a required field" if @domain.empty?
47
-
48
- # header
49
- announce = %Q{
50
- |
51
- |A N N O U N C I N G
52
- |
53
- |#{title}, v#{version}
54
- |
55
- |#{summary}
56
- |
57
- }.margin.align_center(66)
58
-
59
- # abstract
60
- abstract = ''
61
- if @description
62
- abstract << "\n\n"
63
- abstract << "ABSTRACT: #{@description}".word_wrap(72)
64
- abstract << "\n"
65
- end
66
-
67
- # more info
68
- info = ''
69
- unless @links.empty?
70
- info << "\n"
71
- info << "For More Information".center(67)
72
- info << "\n"
73
- @links.each{ |mi| info << "#{mi}".center(67) << "\n" }
74
- info << "\n"
75
- end
76
-
77
- # slogan
78
- slogan = ''
79
- if @slogan
80
- slogan << "\n\n"
81
- slogan << @slogan.center(67)
82
- slogan << "\n\n"
83
- end
84
-
85
- # memo
86
- memo = ''
87
- if @memo
88
- memo = ''
89
- memo << "\n" << ('-' * 72) << "\n"
90
- memo << "(Memo)\n\n"
91
- memo << @memo.fold.word_wrap(72)
92
- #memo << "\n"
93
- end
94
-
95
- # msg file
96
- msg = ''
97
- if @file and File.file?( @file )
98
- msg << "\n" << ("-" * 72) << "\n"
99
- msg << "(from #{@file})\n\n"
100
- mg = ''
101
- File.open( @file ) { |f| mg << f.gets(nil) }
102
- msg << mg.fold.word_wrap(72)
103
- end
104
-
105
- # stamp
106
- stamp = ''
107
- stamp << "\n" << ("-" * 72) << "\n"
108
- stamp << %Q{
109
- |Generated by Reap, a Rake-based Ruby Project Assistant.
110
- |Do you Ruby? (http://www.ruby-lang.org)
111
- }.margin
112
- stamp << "\n\n"
113
-
114
- @message = ''
115
- @message << announce
116
- @message << abstract
117
- @message << info
118
- @message << slogan
119
- @message << memo
120
- @message << msg
121
- @message << stamp
122
- end
123
-
124
- def run
125
- puts "\n#{@message}\n\n"
126
- print "Send? [Y/n] "
127
- until inp = $stdin.gets[0,1] ; sleep 1 ; end
128
- if (inp || 'y').downcase == 'y'
129
- # ask for password
130
- print "Password for #{@account}: "
131
- until passwd = $stdin.gets.strip ; sleep 1 ; end
132
- mail = %Q{
133
- |From: #{@from}
134
- |To: #{@address}
135
- |Subject: #{@subject}
136
- |
137
- |#{@message}
138
- }.margin
139
- begin
140
- # --- Send using SMTP object and an adaptor
141
- Net::SMTP.enable_tls if Net::SMTP.respond_to?(:enable_tls) and @tls
142
- Net::SMTP.start(@server, @port, @domain, @account, passwd, @authtype) do |s|
143
- s.send_message mail, @from, @address
144
- end
145
- puts "Email sent successfully to #{@address}."
146
- rescue => e
147
- puts "Email delivery failed."
148
- puts e
149
- end
150
- else
151
- puts "Reap announce task canceled."
152
- exit 0
153
- end
154
- end
155
-
156
- end
@@ -1,82 +0,0 @@
1
-
2
- require 'reap/task'
3
-
4
- #
5
- # File Permissions Task
6
- #
7
- class Reap::Perm < Reap::Task
8
-
9
- attr_accessor :user, :group, :filemod, :dirmod
10
-
11
- section_required true
12
-
13
- def task_desc
14
- "Normalize ownership and permissions of package files."
15
- end
16
-
17
- def init
18
- @user = section['user']
19
- @group ||= @user
20
- @filemod ||= 644
21
- @dirmod ||= 755
22
- end
23
-
24
- def run
25
- puts "Reap is shelling out work to chmod..."
26
-
27
- # misc
28
- misc = FileList.new
29
- misc.include('[A-Z]*')
30
- misc.exclude('InstalledFiles')
31
- chmod( misc ) unless misc.empty?
32
-
33
- # lib
34
- libs = FileList.new
35
- libs.include('lib/**/*')
36
- libs.exclude('lib/CVS/**/*')
37
- libs.include('packages/*/lib/**/*')
38
- libs.exclude('packages/*/lib/CVS/**/*')
39
- libs.exclude('packages/CVS/**/*')
40
- chmod( libs ) unless libs.empty?
41
-
42
- # bin
43
- bins = FileList.new
44
- bins.include('bin/**/*')
45
- bins.exclude('bin/CVS/**/*')
46
- bins.include('packages/*/bin/**/*')
47
- bins.exclude('packages/*/bin/CVS/**/*')
48
- bins.exclude('packages/CVS/**/*')
49
- chmod( bins, 755 ) unless bins.empty?
50
- end
51
-
52
- # support functions
53
-
54
- def chmod( file_list, file_mode=644, dir_mode=755 )
55
- dirs, files = file_list.partition{ |l| File.directory?(l) }
56
- unless files.empty?
57
- fstr = '"' + files.join('" "') + '"'
58
- sh %{chmod #{file_mode} #{fstr}}
59
- end
60
- unless dirs.empty?
61
- fstr = '"' + dirs.join('" "') + '"'
62
- sh %{chmod #{dir_mode} #{fstr}}
63
- end
64
- end
65
-
66
- def run_chown
67
- puts "NOT YET IMPLEMENTED"
68
- end
69
- # def _chown( file_list, user, group )
70
- # fstr = '"' + file_list.join('" "') + '"'
71
- # if user
72
- # if group
73
- # sh %{chown #{user}.#{group} #{fstr}}
74
- # else
75
- # sh %{chown #{user} #{fstr}}
76
- # end
77
- # end
78
- # end
79
-
80
- end
81
-
82
- #Reap.register( Reap::Perm )
@@ -1,20 +0,0 @@
1
-
2
- require 'reap/task'
3
-
4
- #
5
- # Info Task - Displays the ProjectInfo file.
6
- #
7
- class Reap::Info < Reap::Task
8
-
9
- def task_desc
10
- "Display ProjectInfo file."
11
- end
12
-
13
- def init
14
- end
15
-
16
- def run
17
- puts ProjectInfo.info_stream
18
- end
19
-
20
- end
@@ -1,33 +0,0 @@
1
-
2
- require 'reap/task'
3
-
4
- #
5
- # Install Task
6
- #
7
- class Reap::Install < Reap::Task
8
-
9
- def task_desc
10
- "Locally install package using setup.rb or install.rb."
11
- end
12
-
13
- attr_accessor :options, :quiet #, :sudo
14
-
15
- def init
16
- @quiet ||= !$VERBOSE
17
- @options ||= []
18
- #@sudo ||= true
19
- end
20
-
21
- def run
22
- exe = %w{ setup.rb install.rb }.find{ |f| File.exists?(f) }
23
- raise "setup.rb or install.rb not found" if exe == nil
24
-
25
- puts "Reap is shelling out work to #{exe}..."
26
-
27
- options << '-q' if @quiet
28
-
29
- c = "sudo ruby #{exe} #{options.join(' ')}"
30
- sh c
31
- end
32
-
33
- end
@@ -1,26 +0,0 @@
1
-
2
- require 'reap/task'
3
-
4
- #
5
- # Noop Task
6
- #
7
- # This task doesn't do anything except
8
- # display a message. It is used simply
9
- # for test purposes when debugging Reap.
10
- #
11
- class Reap::Noop < Reap::Task
12
-
13
- def task_desc
14
- "A no-op task to help debug reap itself."
15
- end
16
-
17
- attr_accessor :message
18
-
19
- def init
20
- end
21
-
22
- def run
23
- puts ( message || 'No message field in noop section.' )
24
- end
25
-
26
- end
@@ -1,204 +0,0 @@
1
-
2
- require 'reap/task'
3
-
4
- begin
5
- require 'rubygems'
6
- rescue
7
- # no rubygems
8
- end
9
-
10
- ##
11
- # Package Task
12
- #
13
- # This task creates standard .zip, .tgz, or .tbz
14
- # packages, plus .gem distributions.
15
- #
16
- class Reap::Package < Reap::Task
17
-
18
- attr_accessor :dir, :name, :date, :series, :status,
19
- :author, :email, :summary, :project, :homepage,
20
- :exclude, :types, :platform, :autorequire,
21
- :dependencies, :requirements, :executables
22
-
23
- attr_reader :package_name, :include
24
-
25
- MUST_EXCLUDE = [ 'InstalledFiles', '**/CVS/**/*', '**/*~' ]
26
-
27
- def task_desc
28
- "Build distribution packages (#{(types||[]).join(', ')})."
29
- end
30
-
31
- def init
32
- @dir ||= ( File.directory?('../leaf') ? '../leaf' : 'pkg')
33
-
34
- @name ||= master['name']
35
- @status ||= master['status'] || 'beta/stable'
36
- @date ||= master['date'] || Time.now.strftime("%Y-%m-%d")
37
-
38
- @series ||= master['series']
39
- @version ||= master['version']
40
-
41
- unless @series || @version
42
- puts "Series or Version is a required field."
43
- exit 0
44
- end
45
-
46
- if @version
47
- @package_name ||= @name + '-' + @version
48
- else
49
- @package_name ||= @name + ',' + @date
50
- end
51
-
52
- @author ||= master['author']
53
- @email ||= master['email']
54
- @summary ||= master['summary']
55
- @project ||= master['rubyforge']['project']
56
- @homepage ||= master['homepage'] || master['rubyforge']['homepage']
57
-
58
- @exclude ||= []
59
- @exclude |= MUST_EXCLUDE
60
-
61
- # types include 'tgz', 'tbz', 'zip', 'tar.gz' 'tar.bz2' and 'gem'.
62
- @types ||= master['distribute'] || [ 'gem', 'tar.gz', 'zip' ]
63
- @types.collect! { |t| t.to_s.strip.downcase }
64
-
65
- # not setable
66
- @include ||= ['**/*']
67
-
68
- # gem specific (at least in this context)
69
- if defined?(Gem)
70
- if @platform
71
- begin
72
- @gem_platform = ::Gem.const_get(@platform)
73
- rescue NameError
74
- @platform = nil
75
- end
76
- end
77
- @platform = ::Gem::Platform::RUBY unless @plaform
78
- #@autorequire
79
- @requirements ||= master['requirements'] || []
80
- @dependencies ||= master['dependencies'] || []
81
- @executables ||= master['executables'] || []
82
- end
83
- end
84
-
85
- def run
86
- # create package image
87
- package_dir_path = "#{@dir}/#{@package_name}"
88
-
89
- if FileTest.directory?(package_dir_path)
90
- print "Package '#{package_name}' already exists. Clobber? [y/N] "
91
- until inp = $stdin.gets[0,1] ; sleep 1 ; end
92
- if (inp || 'y').downcase == 'y'
93
- puts "Removing old directory '#{File.expand_path(package_dir_path)}'..."
94
- FileUtils.rm_r(package_dir_path)
95
- #FileUtils.rm("#{package_dir_path}/*")
96
- #trash_dir = ".trash/#{File.basename(@dir)}"
97
- #FileUtils.mkdir_p(".trash") unless FileTest.directory?(".trash")
98
- #FileUtils.mv(@dir, trash_dir)
99
- else
100
- puts "Reap package task canceled."
101
- exit 0
102
- end
103
- end
104
- package_files = FileList.new
105
- package_files.include(*@include)
106
- package_files.exclude(*@exclude) if @exclude and not @exclude.empty?
107
- FileUtils.mkdir_p @dir #rescue nil
108
- package_files.each do |f|
109
- pkgf = File.join(package_dir_path, f)
110
- fdir = File.dirname(pkgf)
111
- FileUtils.mkdir_p(fdir) if not File.exist?(fdir)
112
- if File.directory?(f)
113
- FileUtils.mkdir_p(pkgf)
114
- else
115
- FileUtils.rm_f(pkgf)
116
- FileUtils.safe_ln(f, pkgf)
117
- end
118
- end
119
-
120
- # create standard package files
121
- FileUtils.chdir(@dir) do
122
- @types.each do |t|
123
- sh_cmd = nil
124
- prefix = 'ERROR' # in case of unforseen bug
125
- case t
126
- when 'tbz', 'bz2', 'bzip2', 'tar.bz2'
127
- prefix = ( t == 'tbz' ? 'tbz' : 'tar.bz2' )
128
- sh_cmd = 'tar --bzip2 -cvf'
129
- puts "\nReap is shelling out work to tar and bzip2..."
130
- when 'tgz', 'tar.gz'
131
- prefix = ( t == 'tgz' ? 'tgz' : 'tar.gz' )
132
- sh_cmd = 'tar --gzip -cvf'
133
- puts "\nReap is shelling out work to tar and gzip..."
134
- when 'zip'
135
- prefix = 'zip'
136
- sh_cmd = 'zip -r'
137
- puts "\nReap is shelling out work to zip..."
138
- when 'gem'
139
- sh_cmd = nil
140
- else
141
- puts "Unknown package type '#{t}' skipped."
142
- sh_cmd = nil
143
- end
144
- sh %{#{sh_cmd} #{@package_name}.#{prefix} #{@package_name}} if sh_cmd
145
- end
146
- puts
147
- end
148
-
149
- # create gem package
150
- run_gem if defined?(Gem) and @types.include?('gem')
151
-
152
- return true
153
- end
154
-
155
- def run_gem
156
- spec = Gem::Specification.new { |s|
157
-
158
- s.name = @name
159
-
160
- if @version
161
- s.version = @version
162
- else
163
- d = @date.split('-').collect{ |e| e.to_i }
164
- d[0] = d[0] - 2000
165
- s.version = d.join('.')
166
- end
167
-
168
- @dependencies.each{ |d,v|
169
- if v
170
- s.add_dependency(d, v)
171
- else
172
- s.add_dependency(d)
173
- end
174
- }
175
-
176
- s.platform = @platform
177
- s.summary = @summary
178
- s.requirements = @requirements
179
-
180
- # s.files = Dir.glob("lib/**/*").delete_if {|item| item.include?("CVS")}
181
- # s.files.concat Dir.glob("bin/**/*").delete_if {|item| item.include?("CVS")}
182
- package_files = FileList.new
183
- package_files.include(*@include)
184
- package_files.exclude(*@exclude) if @exclude and not @exclude.empty?
185
- s.files = package_files.to_a
186
-
187
- s.require_path = 'lib'
188
- s.autorequire = @autorequire if @autorequire
189
- s.author = @author
190
- s.email = @email
191
- s.rubyforge_project = @project
192
- s.homepage = @homepage
193
- s.executables = @executables
194
- s.bindir = "bin"
195
-
196
- }
197
-
198
- puts "Reap is shelling out work to the Gem Package Manager..."
199
- Gem.manage_gems
200
- Gem::Builder.new(spec).build
201
- sh %{mv ./*.gem #{@dir}/}
202
- end
203
-
204
- end