autobuild 0.5.1 → 0.6

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 (345) hide show
  1. data/CHANGES +10 -3
  2. data/README +106 -273
  3. data/Rakefile +14 -19
  4. data/TODO +5 -0
  5. data/bin/autobuild +17 -67
  6. data/doc/classes/Autobuild.html +320 -57
  7. data/doc/classes/{Autobuild/Config.src/M000040.html → Autobuild.src/M000005.html} +8 -5
  8. data/doc/classes/{Autobuild/Config.src/M000041.html → Autobuild.src/M000006.html} +3 -3
  9. data/doc/classes/Autobuild.src/M000007.html +18 -0
  10. data/doc/classes/Autobuild.src/M000008.html +18 -0
  11. data/doc/classes/Autobuild.src/M000009.html +18 -0
  12. data/doc/classes/Autobuild.src/M000010.html +18 -0
  13. data/doc/classes/Autobuild.src/M000011.html +18 -0
  14. data/doc/classes/Autobuild.src/M000012.html +18 -0
  15. data/doc/classes/Autobuild.src/M000013.html +25 -0
  16. data/doc/classes/Autobuild.src/M000014.html +19 -0
  17. data/doc/classes/Autobuild.src/M000015.html +19 -0
  18. data/doc/classes/Autobuild.src/M000016.html +16 -0
  19. data/doc/classes/Autobuild.src/M000017.html +20 -0
  20. data/doc/classes/Autobuild.src/M000018.html +18 -0
  21. data/doc/classes/Autobuild.src/M000019.html +52 -0
  22. data/doc/classes/Autobuild.src/M000020.html +44 -0
  23. data/doc/classes/Autobuild.src/M000021.html +19 -0
  24. data/doc/classes/Autobuild.src/M000022.html +19 -0
  25. data/doc/classes/Autobuild.src/M000023.html +20 -0
  26. data/doc/classes/Autobuild.src/M000024.html +22 -0
  27. data/doc/classes/Autobuild.src/M000033.html +31 -0
  28. data/doc/classes/Autobuild.src/M000034.html +32 -10
  29. data/doc/classes/Autobuild.src/M000035.html +4 -5
  30. data/doc/classes/Autobuild.src/M000036.html +4 -30
  31. data/doc/classes/Autobuild.src/M000037.html +4 -5
  32. data/doc/classes/Autobuild.src/M000038.html +4 -5
  33. data/doc/classes/Autobuild.src/M000039.html +4 -6
  34. data/doc/classes/Autobuild.src/M000040.html +18 -0
  35. data/doc/classes/Autobuild.src/M000041.html +25 -0
  36. data/doc/classes/Autobuild.src/M000042.html +19 -0
  37. data/doc/classes/Autobuild.src/M000043.html +19 -0
  38. data/doc/classes/Autobuild.src/M000044.html +16 -0
  39. data/doc/classes/Autobuild.src/M000045.html +20 -0
  40. data/doc/classes/Autobuild.src/M000046.html +18 -0
  41. data/doc/classes/Autobuild.src/M000047.html +52 -0
  42. data/doc/classes/Autobuild.src/M000048.html +44 -0
  43. data/doc/classes/Autobuild.src/M000049.html +19 -0
  44. data/doc/classes/Autobuild.src/M000050.html +19 -0
  45. data/doc/classes/Autobuild.src/M000051.html +20 -0
  46. data/doc/classes/Autobuild.src/M000052.html +22 -0
  47. data/doc/classes/Autobuild/Autotools.html +103 -58
  48. data/doc/classes/Autobuild/Autotools.src/M000055.html +20 -0
  49. data/doc/classes/Autobuild/Autotools.src/M000056.html +20 -0
  50. data/doc/classes/Autobuild/Autotools.src/M000057.html +16 -0
  51. data/doc/classes/Autobuild/Autotools.src/M000058.html +16 -0
  52. data/doc/classes/Autobuild/Autotools.src/M000059.html +22 -0
  53. data/doc/classes/Autobuild/Autotools.src/M000060.html +29 -0
  54. data/doc/classes/Autobuild/Autotools.src/M000061.html +21 -0
  55. data/doc/classes/Autobuild/Autotools.src/M000062.html +20 -0
  56. data/doc/classes/Autobuild/Autotools.src/{M000067.html → M000063.html} +4 -10
  57. data/doc/classes/Autobuild/Autotools.src/M000083.html +20 -0
  58. data/doc/classes/Autobuild/Autotools.src/M000084.html +20 -0
  59. data/doc/classes/Autobuild/Autotools.src/M000085.html +16 -0
  60. data/doc/classes/Autobuild/Autotools.src/M000086.html +16 -0
  61. data/doc/classes/Autobuild/Autotools.src/M000087.html +22 -0
  62. data/doc/classes/Autobuild/Autotools.src/M000088.html +29 -0
  63. data/doc/classes/Autobuild/Autotools.src/M000089.html +21 -0
  64. data/doc/classes/Autobuild/Autotools.src/M000090.html +20 -0
  65. data/doc/classes/Autobuild/Autotools.src/M000091.html +32 -0
  66. data/doc/classes/Autobuild/CVSImporter.html +11 -11
  67. data/doc/classes/Autobuild/CVSImporter.src/M000036.html +26 -0
  68. data/doc/classes/Autobuild/CVSImporter.src/{M000049.html → M000037.html} +1 -1
  69. data/doc/classes/Autobuild/CVSImporter.src/M000064.html +26 -0
  70. data/doc/classes/Autobuild/CVSImporter.src/M000065.html +18 -0
  71. data/doc/classes/Autobuild/CommandNotFound.html +6 -0
  72. data/doc/classes/Autobuild/ConfigException.html +6 -0
  73. data/doc/classes/Autobuild/{Options.html → DarcsImporter.html} +13 -11
  74. data/doc/classes/Autobuild/DarcsImporter.src/M000044.html +20 -0
  75. data/doc/classes/Autobuild/DarcsImporter.src/M000072.html +20 -0
  76. data/doc/classes/Autobuild/Exception.html +38 -20
  77. data/doc/classes/Autobuild/Exception.src/{M000103.html → M000087.html} +1 -1
  78. data/doc/classes/Autobuild/Exception.src/{M000104.html → M000088.html} +1 -1
  79. data/doc/classes/Autobuild/Exception.src/{M000105.html → M000089.html} +2 -3
  80. data/doc/classes/Autobuild/Exception.src/M000090.html +24 -0
  81. data/doc/classes/Autobuild/Exception.src/M000115.html +16 -0
  82. data/doc/classes/Autobuild/Exception.src/M000116.html +16 -0
  83. data/doc/classes/Autobuild/Exception.src/M000117.html +18 -0
  84. data/doc/classes/Autobuild/Exception.src/M000118.html +24 -0
  85. data/doc/classes/Autobuild/GenomModule.html +83 -37
  86. data/doc/classes/Autobuild/GenomModule.src/M000091.html +19 -0
  87. data/doc/classes/Autobuild/GenomModule.src/{M000107.html → M000092.html} +2 -1
  88. data/doc/classes/Autobuild/GenomModule.src/{M000108.html → M000093.html} +1 -1
  89. data/doc/classes/Autobuild/GenomModule.src/{M000109.html → M000094.html} +2 -2
  90. data/doc/classes/Autobuild/GenomModule.src/{M000110.html → M000095.html} +4 -6
  91. data/doc/classes/Autobuild/GenomModule.src/{M000112.html → M000096.html} +2 -4
  92. data/doc/classes/Autobuild/GenomModule.src/{M000111.html → M000097.html} +3 -3
  93. data/doc/classes/Autobuild/GenomModule.src/M000098.html +36 -0
  94. data/doc/classes/Autobuild/GenomModule.src/M000119.html +19 -0
  95. data/doc/classes/Autobuild/GenomModule.src/M000120.html +21 -0
  96. data/doc/classes/Autobuild/GenomModule.src/M000121.html +16 -0
  97. data/doc/classes/Autobuild/GenomModule.src/M000122.html +18 -0
  98. data/doc/classes/Autobuild/GenomModule.src/M000123.html +27 -0
  99. data/doc/classes/Autobuild/GenomModule.src/M000124.html +24 -0
  100. data/doc/classes/Autobuild/GenomModule.src/M000125.html +19 -0
  101. data/doc/classes/Autobuild/GenomModule.src/M000126.html +36 -0
  102. data/doc/classes/Autobuild/Import.html +5 -43
  103. data/doc/classes/Autobuild/Import.src/{M000047.html → M000033.html} +0 -0
  104. data/doc/classes/Autobuild/Import.src/{M000045.html → M000061.html} +4 -4
  105. data/doc/classes/Autobuild/Importer.html +10 -10
  106. data/doc/classes/Autobuild/Importer.src/{M000056.html → M000034.html} +1 -1
  107. data/doc/classes/Autobuild/Importer.src/{M000057.html → M000035.html} +3 -3
  108. data/doc/classes/Autobuild/Importer.src/M000062.html +18 -0
  109. data/doc/classes/Autobuild/Importer.src/M000063.html +38 -0
  110. data/doc/classes/Autobuild/ImporterPackage.html +16 -16
  111. data/doc/classes/Autobuild/ImporterPackage.src/{M000115.html → M000099.html} +1 -1
  112. data/doc/classes/Autobuild/ImporterPackage.src/{M000116.html → M000100.html} +3 -3
  113. data/doc/classes/Autobuild/ImporterPackage.src/{M000117.html → M000101.html} +1 -1
  114. data/doc/classes/Autobuild/{Autotools.src/M000065.html → ImporterPackage.src/M000127.html} +4 -4
  115. data/doc/classes/Autobuild/ImporterPackage.src/M000128.html +22 -0
  116. data/doc/classes/Autobuild/ImporterPackage.src/M000129.html +16 -0
  117. data/doc/classes/Autobuild/Interpolator.html +27 -27
  118. data/doc/classes/Autobuild/Interpolator.src/{M000051.html → M000039.html} +1 -1
  119. data/doc/classes/Autobuild/Interpolator.src/{M000052.html → M000040.html} +1 -1
  120. data/doc/classes/Autobuild/Interpolator.src/{M000053.html → M000041.html} +1 -1
  121. data/doc/classes/Autobuild/Interpolator.src/{M000054.html → M000042.html} +1 -1
  122. data/doc/classes/Autobuild/Interpolator.src/{M000055.html → M000043.html} +1 -1
  123. data/doc/classes/Autobuild/Interpolator.src/M000067.html +18 -0
  124. data/doc/classes/Autobuild/Interpolator.src/M000068.html +21 -0
  125. data/doc/classes/Autobuild/Interpolator.src/M000069.html +45 -0
  126. data/doc/classes/Autobuild/Interpolator.src/M000070.html +39 -0
  127. data/doc/classes/Autobuild/Interpolator.src/M000071.html +29 -0
  128. data/doc/classes/Autobuild/MailReporter.html +31 -25
  129. data/doc/classes/Autobuild/MailReporter.src/{M000060.html → M000045.html} +1 -1
  130. data/doc/classes/Autobuild/MailReporter.src/{M000061.html → M000046.html} +1 -1
  131. data/doc/classes/Autobuild/MailReporter.src/{M000062.html → M000047.html} +1 -1
  132. data/doc/classes/Autobuild/MailReporter.src/{M000063.html → M000048.html} +1 -1
  133. data/doc/classes/Autobuild/MailReporter.src/{M000064.html → M000049.html} +1 -1
  134. data/doc/classes/Autobuild/MailReporter.src/M000073.html +24 -0
  135. data/doc/classes/Autobuild/MailReporter.src/M000074.html +21 -0
  136. data/doc/classes/Autobuild/MailReporter.src/M000075.html +20 -0
  137. data/doc/classes/Autobuild/MailReporter.src/M000076.html +18 -0
  138. data/doc/classes/Autobuild/MailReporter.src/M000077.html +42 -0
  139. data/doc/classes/Autobuild/Package.html +132 -81
  140. data/doc/classes/Autobuild/Package.src/M000073.html +16 -0
  141. data/doc/classes/Autobuild/Package.src/M000074.html +16 -0
  142. data/doc/classes/Autobuild/Package.src/{M000085.html → M000075.html} +2 -2
  143. data/doc/classes/Autobuild/Package.src/M000076.html +56 -0
  144. data/doc/classes/Autobuild/Package.src/M000077.html +16 -0
  145. data/doc/classes/Autobuild/Package.src/{M000091.html → M000078.html} +3 -3
  146. data/doc/classes/Autobuild/Package.src/M000079.html +28 -0
  147. data/doc/classes/Autobuild/Package.src/M000080.html +23 -0
  148. data/doc/classes/Autobuild/Package.src/{M000086.html → M000081.html} +1 -1
  149. data/doc/classes/Autobuild/Package.src/{M000087.html → M000082.html} +3 -3
  150. data/doc/classes/Autobuild/Package.src/M000101.html +16 -0
  151. data/doc/classes/Autobuild/Package.src/M000102.html +16 -0
  152. data/doc/classes/Autobuild/Package.src/M000103.html +16 -0
  153. data/doc/classes/Autobuild/Package.src/M000104.html +56 -0
  154. data/doc/classes/Autobuild/Package.src/M000105.html +16 -0
  155. data/doc/classes/Autobuild/Package.src/M000106.html +16 -0
  156. data/doc/classes/Autobuild/Package.src/M000107.html +28 -0
  157. data/doc/classes/Autobuild/Package.src/M000108.html +23 -0
  158. data/doc/classes/Autobuild/Package.src/M000109.html +19 -0
  159. data/doc/classes/Autobuild/Package.src/{M000093.html → M000110.html} +4 -4
  160. data/doc/classes/Autobuild/PackageException.html +11 -5
  161. data/doc/classes/Autobuild/PackageException.src/{M000059.html → M000050.html} +1 -1
  162. data/doc/classes/Autobuild/PackageException.src/M000078.html +16 -0
  163. data/doc/classes/Autobuild/Reporter.html +16 -10
  164. data/doc/classes/Autobuild/Reporter.src/{M000074.html → M000053.html} +1 -1
  165. data/doc/classes/Autobuild/Reporter.src/{M000075.html → M000054.html} +1 -1
  166. data/doc/classes/Autobuild/Reporter.src/M000081.html +16 -0
  167. data/doc/classes/Autobuild/Reporter.src/M000082.html +16 -0
  168. data/doc/classes/Autobuild/Reporting.html +60 -33
  169. data/doc/classes/Autobuild/Reporting.src/{M000095.html → M000025.html} +1 -1
  170. data/doc/classes/Autobuild/Reporting.src/{M000096.html → M000026.html} +1 -1
  171. data/doc/classes/Autobuild/Reporting.src/{M000097.html → M000027.html} +1 -1
  172. data/doc/classes/Autobuild/Reporting.src/{M000098.html → M000028.html} +1 -1
  173. data/doc/classes/Autobuild/Reporting.src/{M000099.html → M000029.html} +2 -2
  174. data/doc/classes/Autobuild/Reporting.src/M000053.html +24 -0
  175. data/doc/classes/Autobuild/Reporting.src/M000054.html +18 -0
  176. data/doc/classes/Autobuild/Reporting.src/M000055.html +18 -0
  177. data/doc/classes/Autobuild/Reporting.src/M000056.html +18 -0
  178. data/doc/classes/Autobuild/Reporting.src/M000057.html +18 -0
  179. data/doc/classes/Autobuild/{SVNImporter.html → SVN.html} +8 -8
  180. data/doc/classes/Autobuild/SVN.src/M000038.html +22 -0
  181. data/doc/classes/Autobuild/SVN.src/M000066.html +22 -0
  182. data/doc/classes/Autobuild/SourceTreeTask.html +5 -5
  183. data/doc/classes/Autobuild/SourceTreeTask.src/{M000114.html → M000083.html} +1 -1
  184. data/doc/classes/Autobuild/SourceTreeTask.src/M000111.html +18 -0
  185. data/doc/classes/Autobuild/StdoutReporter.html +16 -10
  186. data/doc/classes/Autobuild/StdoutReporter.src/{M000072.html → M000051.html} +1 -1
  187. data/doc/classes/Autobuild/StdoutReporter.src/{M000073.html → M000052.html} +1 -1
  188. data/doc/classes/Autobuild/StdoutReporter.src/M000079.html +18 -0
  189. data/doc/classes/Autobuild/StdoutReporter.src/M000080.html +18 -0
  190. data/doc/classes/Autobuild/SubcommandFailed.html +21 -15
  191. data/doc/classes/Autobuild/SubcommandFailed.src/{M000100.html → M000084.html} +1 -1
  192. data/doc/classes/Autobuild/SubcommandFailed.src/{M000101.html → M000085.html} +2 -2
  193. data/doc/classes/Autobuild/SubcommandFailed.src/{M000102.html → M000086.html} +1 -1
  194. data/doc/classes/Autobuild/SubcommandFailed.src/M000112.html +16 -0
  195. data/doc/classes/Autobuild/SubcommandFailed.src/M000113.html +32 -0
  196. data/doc/classes/Autobuild/SubcommandFailed.src/M000114.html +20 -0
  197. data/doc/classes/Autobuild/Subprocess.html +10 -10
  198. data/doc/classes/Autobuild/Subprocess.src/{M000042.html → M000030.html} +0 -0
  199. data/doc/classes/Autobuild/Subprocess.src/{M000043.html → M000031.html} +4 -2
  200. data/doc/classes/Autobuild/Subprocess.src/M000058.html +18 -0
  201. data/doc/classes/Autobuild/Subprocess.src/M000059.html +98 -0
  202. data/doc/classes/Autobuild/Subprocess/Failed.html +5 -5
  203. data/doc/classes/Autobuild/Subprocess/Failed.src/{M000044.html → M000032.html} +0 -0
  204. data/doc/classes/Autobuild/Subprocess/Failed.src/M000060.html +18 -0
  205. data/doc/classes/Autobuild/TarImporter.html +35 -35
  206. data/doc/classes/Autobuild/TarImporter.src/{M000076.html → M000064.html} +0 -0
  207. data/doc/classes/Autobuild/TarImporter.src/{M000077.html → M000065.html} +0 -0
  208. data/doc/classes/Autobuild/TarImporter.src/{M000078.html → M000066.html} +0 -0
  209. data/doc/classes/Autobuild/TarImporter.src/{M000079.html → M000067.html} +0 -0
  210. data/doc/classes/Autobuild/TarImporter.src/{M000080.html → M000068.html} +0 -0
  211. data/doc/classes/Autobuild/TarImporter.src/{M000081.html → M000069.html} +1 -1
  212. data/doc/classes/Autobuild/TarImporter.src/{M000082.html → M000070.html} +2 -2
  213. data/doc/classes/Autobuild/TarImporter.src/M000092.html +28 -0
  214. data/doc/classes/Autobuild/TarImporter.src/M000093.html +53 -0
  215. data/doc/classes/Autobuild/TarImporter.src/M000094.html +26 -0
  216. data/doc/classes/Autobuild/TarImporter.src/M000095.html +16 -0
  217. data/doc/classes/Autobuild/TarImporter.src/M000096.html +20 -0
  218. data/doc/classes/Autobuild/TarImporter.src/M000097.html +20 -0
  219. data/doc/classes/Autobuild/TarImporter.src/M000098.html +30 -0
  220. data/doc/classes/Autobuild/UndefinedVariable.html +12 -12
  221. data/doc/classes/Autobuild/UndefinedVariable.src/{M000083.html → M000071.html} +1 -1
  222. data/doc/classes/Autobuild/UndefinedVariable.src/{M000084.html → M000072.html} +1 -1
  223. data/doc/classes/Autobuild/UndefinedVariable.src/M000099.html +19 -0
  224. data/doc/classes/Autobuild/{Exception.src/M000106.html → UndefinedVariable.src/M000100.html} +3 -4
  225. data/doc/classes/Hash.html +12 -12
  226. data/doc/classes/Hash.src/{M000019.html → M000002.html} +1 -1
  227. data/doc/classes/Hash.src/M000003.html +23 -0
  228. data/doc/classes/Hash.src/M000020.html +11 -8
  229. data/doc/classes/Hash.src/M000021.html +23 -0
  230. data/doc/classes/RMail/Message.html +8 -5
  231. data/doc/classes/RMail/Message.src/{M000033.html → M000004.html} +1 -1
  232. data/doc/classes/RMail/Message.src/M000028.html +25 -0
  233. data/doc/classes/TC_CVSImport.html +15 -15
  234. data/doc/classes/{TC_TarImporter.src/M000009.html → TC_CVSImport.src/M000025.html} +7 -6
  235. data/doc/classes/TC_CVSImport.src/M000026.html +6 -7
  236. data/doc/classes/TC_CVSImport.src/M000027.html +22 -7
  237. data/doc/classes/TC_Config.html +20 -20
  238. data/doc/classes/TC_Config.src/{M000001.html → M000006.html} +0 -0
  239. data/doc/classes/TC_Config.src/{M000002.html → M000007.html} +0 -0
  240. data/doc/classes/TC_Config.src/{M000003.html → M000008.html} +0 -0
  241. data/doc/classes/TC_Config.src/{M000004.html → M000009.html} +0 -0
  242. data/doc/classes/TC_ConfigInterpolation.html +20 -20
  243. data/doc/classes/TC_ConfigInterpolation.src/{M000015.html → M000002.html} +0 -0
  244. data/doc/classes/TC_ConfigInterpolation.src/{M000016.html → M000003.html} +0 -0
  245. data/doc/classes/TC_ConfigInterpolation.src/{M000017.html → M000004.html} +0 -0
  246. data/doc/classes/TC_ConfigInterpolation.src/{M000018.html → M000005.html} +0 -0
  247. data/doc/classes/TC_SVNImport.html +15 -15
  248. data/doc/classes/TC_SVNImport.src/{M000005.html → M000017.html} +0 -0
  249. data/doc/classes/TC_SVNImport.src/{M000006.html → M000018.html} +0 -0
  250. data/doc/classes/TC_SVNImport.src/{M000007.html → M000019.html} +0 -0
  251. data/doc/classes/TC_Subcommand.html +15 -15
  252. data/doc/classes/TC_Subcommand.src/M000022.html +17 -4
  253. data/doc/classes/TC_Subcommand.src/M000023.html +4 -16
  254. data/doc/classes/TC_Subcommand.src/M000024.html +30 -0
  255. data/doc/classes/TC_TarImporter.html +35 -35
  256. data/doc/classes/TC_TarImporter.src/M000010.html +14 -6
  257. data/doc/classes/TC_TarImporter.src/M000011.html +7 -6
  258. data/doc/classes/TC_TarImporter.src/M000012.html +6 -12
  259. data/doc/classes/TC_TarImporter.src/M000013.html +6 -17
  260. data/doc/classes/TC_TarImporter.src/M000014.html +11 -9
  261. data/doc/classes/TC_TarImporter.src/M000015.html +31 -0
  262. data/doc/classes/TC_TarImporter.src/M000016.html +24 -0
  263. data/doc/created.rid +1 -1
  264. data/doc/files/README.html +378 -0
  265. data/doc/files/{lib/autobuild/options_rb.html → demo_rb.html} +19 -5
  266. data/doc/files/lib/autobuild/config_rb.html +30 -7
  267. data/doc/files/lib/autobuild/config_rb.src/M000001.html +18 -0
  268. data/doc/files/lib/autobuild/environment_rb.html +1 -1
  269. data/doc/files/lib/autobuild/exceptions_rb.html +1 -1
  270. data/doc/files/lib/autobuild/import/cvs_rb.html +2 -1
  271. data/doc/files/{test/base_rb.html → lib/autobuild/import/darcs_rb.html} +8 -11
  272. data/doc/files/lib/autobuild/import/svn_rb.html +1 -1
  273. data/doc/files/lib/autobuild/import/tar_rb.html +1 -1
  274. data/doc/files/lib/autobuild/importer_rb.html +2 -1
  275. data/doc/files/lib/autobuild/{config-interpolator_rb.html → loaders/config-interpolator_rb.html} +3 -3
  276. data/doc/files/lib/autobuild/loaders/config_rb.html +113 -0
  277. data/doc/files/lib/autobuild/package_rb.html +1 -1
  278. data/doc/files/lib/autobuild/packages/autotools_rb.html +2 -1
  279. data/doc/files/lib/autobuild/packages/genom_rb.html +1 -1
  280. data/doc/files/lib/autobuild/packages/import_rb.html +1 -1
  281. data/doc/files/lib/autobuild/reporting_rb.html +2 -1
  282. data/doc/files/lib/autobuild/subcommand_rb.html +1 -1
  283. data/doc/files/lib/autobuild/timestamps_rb.html +2 -1
  284. data/doc/files/{test/test_attr_defval_rb.html → lib/autobuild_rb.html} +7 -6
  285. data/doc/files/test/test_config_interpolation_rb.html +2 -2
  286. data/doc/files/test/test_config_rb.html +2 -2
  287. data/doc/files/test/test_import_cvs_rb.html +1 -1
  288. data/doc/files/test/test_import_svn_rb.html +1 -1
  289. data/doc/files/test/test_import_tar_rb.html +1 -1
  290. data/doc/files/test/test_subcommand_rb.html +2 -2
  291. data/doc/files/test/tools_rb.html +1 -1
  292. data/doc/fr_class_index.html +0 -37
  293. data/doc/fr_file_index.html +1 -25
  294. data/doc/fr_method_index.html +0 -117
  295. data/doc/index.html +1 -1
  296. data/lib/autobuild.rb +3 -0
  297. data/lib/autobuild/config.rb +87 -153
  298. data/lib/autobuild/environment.rb +4 -1
  299. data/lib/autobuild/exceptions.rb +19 -5
  300. data/lib/autobuild/import/cvs.rb +11 -10
  301. data/lib/autobuild/import/darcs.rb +32 -0
  302. data/lib/autobuild/import/svn.rb +10 -13
  303. data/lib/autobuild/import/tar.rb +3 -3
  304. data/lib/autobuild/importer.rb +5 -4
  305. data/lib/autobuild/package.rb +109 -69
  306. data/lib/autobuild/packages/autotools.rb +112 -69
  307. data/lib/autobuild/packages/genom.rb +48 -32
  308. data/lib/autobuild/packages/import.rb +6 -4
  309. data/lib/autobuild/reporting.rb +48 -19
  310. data/lib/autobuild/subcommand.rb +7 -9
  311. data/lib/autobuild/timestamps.rb +6 -5
  312. data/test/test_import_cvs.rb +7 -14
  313. data/test/test_import_svn.rb +6 -20
  314. data/test/test_import_tar.rb +3 -8
  315. data/test/test_subcommand.rb +7 -14
  316. data/test/tools.rb +5 -0
  317. metadata +336 -226
  318. data/doc/classes/Autobuild/Autotools.src/M000066.html +0 -26
  319. data/doc/classes/Autobuild/Autotools.src/M000068.html +0 -53
  320. data/doc/classes/Autobuild/Autotools.src/M000069.html +0 -28
  321. data/doc/classes/Autobuild/Autotools.src/M000070.html +0 -23
  322. data/doc/classes/Autobuild/Autotools.src/M000071.html +0 -22
  323. data/doc/classes/Autobuild/CVSImporter.src/M000048.html +0 -24
  324. data/doc/classes/Autobuild/Config.html +0 -146
  325. data/doc/classes/Autobuild/GenomModule.src/M000113.html +0 -35
  326. data/doc/classes/Autobuild/Import.src/M000046.html +0 -18
  327. data/doc/classes/Autobuild/Options.src/M000058.html +0 -27
  328. data/doc/classes/Autobuild/Package.src/M000088.html +0 -41
  329. data/doc/classes/Autobuild/Package.src/M000089.html +0 -22
  330. data/doc/classes/Autobuild/Package.src/M000090.html +0 -23
  331. data/doc/classes/Autobuild/Package.src/M000092.html +0 -24
  332. data/doc/classes/Autobuild/Package.src/M000094.html +0 -23
  333. data/doc/classes/Autobuild/SVNImporter.src/M000050.html +0 -23
  334. data/doc/classes/TC_AttrDefval.html +0 -152
  335. data/doc/classes/TC_AttrDefval.src/M000024.html +0 -31
  336. data/doc/classes/TC_AttrDefval.src/M000025.html +0 -22
  337. data/doc/classes/TC_CVSImport.src/M000028.html +0 -36
  338. data/doc/classes/TC_Subcommand.src/M000021.html +0 -31
  339. data/doc/classes/TC_TarImporter.src/M000008.html +0 -28
  340. data/lib/autobuild/config-interpolator.rb +0 -107
  341. data/lib/autobuild/options.rb +0 -22
  342. data/test/base.rb +0 -8
  343. data/test/test_attr_defval.rb +0 -29
  344. data/test/test_config.rb +0 -40
  345. data/test/test_config_interpolation.rb +0 -57
@@ -1,115 +1,158 @@
1
+ require 'pathname'
1
2
  require 'autobuild/timestamps'
2
3
  require 'autobuild/environment'
3
4
  require 'autobuild/package'
4
5
  require 'autobuild/subcommand'
5
6
 
6
7
  module Autobuild
7
- ##
8
+ def self.autotools(opts, &proc)
9
+ Autotools.new(opts, &proc)
10
+ end
11
+
12
+ #
8
13
  # ==== Handles autotools-based packages
9
14
  #
10
- # == Used programs
11
- # - aclocal, autoheader, autoconf, automake
15
+ # == Used programs (see <tt>Autobuild.programs</tt>)
16
+ # * aclocal
17
+ # * autoheader
18
+ # * autoconf
19
+ # * automake
12
20
  #
13
21
  # == Available options
14
- # - aclocal (default: true if autoconf is enabled, false otherwise) run aclocal
15
- # - autoconf (default: autodetect) run autoconf. Will be enabled if there is
16
- # +configure.in+ or +configure.ac+ in the source directory
17
- # - autoheader (default: false) run autoheader
18
- # - automake (default: autodetect) run automake. Will run automake if there is a
19
- # +Makefile.am+ in the source directory
22
+ # * aclocal (default: true if autoconf is enabled, false otherwise) run aclocal
23
+ # * autoconf (default: true)
24
+ # * autoheader (default: false) run autoheader
25
+ # * automake (default: autodetect) run automake. Will run automake if there is a
26
+ # +Makefile.am+ in the source directory
20
27
  #
21
28
  class Autotools < Package
22
- factory :autotools, self
29
+ attr_accessor :using
30
+ attr_accessor :configureflags
31
+ class << self
32
+ attr_reader :builddir
33
+ def builddir=(new)
34
+ raise ConfigException, "absolute builddirs are not supported" if (Pathname.new(new).absolute?)
35
+ raise ConfigException, "builddir must be non-nil and non-empty" if (new.nil? || new.empty?)
36
+ @builddir = new
37
+ end
38
+ end
39
+ @builddir = 'build'
40
+
41
+ def builddir=(new)
42
+ raise ConfigException, "absolute builddirs are not supported" if (Pathname.new(new).absolute?)
43
+ raise ConfigException, "builddir must be non-empty" if new.empty?
44
+ @builddir = new
45
+ end
46
+ # Returns the absolute builddir
47
+ def builddir; File.expand_path(@builddir || Autotools.builddir, srcdir) end
48
+
49
+ # Build stamp
50
+ # This returns the name of the file which marks when the package has been
51
+ # successfully built for the last time. The path is absolute
52
+ def buildstamp; "#{builddir}/#{name}-#{STAMPFILE}" end
23
53
 
24
- attr_reader :builddir
54
+ def initialize(options)
55
+ @using = Hash.new
25
56
 
26
- DefaultOptions = {
27
- :autoheader => false,
28
- :aclocal => nil,
29
- :autoconf => nil,
30
- :automake => nil,
31
- :builddir => 'build'
32
- }
57
+ super
33
58
 
34
- def buildstamp
35
- "#{builddir}/#{target}-#{STAMPFILE}"
59
+ Autobuild.update_environment(prefix)
36
60
  end
37
61
 
38
- def initialize(target, options)
39
- options = DefaultOptions.merge(options) { |key, old, new|
40
- (new.nil? || (new.respond_to?(:empty) && new.empty?)) ? old : new
41
- }
42
- super(target, options)
62
+ def use(*programs)
63
+ programs = *programs
64
+ if !programs.kind_of?(Hash)
65
+ programs = Array[*programs].inject({}) do |programs, spec|
66
+ programs[spec.first] = spec.last
67
+ programs
68
+ end
69
+ end
70
+ programs.each do |name, opt|
71
+ using[name.to_sym] = opt
72
+ end
43
73
 
44
- @builddir = options[:builddir]
45
- raise ConfigException, "autotools packages need a non-empty builddir" if (@builddir.nil? || @builddir.empty?)
46
- raise ConfigException, "absolute builddirs are unsupported" if (Pathname.new(@builddir).absolute?)
47
- @builddir = File.expand_path(builddir, srcdir)
74
+ nil
48
75
  end
49
76
 
50
- def prepare
51
- regen_targets
77
+ def depends_on(*packages)
78
+ super
79
+ stamps = packages.collect { |p| Package[p.to_s].installstamp }
80
+ #file "#{builddir}/config.status" => stamps
81
+ file buildstamp => stamps
82
+ end
83
+
84
+ def ensure_dependencies_installed
85
+ dependencies.each do |pkg|
86
+ Rake::Task[Package[pkg].installstamp].invoke
87
+ end
88
+ end
52
89
 
53
- file "#{builddir}/config.status" => "#{srcdir}/configure" do
90
+ def prepare
91
+ file "#{builddir}/config.status" => regen do
92
+ ensure_dependencies_installed
54
93
  configure
55
94
  end
56
95
 
57
96
  source_tree srcdir, builddir
58
97
  file buildstamp => [ srcdir, "#{builddir}/config.status" ] do
98
+ ensure_dependencies_installed
59
99
  build
60
100
  end
61
101
 
62
- if !dependencies.empty?
63
- file buildstamp => dependencies
64
- file srcdir => dependencies
65
- end
66
-
67
102
  file installstamp => buildstamp do
68
103
  install
69
104
  Autobuild.update_environment(prefix)
70
105
  end
71
- Autobuild.update_environment(prefix)
72
106
  end
73
107
 
74
- def regen_targets
108
+
109
+ private
110
+ # Adds a target to rebuild the autotools environment
111
+ def regen
75
112
  conffile = "#{srcdir}/configure"
76
- if File.exists?("#{conffile}.ac")
77
- file conffile => [ "#{conffile}.ac" ]
78
- elsif File.exists?("#{conffile}.in")
79
- file conffile => [ "#{conffile}.in" ]
113
+ if confext = %w{.ac .in}.find { |ext| File.exists?("#{conffile}#{ext}") }
114
+ file conffile => "#{conffile}#{confext}"
80
115
  else
81
- raise PackageException.new(target), "neither configure.ac nor configure.in present in #{srcdir}"
116
+ raise PackageException.new(name), "neither configure.ac nor configure.in present in #{srcdir}"
82
117
  end
118
+
83
119
  file conffile do
84
120
  Dir.chdir(srcdir) {
85
- $PROGRAMS[:aclocal] ||= 'aclocal'
86
- $PROGRAMS[:autoconf] ||= 'autoconf'
87
- $PROGRAMS[:autoheader] ||= 'autoheader'
88
- $PROGRAMS[:automake] ||= 'automake'
121
+ if using[:autogen].nil?
122
+ using[:autogen] = %w{autogen autogen.sh}.find { |f| File.exists?(f) }
123
+ end
89
124
 
90
- if @options[:autogen]
91
- Subprocess.run(target, 'configure', File.expand_path(@options[:autogen]))
125
+ if using[:autogen]
126
+ Subprocess.run(name, 'configure', File.expand_path(using[:autogen]))
92
127
  else
93
128
  # Autodetect autoconf/aclocal/automake
94
- if @options[:autoconf].nil?
95
- @options[:autoconf] =
96
- File.exists?(File.join(srcdir, 'configure.in')) ||
97
- File.exists?(File.join(srcdir, 'configure.ac'))
98
- end
99
- @options[:aclocal] ||= @options[:autoconf]
100
- if @options[:automake].nil?
101
- @options[:automake] = File.exists?(File.join(srcdir, 'Makefile.am'))
129
+ #
130
+ # Let the user disable the use of autoconf explicitely by using 'false'.
131
+ # 'nil' means autodetection
132
+ using[:autoconf] = true if using[:autoconf].nil?
133
+ using[:aclocal] = using[:autoconf] if using[:aclocal].nil?
134
+ if using[:automake].nil?
135
+ using[:automake] = File.exists?(File.join(srcdir, 'Makefile.am'))
102
136
  end
103
137
 
104
- Subprocess.run(target, 'configure', $PROGRAMS[:aclocal]) if @options[:aclocal]
105
- Subprocess.run(target, 'configure', $PROGRAMS[:autoconf]) if @options[:autoconf]
106
- Subprocess.run(target, 'configure', $PROGRAMS[:autoheader]) if @options[:autoheader]
107
- Subprocess.run(target, 'configure', $PROGRAMS[:automake]) if @options[:automake]
138
+ [ :aclocal, :autoconf, :autoheader, :automake ].each do |tool|
139
+ if tool_flag = using[tool]
140
+ tool_program = if tool_flag.respond_to?(:to_str)
141
+ tool_flag.to_str
142
+ else; Autobuild.tool(tool)
143
+ end
144
+
145
+ Subprocess.run(name, 'configure', tool_program)
146
+ end
147
+ end
108
148
  end
109
149
  }
110
150
  end
151
+
152
+ return conffile
111
153
  end
112
154
 
155
+ # Configure the builddir directory before starting make
113
156
  def configure
114
157
  if File.exists?(builddir) && !File.directory?(builddir)
115
158
  raise ConfigException, "#{builddir} already exists but is not a directory"
@@ -118,25 +161,25 @@ module Autobuild
118
161
  FileUtils.mkdir_p builddir if !File.directory?(builddir)
119
162
  Dir.chdir(builddir) {
120
163
  command = [ "#{srcdir}/configure", "--no-create", "--prefix=#{prefix}" ]
121
- command |= @options[:configureflags].to_a
164
+ command |= Array[*configureflags]
122
165
 
123
- Subprocess.run(target, 'configure', *command)
166
+ Subprocess.run(name, 'configure', *command)
124
167
  }
125
168
  end
126
169
 
170
+ # Do the build in builddir
127
171
  def build
128
172
  Dir.chdir(builddir) {
129
- Subprocess.run(target, 'build', './config.status')
130
- $PROGRAMS['make'] ||= 'make'
131
- Subprocess.run(target, 'build', $PROGRAMS['make'])
173
+ Subprocess.run(name, 'build', './config.status')
174
+ Subprocess.run(name, 'build', Autobuild.tool(:make))
132
175
  }
133
176
  touch_stamp(buildstamp)
134
177
  end
135
178
 
179
+ # Install the result in prefix
136
180
  def install
137
181
  Dir.chdir(builddir) {
138
- make = ($PROGRAMS['make'] or 'make')
139
- Subprocess.run(target, 'install', make, 'install')
182
+ Subprocess.run(name, 'install', Autobuild.tool(:make), 'install')
140
183
  }
141
184
  touch_stamp(installstamp)
142
185
  end
@@ -2,26 +2,44 @@ require 'autobuild/packages/autotools'
2
2
  require 'open3'
3
3
 
4
4
  module Autobuild
5
+ def self.genom(opts, &proc)
6
+ GenomModule.new(opts, &proc)
7
+ end
8
+
5
9
  class GenomModule < Autotools
10
+ attr_accessor :genomflags
11
+
12
+ def initialize(*args, &config)
13
+ @genomflags = []
14
+ super
15
+
16
+ use :autogen => 'autogen'
17
+ end
18
+
19
+ # Called before running the rake tasks and
20
+ # after all imports have been made
6
21
  def prepare
22
+
7
23
  super
8
24
  get_requires
9
25
  get_provides
10
26
  end
11
- def genomstamp; "#{srcdir}/.genom/genom-stamp" end
12
27
 
28
+ # The file touched by genom on successful generation
29
+ def genomstamp; File.join(srcdir, '.genom', 'genom-stamp') end
30
+
31
+ # Extract the cpp options from the genom options
13
32
  def cpp_options
14
- @options[:genomflags].to_a.find_all { |opt| opt =~ /^-D/ }
33
+ [*genomflags].find_all { |opt| opt =~ /^-D/ }
15
34
  end
16
35
 
36
+ # Extracts dependencies using the requires: field in the .gen file
17
37
  def get_requires
18
- cpp = ($PROGRAMS['cpp'] || 'cpp')
19
- Open3.popen3("#{cpp} #{cpp_options.join(" ")} #{srcdir}/#{target}.gen") do |cin, out, err|
38
+ cpp = Autobuild.tool(:cpp)
39
+ Open3.popen3("#{cpp} #{cpp_options.join(" ")} #{srcdir}/#{name}.gen") do |cin, out, err|
20
40
  out.each_line { |line|
21
41
  if line =~ /^\s*requires\s*:\s*([\w\-]+(?:\s*,\s*[\w\-]+)*);/
22
- $1.split(/, /).each { |name|
23
- depends_on name
24
- }
42
+ $1.split(/, /).each { |name| depends_on name }
25
43
  elsif line =~ /^\s*requires/
26
44
  puts "failed to match #{line}"
27
45
  end
@@ -29,46 +47,44 @@ module Autobuild
29
47
  end
30
48
  end
31
49
 
32
- def depends_on(name)
33
- super
34
- file genomstamp => Package.name2target(name)
35
- end
36
-
50
+ # Alias this package to the ones defined in the EXTRA_PKGCONFIG
51
+ # flag in configure.ac.user
37
52
  def get_provides
38
- File.open("#{srcdir}/configure.ac.user") do |f|
53
+ File.open(File.join(srcdir, 'configure.ac.user')) do |f|
39
54
  f.each_line { |line|
40
55
  if line =~ /^\s*EXTRA_PKGCONFIG\s*=\s*"?([\w\-]+(?:\s+[\w\-]+)*)"?/
41
- $1.split(/\s+/).each { |pkg|
42
- provides pkg
43
- }
56
+ $1.split(/\s+/).each { |pkg| provides pkg }
44
57
  end
45
58
  }
46
59
  end
47
60
  end
48
61
 
62
+ def depends_on(*packages)
63
+ super
64
+ file genomstamp => packages.map { |p| Package[p].installstamp }
65
+ end
49
66
 
50
- def regen_targets
51
- cmdline = [ 'genom', target ] | @options[:genomflags].to_a
67
+ def regen
68
+ cmdline = [ 'genom', "#{name}.gen", *genomflags ]
52
69
 
53
70
  file buildstamp => genomstamp
54
- file genomstamp => [ :genom, "#{srcdir}/#{target}.gen" ] do
55
- Dir.chdir(srcdir) {
56
- Subprocess.run(target, 'genom', *cmdline)
57
- }
71
+ file genomstamp => srcdir do
72
+ Dir.chdir(srcdir) do
73
+ Subprocess.run(name, 'genom', *cmdline)
74
+ end
75
+ end
76
+ if Package['genom']
77
+ file genomstamp => Package['genom'].installstamp
58
78
  end
59
79
 
60
- acuser = "#{srcdir}/configure.ac.user"
61
- if File.exists?(acuser)
62
- file "#{srcdir}/configure" => acuser do
63
- # configure does not depend on the .gen file
64
- # since the generation takes care of rebuilding configure
65
- # if .gen has changed
66
- Subprocess.run(target, 'genom', File.expand_path('autogen'))
67
- end
80
+ acuser = File.join(srcdir, "configure.ac.user")
81
+ file File.join(srcdir, 'configure') => acuser do
82
+ # configure does not depend on the .gen file
83
+ # since the generation takes care of rebuilding configure
84
+ # if .gen has changed
85
+ Dir.chdir(srcdir) { Subprocess.run(name, 'genom', File.expand_path('autogen')) }
68
86
  end
69
87
  end
70
-
71
- factory :genom, self
72
88
  end
73
89
  end
74
90
 
@@ -2,20 +2,22 @@ require 'autobuild/timestamps'
2
2
  require 'autobuild/package'
3
3
 
4
4
  module Autobuild
5
+ def self.import(spec, &proc)
6
+ ImporterPackage.new(spec, &proc)
7
+ end
8
+
5
9
  class ImporterPackage < Package
6
10
  def installstamp
7
11
  "#{srcdir}/#{STAMPFILE}"
8
12
  end
9
- def initialize(target, options)
10
- super(target, options)
13
+ def initialize(target)
14
+ super
11
15
  source_tree srcdir, installstamp
12
16
  file installstamp => srcdir do
13
17
  touch_stamp installstamp
14
18
  end
15
19
  end
16
20
  def prepare; end
17
-
18
- factory :import, ImporterPackage
19
21
  end
20
22
  end
21
23
 
@@ -4,12 +4,20 @@ require 'net/smtp'
4
4
  require 'socket'
5
5
  require 'etc'
6
6
 
7
+ require 'autobuild/config'
7
8
  require 'autobuild/exceptions'
8
9
 
9
10
  module Autobuild
10
- class Reporting
11
+ ## The reporting module provides the framework
12
+ # to run commands in autobuild and report errors
13
+ # to the user
14
+ #
15
+ # It does not use a logging framework like Log4r, but it should ;-)
16
+ module Reporting
11
17
  @@reporters = Array.new
12
18
 
19
+ ## Run a block and report known exception
20
+ # If an exception is fatal, the program is terminated using exit()
13
21
  def self.report
14
22
  begin
15
23
  yield
@@ -20,28 +28,38 @@ module Autobuild
20
28
  end
21
29
  end
22
30
 
31
+ ## Reports a successful build to the user
23
32
  def self.success
24
33
  @@reporters.each do |rep| rep.success end
25
34
  end
26
35
 
36
+ ## Reports that the build failed to the user
27
37
  def self.error(error)
28
38
  @@reporters.each do |rep| rep.error(error) end
29
39
  end
30
40
 
41
+ ## Add a new reporter
31
42
  def self.<<(reporter)
32
43
  @@reporters << reporter
33
44
  end
34
45
 
46
+ def self.each_reporter(&iter)
47
+ @@reporters.each(&iter)
48
+ end
49
+
50
+ ## Iterate on all log files
35
51
  def self.each_log(&iter)
36
- Dir.glob("#{$LOGDIR}/*.log", &iter)
52
+ Dir.glob("#{Autobuild.logdir}/*.log", &iter)
37
53
  end
38
54
  end
39
55
 
56
+ ## Base class for reporters
40
57
  class Reporter
41
58
  def error(error); end
42
59
  def success; end
43
60
  end
44
61
 
62
+ ## Display using stdout
45
63
  class StdoutReporter < Reporter
46
64
  def error(error)
47
65
  puts "Build failed: #{error}"
@@ -51,6 +69,7 @@ module Autobuild
51
69
  end
52
70
  end
53
71
 
72
+ ## Report by mail
54
73
  class MailReporter < Reporter
55
74
  def default_mail
56
75
  Etc::endpwent
@@ -62,29 +81,36 @@ module Autobuild
62
81
  "#{pwent.name}@#{Socket.gethostname}"
63
82
  end
64
83
 
84
+ attr_reader :from_email, :to_email, :smtp_hostname, :smtp_port, :subject, :only_errors
65
85
  def initialize(config)
66
- @from = (config[:from] || default_mail)
67
- @to = (config[:to] || default_mail)
68
- @smtp = (config[:smtp] || "localhost" )
69
- @port = Integer(config[:port] || Socket.getservbyname('smtp'))
86
+ @from_email = (config[:from] || default_mail)
87
+ @to_email = (config[:to] || default_mail)
88
+ @subject = (config[:subject] || "Build %result% on #{Socket.gethostname} at %time%")
89
+ @only_errors = config[:only_errors]
90
+ @smtp_hostname = (config[:smtp] || "localhost" )
91
+ @smtp_port = Integer(config[:port] || Socket.getservbyname('smtp'))
70
92
  end
71
93
 
72
94
  def error(error)
73
95
  if error.mail?
74
- send_mail("Build failed", error.to_s)
96
+ send_mail("failed", error.to_s)
75
97
  end
76
98
  end
77
99
 
78
100
  def success
79
- send_mail("Build success", "finished successfully at #{Time.now}")
101
+ unless only_errors
102
+ send_mail("success")
103
+ end
80
104
  end
81
105
 
82
- def send_mail(subject, body)
106
+ def send_mail(result, body = "")
83
107
  mail = RMail::Message.new
84
108
  mail.header.date = Time.now
85
- mail.header.from = @from
86
- mail.header.to = @to
87
- mail.header.subject = subject
109
+ mail.header.from = from_email
110
+ mail.header.subject = subject.
111
+ gsub('%result%', result).
112
+ gsub('%time%', Time.now.to_s).
113
+ gsub('%hostname%', Socket.gethostname)
88
114
 
89
115
  part = RMail::Message.new
90
116
  part.header.set('Content-Type', 'text/plain')
@@ -96,21 +122,24 @@ module Autobuild
96
122
  mail.add_file(file)
97
123
  end
98
124
 
99
- # Send the mail
100
- smtp = Net::SMTP.new(@smtp, @port)
101
- smtp.start {
102
- smtp.send_mail RMail::Serialize.write('', mail), @from, @to
103
- }
125
+ # Send the mails
126
+ smtp = Net::SMTP.new(smtp_hostname, smtp_port)
127
+ smtp.start {
128
+ to_email.each do |email|
129
+ mail.header.to = email
130
+ smtp.send_mail RMail::Serialize.write('', mail), from_email, email
131
+ end
132
+ }
104
133
 
105
134
  # Notify the sending
106
- puts "Sent notification mail to #{@to} with source #{@from}"
107
-
135
+ puts "Sent notification mail to #{to_email} with source #{from_email}"
108
136
  end
109
137
  end
110
138
  end
111
139
 
112
140
  module RMail
113
141
  class Message
142
+ ## Attachs a file to a message
114
143
  def add_file(path, content_type='text/plain')
115
144
  part = RMail::Message.new
116
145
  part.header.set('Content-Type', content_type)