@@ -5,12 +5,41 @@ require 'rake/testtask'
5
5
require 'rake/rdoctask'
6
6
require 'rake/packagetask'
7
7
require 'rake/gempackagetask'
8
+ require 'rake/contrib/sshpublisher'
9
+ require 'rbconfig'
10
+ require 'rubyforge'
11
+
8
12
$: << './lib'
9
13
require 'ruby-hl7'
10
14
15
+ # Many of these tasks were garnered from zenspider's Hoe
16
+ # just forced to work my way
17
+
18
+
19
+ spec = Gem ::Specification . new do |s |
20
+ s . name = "Ruby-HL7"
21
+ s . version = HL7 ::VERSION
22
+ s . author = "Mark Guzman"
23
+
24
+ s . homepage = "http://rubyforge.org/ruby-hl7"
25
+ s . platform = Gem ::Platform ::RUBY
26
+ s . summary = "Ruby HL7 Library"
27
+ s . rubyforge_project = "ruby-hl7"
28
+ s . description = "A simple library to parse and generate HL7 2.x messages"
29
+ s . files = FileList [ "{bin,lib,test_data}/**/*" ] . to_a
30
+ s . require_path = "lib"
31
+ s . autorequire = "ruby-hl7"
32
+ s . test_files = FileList [ "{test}/**/test*.rb" ] . to_a
33
+ s . has_rdoc = true
34
+ s . extra_rdoc_files = %w[ README LICENSE ]
35
+ s . add_dependency ( "facets" , ">= 1.8.51" )
36
+ s . add_dependency ( "rake" , ">= #{ RAKEVERSION } " )
37
+ s . add_dependency ( "rubyforge" , ">= #{ ::RubyForge ::VERSION } " )
38
+ end
39
+
11
40
12
41
Rake ::TestTask . new do |t |
13
- t . test_files = FileList [ 'test/test*.rb' ]
42
+ t . test_files = FileList [ 'test/test*.rb' , 'test/*test.rb' ]
14
43
t . verbose = true
15
44
end
16
45
@@ -28,30 +57,75 @@ namespace :test do
28
57
task :heckle do
29
58
system ( "heckle HL7::Message" )
30
59
end
60
+
61
+ desc 'Show which test files fail when run alone.'
62
+ task :deps do
63
+ tests = Dir [ "test/**/test_*.rb" ] + Dir [ "test/**/*_test.rb" ]
64
+
65
+ tests . each do |test |
66
+ if not system "ruby -Ibin:lib:test #{ test } &> /dev/null" then
67
+ puts "Dependency Issues: #{ test } "
68
+ end
69
+ end
70
+ end
31
71
end
32
72
33
73
Rake ::RDocTask . new do |rd |
34
74
rd . main = "README"
35
75
rd . rdoc_files . include ( "README" , "LICENSE" , "lib/**/*.rb" )
76
+ rd . title = "%s (%s) Documentation" % [ spec . name , spec . version ]
77
+ rd . rdoc_dir = 'doc'
36
78
end
37
79
38
- spec = Gem ::Specification . new do |s |
39
- s . name = "Ruby-HL7"
40
- s . version = HL7 ::VERSION
41
- s . author = "Mark Guzman"
42
-
43
- s . homepage = "http://rubyforge.org/ruby-hl7"
44
- s . platform = Gem ::Platform ::RUBY
45
- s . summary = "Ruby HL7 Library"
46
- s . files = FileList [ "{bin,lib,test_data}/**/*" ] . to_a
47
- s . require_path = "lib"
48
- s . autorequire = "ruby-hl7"
49
- s . test_files = FileList [ "{test}/**/test*.rb" ] . to_a
50
- s . has_rdoc = true
51
- s . extra_rdoc_files = %w[ README LICENSE ]
52
- s . add_dependency ( "facets" , ">= 0.0.0" )
53
- end
54
-
80
+
55
81
Rake ::GemPackageTask . new ( spec ) do |pkg |
56
82
pkg . need_tar = true
57
83
end
84
+
85
+ desc 'Clean up all the extras'
86
+ task :clean => [ :clobber_rdoc , :clobber_package ] do
87
+ %w[ *.gem ri coverage* ] . each do |pattern |
88
+ files = Dir [ pattern ]
89
+ rm_rf files unless files . empty?
90
+ end
91
+ end
92
+
93
+ desc 'Publish RDoc to RubyForge'
94
+ task :publish_docs => [ :clean , :rdoc ] do
95
+ config = YAML . load ( File . read ( File . expand_path ( "~/.rubyforge/user-config.yml" ) ) )
96
+ host = "#{ config [ "username" ] } @rubyforge.org"
97
+ remote_dir = "/var/www/gforge-projects/#{ spec . rubyforge_project } "
98
+ local_dir = 'doc'
99
+ sh %{rsync -av --delete #{ local_dir } / #{ host } :#{ remote_dir } }
100
+ end
101
+
102
+ desc 'Package and upload the release to rubyforge.'
103
+ task :release => [ :clean , :package ] do |t |
104
+ v = ENV [ "VERSION" ] or abort "Must supply VERSION=x.y.z"
105
+ abort "Versions don't match #{ v } vs #{ spec . version } " if v != spec . version
106
+ pkg = "pkg/#{ spec . name } -#{ spec . version } "
107
+
108
+ if $DEBUG then
109
+ puts "release_id = rf.add_release #{ spec . rubyforge_project . inspect } , #{ spec . name . inspect } , #{ version . inspect } , \" #{ pkg } .tgz\" "
110
+ puts "rf.add_file #{ spec . rubyforge_project . inspect } , #{ spec . name . inspect } , release_id, \" #{ pkg } .gem\" "
111
+ end
112
+
113
+ rf = RubyForge . new
114
+ puts "Logging in"
115
+ rf . login
116
+
117
+ c = rf . userconfig
118
+ c [ "release_notes" ] = spec . description if spec . description
119
+ c [ "release_changes" ] = changes if changes
120
+ c [ "preformatted" ] = true
121
+
122
+ files = [ "#{ pkg } .tgz" , "#{ pkg } .gem" ] . compact
123
+
124
+ puts "Releasing #{ spec . name } v. #{ spec . version } "
125
+ rf . add_release spec . rubyforge_project , spec . name , spec . version , *files
126
+ end
127
+
128
+ desc 'Install the package as a gem'
129
+ task :install_gem => [ :clean , :package ] do
130
+ sh "sudo gem install pkg/*.gem"
131
+ end
0 commit comments