ratch 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. data/bin/ratch +60 -47
  2. data/bin/ratch-find +21 -0
  3. data/demo/{README → XR} +0 -0
  4. data/demo/task/stats +0 -2
  5. data/doc/images/clipboard.jpg +0 -0
  6. data/doc/images/clipboard2.png +0 -0
  7. data/doc/images/milles-tn.jpg +0 -0
  8. data/doc/images/mints.png +0 -0
  9. data/doc/images/ratch2.png +0 -0
  10. data/doc/images/ruby-sm.png +0 -0
  11. data/doc/images/silver.gif +0 -0
  12. data/doc/images/toolbox.jpg +0 -0
  13. data/doc/index.html +181 -0
  14. data/doc/notes/original.rb +308 -0
  15. data/doc/rdoc/classes/Array.html +194 -0
  16. data/doc/rdoc/classes/Dir.html +317 -0
  17. data/doc/rdoc/classes/Hash.html +217 -0
  18. data/doc/rdoc/classes/Ratch.html +201 -0
  19. data/doc/rdoc/classes/Ratch/ArgvUtils.html +173 -0
  20. data/doc/rdoc/classes/Ratch/ArgvUtils/Ext.html +285 -0
  21. data/doc/rdoc/classes/Ratch/BatchFile.html +207 -0
  22. data/doc/rdoc/classes/Ratch/BatchManager.html +250 -0
  23. data/doc/rdoc/classes/Ratch/BatchScript.html +127 -0
  24. data/doc/rdoc/classes/Ratch/Batchable.html +373 -0
  25. data/doc/rdoc/classes/Ratch/Build.html +321 -0
  26. data/doc/rdoc/classes/Ratch/BuildManager.html +319 -0
  27. data/doc/rdoc/classes/Ratch/Buildable.html +202 -0
  28. data/doc/rdoc/classes/Ratch/ConfigUtils.html +281 -0
  29. data/doc/rdoc/classes/Ratch/ConsoleUtils.html +189 -0
  30. data/doc/rdoc/classes/Ratch/EmailUtils.html +209 -0
  31. data/doc/rdoc/classes/Ratch/FileUtils.html +674 -0
  32. data/doc/rdoc/classes/Ratch/GeneralOptions.html +430 -0
  33. data/doc/rdoc/classes/Ratch/Task.html +201 -0
  34. data/doc/rdoc/classes/Ratch/TaskManager.html +330 -0
  35. data/doc/rdoc/classes/Ratch/Taskable.html +231 -0
  36. data/doc/rdoc/classes/Ratch/UploadUtils.html +566 -0
  37. data/doc/rdoc/created.rid +1 -0
  38. data/doc/rdoc/files/COPYING.html +1003 -0
  39. data/{demo/doc → doc}/rdoc/files/README.html +36 -5
  40. data/doc/rdoc/files/lib/ratch/argvutils_rb.html +131 -0
  41. data/doc/rdoc/files/lib/ratch/batch_rb.html +155 -0
  42. data/doc/rdoc/files/lib/ratch/batchable_rb.html +131 -0
  43. data/doc/rdoc/files/lib/ratch/batchfile_rb.html +148 -0
  44. data/doc/rdoc/files/lib/ratch/buildable_rb.html +131 -0
  45. data/doc/rdoc/files/lib/ratch/consoleutils_rb.html +131 -0
  46. data/{demo/doc/rdoc/files/lib/foo/foo_rb.html → doc/rdoc/files/lib/ratch/emailutils_rb.html} +35 -41
  47. data/doc/rdoc/files/lib/ratch/facets/multiglob_rb.html +137 -0
  48. data/doc/rdoc/files/lib/ratch/fileutils_rb.html +139 -0
  49. data/doc/rdoc/files/lib/ratch/options_rb.html +131 -0
  50. data/doc/rdoc/files/lib/ratch/taskable_rb.html +131 -0
  51. data/doc/rdoc/files/lib/ratch/uploadutils_rb.html +150 -0
  52. data/doc/rdoc/fr_class_index.html +48 -0
  53. data/doc/rdoc/fr_file_index.html +41 -0
  54. data/doc/rdoc/fr_method_index.html +133 -0
  55. data/{demo/doc → doc}/rdoc/index.html +1 -1
  56. data/{demo/doc → doc}/rdoc/rdoc-style.css +0 -0
  57. data/doc/scrap/flexihead-flip.jpg +0 -0
  58. data/doc/scrap/flexihead.jpg +0 -0
  59. data/doc/scrap/head1.jpg +0 -0
  60. data/doc/scrap/ratch.jpg +0 -0
  61. data/doc/scrap/ratch1.png +0 -0
  62. data/doc/scrap/ratch2.jpg +0 -0
  63. data/doc/scrap/ratch3.png +0 -0
  64. data/doc/scrap/red-ratch.jpg +0 -0
  65. data/doc/scrap/redratchet.jpg +0 -0
  66. data/doc/scrap/ruby-kit/ruby.png +0 -0
  67. data/doc/scrap/scrap.red +256 -0
  68. data/doc/sitemap.yaml +10 -0
  69. data/doc/siteparts/index.red +100 -0
  70. data/doc/siteparts/layout.rhtml +56 -0
  71. data/doc/siteparts/tutorial.red +578 -0
  72. data/doc/style.css +112 -0
  73. data/doc/tutorial.html +722 -0
  74. data/lib/ratch/batch.rb +417 -30
  75. data/lib/ratch/{argvutils.rb → batch/argvutils.rb} +27 -19
  76. data/lib/ratch/batch/build.rb +95 -0
  77. data/lib/ratch/{consoleutils.rb → batch/consoleutils.rb} +0 -0
  78. data/lib/ratch/{emailutils.rb → batch/emailutils.rb} +0 -0
  79. data/lib/ratch/{fileutils.rb → batch/fileutils.rb} +32 -32
  80. data/lib/ratch/{options.rb → batch/options.rb} +0 -0
  81. data/lib/ratch/batch/task.rb +43 -0
  82. data/lib/ratch/manager.rb +34 -0
  83. data/lib/ratch/project/information.rb +257 -0
  84. data/lib/ratch/project/package.rb +82 -0
  85. data/lib/ratch/project/project.rb +531 -0
  86. data/lib/ratch/project/release.rb +112 -0
  87. data/lib/ratch/support/filetest.rb +29 -0
  88. data/lib/ratch/support/setuputils.rb +124 -0
  89. data/lib/ratch/support/signiture.rb +252 -0
  90. data/lib/ratch/support/stage.rb +292 -0
  91. data/lib/ratch/toolset/ruby/pack/gem +85 -0
  92. data/lib/ratch/toolset/ruby/pack/tgz +85 -0
  93. data/lib/ratch/toolset/ruby/{crosstest → test/crosstest} +0 -0
  94. data/lib/ratch/toolset/ruby/{extest → test/extest} +0 -0
  95. data/lib/ratch/toolset/ruby/{isotest → test/isotest} +0 -0
  96. data/lib/ratch/toolset/ruby/{load → test/load} +0 -0
  97. data/lib/ratch/toolset/ruby/{loadtest → test/loadtest} +0 -0
  98. data/lib/ratch/toolset/ruby/{syntax → test/syntax} +0 -0
  99. data/lib/ratch/toolset/ruby/{test → test/test} +0 -0
  100. data/log/{history.rd → history} +6 -0
  101. data/log/{todo.rd → todo} +0 -0
  102. data/meta/MANIFEST +52 -36
  103. data/meta/ROLLRC +2 -0
  104. data/meta/icli.yaml +16 -0
  105. data/meta/{ratch-0.2.3.roll → project.yaml} +1 -7
  106. data/task/release +12 -0
  107. data/{lib/ratch → work/old}/batchfile.rb +0 -0
  108. data/work/project-old.rb +67 -0
  109. data/work/scrap/install +89 -0
  110. data/work/scrap/install.0 +49 -0
  111. data/work/scrap/install.1 +63 -0
  112. data/work/scrap/ludo +25 -0
  113. data/work/scrap/oldtaskable.rb +573 -0
  114. data/work/scrap/ratch.man +39 -0
  115. data/work/scrap/taskable-simple.rb +42 -0
  116. data/work/scrap/taskable.rb +120 -0
  117. metadata +170 -72
  118. data/demo/doc/rdoc/created.rid +0 -1
  119. data/demo/doc/rdoc/fr_class_index.html +0 -26
  120. data/demo/doc/rdoc/fr_file_index.html +0 -28
  121. data/demo/doc/rdoc/fr_method_index.html +0 -27
  122. data/demo/task/config.yaml +0 -2
  123. data/lib/ratch/batchable.rb +0 -169
  124. data/lib/ratch/buildable.rb +0 -182
  125. data/lib/ratch/configutils.rb +0 -132
  126. data/lib/ratch/facets/multiglob.rb +0 -160
  127. data/lib/ratch/taskable.rb +0 -152
  128. data/log/recent.rd +0 -8
  129. data/task/config.yaml +0 -10
data/bin/ratch CHANGED
@@ -1,55 +1,68 @@
1
1
  #! /usr/bin/ruby1.8
2
2
 
3
- #require 'shellwords'
4
- require 'rbconfig' # replace with facets/rbsystem in future ?
5
- #require 'ratch/batchfile'
6
- require 'ratch/batch'
7
-
8
- module Ratch
9
-
10
- class RatchCommand
11
-
12
- # Quick start.
13
-
14
- def self.start(file)
15
- new.run(file)
16
- end
17
-
18
- # Run task.
19
-
20
- def run(file)
21
- if file
22
- BatchFile.new(file).call
23
- else
24
- help
25
- end
26
- end
27
-
28
- # Dispaly help.
29
-
30
- def help
31
- help = <<-END
32
- USAGE:
33
-
34
- ratch [options] <taskfile>
35
-
36
- OPTIONS:
37
-
38
- --dryrun --nohram
39
-
40
- --trace
41
-
42
- --debug
43
- END
44
- puts help.gsub(/^\s+/, '')
3
+ if ARGV[0] == '-s'
4
+ require 'ratch/manager'
5
+ manager = Ratch::Manager.new
6
+ file = ARGV[1]
7
+ if file
8
+ # run tool
9
+ if tool = manager.tool?(file)
10
+ require 'ratch/batch'
11
+ load(tool)
12
+ else
13
+ puts "no tool -- #{file}"
45
14
  end
46
-
15
+ else
16
+ puts manager.toolset.join("\n")
47
17
  end
18
+ elsif ARGV.empty?
19
+ # TODO read stdin for ratch script
48
20
 
49
-
21
+ else
22
+ require 'ratch/batch'
23
+ load($0 = ARGV.shift)
50
24
  end
51
25
 
52
- load($0 = ARGV.shift)
53
-
54
- #Ratch::RatchCommand.start(ARGV.shift)
55
26
 
27
+ # module Ratch
28
+ #
29
+ # class RatchCommand
30
+ #
31
+ # # Quick start.
32
+ #
33
+ # def self.start(file)
34
+ # new.run(file)
35
+ # end
36
+ #
37
+ # # Run task.
38
+ #
39
+ # def run(file)
40
+ # if file
41
+ # BatchFile.new(file).call
42
+ # else
43
+ # help
44
+ # end
45
+ # end
46
+ #
47
+ # # Dispaly help.
48
+ #
49
+ # def help
50
+ # help = <<-END
51
+ # USAGE:
52
+ #
53
+ # ratch [options] <taskfile>
54
+ #
55
+ # OPTIONS:
56
+ #
57
+ # --dryrun --nohram
58
+ #
59
+ # --trace
60
+ #
61
+ # --debug
62
+ # END
63
+ # puts help.gsub(/^\s+/, '')
64
+ # end
65
+ #
66
+ # end
67
+ #
68
+ # end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ name = ARGV[0]
4
+
5
+ unless name
6
+ puts "file path required"
7
+ exit -1
8
+ end
9
+
10
+ matches = []
11
+ paths = ENV['ROLL_PATH'].split(/[:;]/)
12
+ paths.each do |path|
13
+ matches = Dir.glob(File.join(path,'{*,*/*,*/*/*,*/*/*/*}',name)) # searches up to four layers deep.
14
+ end
15
+ matches = matches.select{ |f| File.executable?(f) }
16
+ matches = matches.sort{ |a,b| File.mtime(b) <=> File.mtime(a) }
17
+
18
+ matches.each do |f|
19
+ puts "#{File.mtime(f)} #{f}"
20
+ end
21
+
File without changes
@@ -1,6 +1,4 @@
1
1
  #!/usr/bin/env ratch
2
2
 
3
- p "here"
4
-
5
3
  load('ratch/toolset/ruby/stats')
6
4
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,181 @@
1
+ <html>
2
+ <head>
3
+ <title>Ratch</title>
4
+ <link href="style.css" rel="stylesheet" type="text/css"/>
5
+ <LINK REL="SHORTCUT ICON" HREF="images/ratch1.png"/>
6
+ </head>
7
+ <body>
8
+
9
+ <div class="promenu">
10
+ ProUtils :: <a href="http://proutils.rubyforge.org/">Home</a> &middot;
11
+ <a href="http://rubyforge.org/news/?group_id=4438">News</a> &middot;
12
+ <a href="http://rubyforge.org/frs/?group_id=4438">Download</a> &middot;
13
+ <a href="http://rubyforge.org/mail/?group_id=4438">Mail</a> &middot;
14
+ <a href="http://rubyforge.org/forum/?group_id=4438">Forum</a> &middot;
15
+ <a href="http://rubyforge.org/scm/?group_id=4438">Source</a> &middot;
16
+ <a href="http://rubyforge.org/tracker/?group_id=4438">Ticket</a>
17
+ </div>
18
+
19
+ <div class="container">
20
+
21
+ <div class="banner">
22
+ RATCH &nbsp;<img src="images/ruby-sm.png"/>
23
+ </div>
24
+
25
+ <div class="menu">
26
+ <a href="index.html">Welcome</a>
27
+ <a href="tutorial.html">Tutorial</a>
28
+ <a href="rdoc/index.html">Library</a>
29
+ </div>
30
+
31
+ <div class="ad">
32
+ <script type="text/javascript"><!--
33
+ google_ad_client = "pub-1126154564663472";
34
+ //RATCH 728x90, 11/8/07
35
+ google_ad_slot = "6500283279";
36
+ google_ad_width = 728;
37
+ google_ad_height = 90;
38
+ //--></script>
39
+ <script type="text/javascript"
40
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
41
+ </script>
42
+ </div>
43
+
44
+ <div class="content">
45
+ <h1 class="top">Welcome</h1>
46
+
47
+
48
+ <p>Ratch is a Ruby-based build tool in the linage of Rake and Reap, but distinguishes
49
+ itself in it&#8217;s closer adherence to the <span class="caps">UNIX</span>-way in that Ratch &#8220;targets&#8221; are independent
50
+ scripts. In fact, the name &#8220;ratch&#8221; derives from the phrase
51
+ &#8220;<u>R</u>uby b<u>atch</u> file&#8221;.</p>
52
+
53
+
54
+ <p>Ratch is part of the ProUtils collection. In particular Ratch scripts might take
55
+ advantage of the <a href="http://proutils.rubyforge.org/box">Box</a> system and can easily be
56
+ copied and updated via <a href="http://proutils.rubyforge.org/mint">Mint</a>.</p>
57
+
58
+
59
+ <h1>News</h1>
60
+
61
+
62
+ <h3 class="date">2007-11-11</h3>
63
+
64
+
65
+ <h2>From Special to Main</h2>
66
+
67
+
68
+ <p>Ratch is really starting to come together. And I dare say that&#8217;s no small statement.
69
+ I started development many, many months ago with only a hunch that the basic
70
+ design would be effective&#8212;was it even possible to effectively bridge the gap
71
+ between the shell and script? We may never have found out. Implementation has been
72
+ challenge at times and more than once a little voice in the back of my head would
73
+ say &#8220;just use Rake&#8221;. But if I am anything, it is determined. I really believe
74
+ in the underlying design of this project&#8212;as hard as it might have been get &#8220;right&#8221;.</p>
75
+
76
+
77
+ <p>But &#8220;right&#8221; is where I may finally be. Granted I&#8217;m still worried about tricky
78
+ dependency loops, but that&#8217;s a rare bird and I have yet to see it happen in practice.
79
+ And, sure there&#8217;s areas of the code that could just use some general spit-and-shine.
80
+ But in practice, it&#8217;s really starting to look good.</p>
81
+
82
+
83
+ <p>For instance, this evening I transitioned from executing all ratch files in an
84
+ instance of a special runner class (a subclass of Module), to executing
85
+ in top-level &#8216;main&#8217; space. This simplifies the start up code a fair bit and now allows
86
+ <code>load()</code> to work for ratch files just as it does for ruby files&#8212;where as before
87
+ I had to create a special #import method to load the ratch file into the special object.
88
+ The benefit of this change is that one no longer <em>has</em> to copy any of the pre-made tools
89
+ distributed with ratch. Instead one can just depend on them like normal code.
90
+ For instance, my projects tool/stats file looks like this:</p>
91
+
92
+
93
+ <pre>
94
+ #!/usr/bin/env ratch
95
+ # code stats
96
+ load('ratch/toolset/ruby/stats')
97
+ </pre>
98
+
99
+ <p>Of course if you want to make project specific modifications you can still grab a copy
100
+ and have at it.</p>
101
+
102
+
103
+ <h1>Installation</h1>
104
+
105
+
106
+ <p>Via RubyGems:</p>
107
+
108
+
109
+ <pre><code>$ gem install ratch</code></pre>
110
+
111
+
112
+ <p>With the source code:</p>
113
+
114
+
115
+ <pre><code>$ tar -xzf ratch-x.y.z.tar.gz
116
+ $ cd ratch-x.y.z
117
+ $ sudo task/setup</code></pre>
118
+
119
+
120
+ <p>Microsoft Windows users, you&#8217;ll have to use &#8216;<code>ruby task/setup</code>&#8217; instead.</p>
121
+
122
+
123
+ <h1>Development</h1>
124
+
125
+
126
+ <p>Ratch is part of the <a href="http://protuils.rubyforge.org">ProUtils</a> project.</p>
127
+
128
+
129
+ <h2>Anonymous Subversion Access</h2>
130
+
131
+
132
+ <p>This project&#8217;s <span class="caps">SVN</span> repository can be checked out through anonymous access with the following command(s).</p>
133
+
134
+
135
+ <pre><code>svn checkout svn://rubyforge.org/var/svn/proutils/ratch
136
+ svn checkout http://proutils.rubyforge.org/svn/ratch</code></pre>
137
+
138
+
139
+ <h2>Developer Subversion Access via <span class="caps">SSH</span></h2>
140
+
141
+
142
+ <p>Only project developers can access the <span class="caps">SVN</span> tree via this method. <span class="caps">SSH</span> must be installed on your client machine. Substitute developername with the proper values. Enter your site password when prompted.</p>
143
+
144
+
145
+ <pre><code>svn checkout svn+ssh://developername@rubyforge.org/var/svn/proutils/ratch</code></pre>
146
+
147
+
148
+ <h1>Copying</h1>
149
+
150
+
151
+ <p>Ratch&#8212;Ruby-based Batch Files</p>
152
+
153
+
154
+ <p>Copyright &copy; 2007 &Psi; &Tau; Corporation</p>
155
+
156
+
157
+ <p>This program is free software: you can redistribute it and/or modify
158
+ it under the terms of the <span class="caps">GNU</span> General Public License as published by
159
+ the Free Software Foundation, either version 3 of the License, or
160
+ (at your option) any later version.</p>
161
+
162
+
163
+ <p>This program is distributed in the hope that it will be useful,
164
+ but <span class="caps">WITHOUT ANY WARRANTY</span>; without even the implied warranty of
165
+ <span class="caps">MERCHANTABILITY</span> or <span class="caps">FITNESS FOR A PARTICULAR PURPOSE</span>. See the
166
+ <span class="caps">GNU</span> General Public License for more details.</p>
167
+
168
+
169
+ <p>You should have received a copy of the <span class="caps">GNU</span> General Public License
170
+ along with this program. If not, see <http://www.gnu.org/licenses/>.</p>
171
+ </div>
172
+
173
+ <div class="copyright">
174
+ Ratch, Copyright &copy; 2007 <a href="http://psytower.info">&Psi; &Tau; Corp.</a> <br/><br/>
175
+ Website design by <a href="http://psytower.info/transcode/">TransCrankItOut</a> using <a href="">Webrite</a>!
176
+ </div>
177
+
178
+ </div>
179
+
180
+ </body>
181
+ </html>
@@ -0,0 +1,308 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ PKG_TITLE = 'WhiteCloth'
4
+ PKG_NAME = 'whitecloth'
5
+ PKG_VERSION = '1'
6
+ PKG_AUTHOR = 'Thomas Sawyer'
7
+ PKG_EMAIL = 'transami@runbox.com'
8
+ PKG_SUMMARY = 'WhiteCloth is an implementation of ArtML'
9
+ PKG_DESCRIPTION = 'WhiteCloth is a Ruby implementation of ArtML'
10
+
11
+ # site info
12
+ # remark out if you don't need
13
+ PKG_HOMEPAGE = 'http://whitecloth.rubyforge.org'
14
+ PKG_RUBYFORGE_PROJECT = 'whitecloth'
15
+ PKG_RUBYFORGE_PASS = nil
16
+
17
+ # all package files
18
+ PKG_FILES = [ 'lib/**/*', 'test/**/*', 'samples/**/*', 'doc/**/*', '[A-Z]*', 'Rakefile' ]
19
+
20
+ # rdoc
21
+ RDOC_TITLE = PKG_TITLE
22
+ RDOC_DIR = 'doc'
23
+ RDOC_TEMPLATE = 'kilmer'
24
+ RDOC_OPTIONS = ''
25
+ RDOC_INCLUDE = [ 'VERSION', 'README', 'CHANGELOG', 'TODO', 'COPYING', 'lib/**/*.rb', 'bin/**/*.rb' ]
26
+ RDOC_EXCLUDE = []
27
+
28
+ # include in distribution
29
+ PKG_DIST_DIRS = [ 'bin', 'lib', 'test', 'samples' ]
30
+ PKG_DIST_FILES = [ 'README', 'TODO', 'CHANGELOG', 'VERSION', 'LICENSE', 'Rakefile' ]
31
+
32
+ # tests
33
+ PKG_TEST_DIR = 'test'
34
+ PKG_TEST_FILES = [ 'test/*_test.rb', 'test/**/*_test.rb' ]
35
+
36
+ =begin
37
+ # library files for manual install
38
+ PKG_LIB_DIR = 'lib'
39
+ PKG_LIB_MKDIRS = '**/*/'
40
+ PKG_LIB_FILES = [ '**/*.rb', '**/*.yaml' ]
41
+ PKG_LIB_DEPRECATE = []
42
+
43
+ # binary files for manual install
44
+ PKG_BIN_DIR = 'bin'
45
+ PKG_BIN_FILES = '**/*'
46
+ PKG_BIN_DEPRECATE = []
47
+ =end
48
+
49
+ #***************************************************************************
50
+ # The PackMule Rakefile v0.1
51
+ # PackMule can run tests, build packages and gems, manually install,
52
+ # generate rdocs, and publish them. CVS support might be added later.
53
+ #
54
+ # In general, layout your project directory as follows:
55
+ # - lib/
56
+ # - lib/#{lib_name}/ if you need a lib dir
57
+ # - bin/
58
+ # - test/
59
+ # - demo/ -or- examples/ -or- samples/
60
+ # - doc/ -and;or- rdoc/
61
+ # The test dir can have subdirs, but tests should be named
62
+ # like '#{name}_test.rb' or 'test_#{name}.rb'.
63
+ #
64
+ # Then use the Rake.yaml config file designed for this form.
65
+ # To get a blank config for this form type:
66
+ # > rake form
67
+ # This will send the form to stdout. There may be a line like
68
+ # "(in ...)" at the beginning, just remove it or remark it.
69
+ #***************************************************************************
70
+
71
+ require 'rake'
72
+ require 'rubygems'
73
+ require 'rake/testtask'
74
+ require 'rake/rdoctask'
75
+ require 'rake/packagetask'
76
+ require 'rake/gempackagetask'
77
+ require 'rake/contrib/rubyforgepublisher'
78
+
79
+ #################################################
80
+ # load config from Rake.yaml and make constants #
81
+ #################################################
82
+ #YAML::load( File.open('Rake.yaml') ).each{|c,v| self.class.const_set(c,v)}
83
+
84
+
85
+ ##
86
+ # = Default Task
87
+ ##
88
+
89
+ desc "Default Task (test)"
90
+ task :default => [ :test ]
91
+
92
+
93
+ ##
94
+ # = Run Unit Tests
95
+ ##
96
+
97
+ Rake::TestTask.new("test") { |t|
98
+ #t.desc "Run all tests"
99
+ t.libs << PKG_TEST_DIR
100
+ PKG_TEST_FILES.each { |pat| t.pattern = pat }
101
+ t.verbose = true
102
+ }
103
+
104
+
105
+ ##
106
+ # = Genereate RDoc Documentation
107
+ ##
108
+
109
+ Rake::RDocTask.new { |rdoc|
110
+ rdoc.rdoc_dir = RDOC_DIR
111
+ rdoc.template = RDOC_TEMPLATE
112
+ rdoc.title = RDOC_TITLE
113
+ rdoc.options << '--line-numbers --inline-source ' + RDOC_OPTIONS
114
+ rdoc.rdoc_files.include(*RDOC_INCLUDE)
115
+ rdoc.rdoc_files.exclude(*RDOC_EXCLUDE)
116
+ rdoc.rdoc_files.delete_if { |f| ! File.exist?(f) }
117
+ }
118
+
119
+
120
+ ##
121
+ # = Publish Documentation
122
+ ##
123
+
124
+ # Publish documentation
125
+ #desc "Publish the API documentation"
126
+ #task :pdoc => [:rdoc] do
127
+ # Rake::SshDirPublisher.new("david@hunter.5th.dk", "sites/rubyonrails.org/ar", "doc").upload
128
+ #end
129
+
130
+ if PKG_RUBYFORGE_PROJECT
131
+ desc "Publish to RubyForge"
132
+ task :rubyforge do
133
+ Rake::RubyForgePublisher.new(PKG_RUBYFORGE_PROJECT, PKG_RUBYFORGE_PASS).upload
134
+ end
135
+ end
136
+
137
+
138
+ ##
139
+ # = Create Compressed Packages
140
+ ##
141
+
142
+ dist_dirs = PKG_DIST_DIRS
143
+
144
+ spec = Gem::Specification.new do |s|
145
+ s.name = PKG_NAME
146
+ s.version = PKG_VERSION
147
+ s.summary = PKG_SUMMARY
148
+ s.description = PKG_DESCRIPTION
149
+
150
+ s.files = PKG_DIST_FILES
151
+ dist_dirs.each do |dir|
152
+ s.files.concat Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "CVS" ) }
153
+ end
154
+ #s.files.delete "test/fixtures/fixture_database.sqlite"
155
+ s.require_path = 'lib'
156
+ s.autorequire = '#{PKG_NAME}'
157
+ s.has_rdoc = true
158
+ s.author = PKG_AUTHOR
159
+ s.email = PKG_EMAIL
160
+ s.homepage = PKG_HOMEPAGE if PKG_HOMEPAGE
161
+ s.rubyforge_project = PKG_RUBYFORGE_PROJECT if PKG_RUBYFORGE_PROJECT
162
+ end
163
+
164
+ Rake::GemPackageTask.new(spec) do |p|
165
+ p.gem_spec = spec
166
+ p.need_tar = true
167
+ p.need_zip = true
168
+ end
169
+
170
+
171
+ ##
172
+ # = Line Count
173
+ ##
174
+
175
+ desc "Line Count"
176
+ task :lines do
177
+ lines = 0
178
+ codelines = 0
179
+ Dir.foreach("lib/#{PKG_NAME}") { |file_name|
180
+ next unless file_name =~ /.*rb/
181
+
182
+ f = File.open("lib/#{PKG_NAME}/" + file_name)
183
+
184
+ while line = f.gets
185
+ lines += 1
186
+ next if line =~ /^\s*$/
187
+ next if line =~ /^\s*#/
188
+ codelines += 1
189
+ end
190
+ }
191
+ puts "Lines #{lines}, LOC #{codelines}"
192
+ end
193
+
194
+
195
+ =begin
196
+ ##
197
+ # = Manual Install
198
+ ##
199
+
200
+ desc "Manual Installation"
201
+ task :install do
202
+
203
+ # install
204
+ # this was adapted from active record's install.rb
205
+ # by way of rdoc's install.rb
206
+ # by way of Log4r's install.rb
207
+ # with some modifications from ruby-gems' install.rb ;)
208
+
209
+ require 'rbconfig'
210
+ require 'find'
211
+ require 'ftools'
212
+ require 'fileutils'
213
+
214
+ include Config
215
+
216
+ #$sitedir = CONFIG["sitelibdir"]
217
+ #unless $sitedir
218
+ # version = CONFIG["MAJOR"] + "." + CONFIG["MINOR"]
219
+ # $libdir = File.join(CONFIG["libdir"], "ruby", version)
220
+ #
221
+ # $sitedir = $:.find {|x| x =~ /site_ruby/ }
222
+ # if !$sitedir
223
+ # $sitedir = File.join($libdir, "site_ruby")
224
+ # elsif $sitedir !~ Regexp.quote(version)
225
+ # $sitedir = File.join($sitedir, version)
226
+ # end
227
+ #end
228
+
229
+ $srcdir = CONFIG["srcdir"]
230
+ $version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
231
+ $libdir = File.join(CONFIG["libdir"], "ruby", $version)
232
+ $bindir = CONFIG['bindir']
233
+ $archdir = File.join($libdir, CONFIG["arch"])
234
+ $sitedir = CONFIG["sitelibdir"]
235
+ if !$sitedir
236
+ $sitedir = $:.find {|x| x =~ /site_ruby$/}
237
+ if !$sitedir
238
+ $sitedir = File.join($libdir, "site_ruby")
239
+ elsif $sitedir !~ Regexp.new(Regexp.quote($version))
240
+ $sitedir = File.join($site_libdir, $version)
241
+ end
242
+ end
243
+
244
+ # get current dir
245
+ current_dir = Dir.pwd
246
+
247
+ ### install lib files
248
+
249
+ if FileTest.directory?(PKG_LIB_DIR)
250
+
251
+ # change dir to package lib dir
252
+ Dir.chdir(PKG_LIB_DIR)
253
+
254
+ # make lib dirs in ruby sitelibdir
255
+ makedirs = FileList[*PKG_LIB_MKDIRS].to_a
256
+ makedirs.each {|f| File::makedirs( File.join( $sitedir, *f.split(/\//) ) ) }
257
+
258
+ # deprecated files that should be removed
259
+ deprecated = FileList[*PKG_LIB_DEPRECATE].to_a
260
+
261
+ # files to install in library path
262
+ files = FileList[*PKG_LIB_FILES].to_a
263
+
264
+ # the actual gruntwork
265
+ File::safe_unlink *deprecated.collect{|f| File.join($sitedir, f.split(/\//))}
266
+ files.each do |f|
267
+ File::install(f, File.join($sitedir, *f.split(/\//)), 0644, true)
268
+ end
269
+
270
+ # change dir back
271
+ Dir.chdir(current_dir)
272
+
273
+ end
274
+
275
+ ### install bin files
276
+
277
+ if FileTest.directory?(PKG_BIN_DIR)
278
+
279
+ # change dir to package bin dir
280
+ Dir.chdir(PKG_BIN_DIR)
281
+
282
+ is_windows_platform = CONFIG["arch"] =~ /dos|win32/i
283
+
284
+ # files to install in bin path
285
+ files = FileList[*PKG_BIN_FILES].to_a
286
+
287
+ # deprecated files that should be removed
288
+ deprecated = FileList[*PKG_BIN_DEPRECATE].to_a
289
+
290
+ # the actual gruntwork
291
+ File::safe_unlink *deprecated.collect{|f| File.join($bindir, f.split(/\//))}
292
+ files.each do |f|
293
+ target = File.join($bindir, *f.split(/\//))
294
+ File::install(f, target, 0755, true)
295
+ if is_windows_platform
296
+ File.open("#{target}.cmd", "w") do |file|
297
+ file.puts "@ruby #{target} %1 %2 %3 %4 %5 %6 %7 %8 %9"
298
+ end
299
+ end
300
+ end
301
+
302
+ # change dir back
303
+ Dir.chdir(current_dir)
304
+
305
+ end
306
+ =end
307
+
308
+ end