linkparser 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/ChangeLog +134 -506
- data/LICENSE +1 -1
- data/README.md +95 -0
- data/Rakefile +145 -95
- data/Rakefile.local +31 -39
- data/ext/dictionary.c +103 -37
- data/ext/extconf.rb +79 -32
- data/ext/linkage.c +245 -210
- data/ext/linkparser.c +3 -2
- data/ext/linkparser.h +21 -17
- data/ext/parseoptions.c +65 -65
- data/ext/sentence.c +75 -64
- data/lib/linkparser.rb +16 -26
- data/lib/linkparser/linkage.rb +68 -50
- data/lib/linkparser/mixins.rb +38 -0
- data/lib/linkparser/sentence.rb +15 -40
- data/rake/dependencies.rb +1 -1
- data/rake/documentation.rb +123 -0
- data/rake/helpers.rb +400 -310
- data/rake/hg.rb +318 -0
- data/rake/manual.rb +84 -79
- data/rake/packaging.rb +33 -37
- data/rake/publishing.rb +166 -146
- data/rake/style.rb +1 -1
- data/rake/svn.rb +577 -549
- data/rake/testing.rb +55 -106
- data/spec/bugfixes_spec.rb +12 -6
- data/spec/linkparser/dictionary_spec.rb +45 -29
- data/spec/linkparser/linkage_spec.rb +90 -94
- data/spec/linkparser/mixins_spec.rb +67 -0
- data/spec/linkparser/parseoptions_spec.rb +19 -22
- data/spec/linkparser/sentence_spec.rb +19 -17
- data/spec/linkparser_spec.rb +11 -5
- metadata +64 -147
- metadata.gz.sig +0 -0
- data/README +0 -61
- data/rake/rdoc.rb +0 -40
- data/rake/win32.rb +0 -186
data/rake/packaging.rb
CHANGED
@@ -1,14 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
#
|
1
|
+
#####################################################################
|
2
|
+
### P A C K A G I N G T A S K S
|
3
|
+
#####################################################################
|
5
4
|
|
6
5
|
require 'rbconfig'
|
7
|
-
require '
|
8
|
-
require '
|
6
|
+
require 'pathname'
|
7
|
+
require 'rubygems/package_task'
|
8
|
+
|
9
9
|
|
10
10
|
include Config
|
11
11
|
|
12
|
+
### Task: prerelease
|
13
|
+
desc "Append the package build number to package versions"
|
14
|
+
task :prerelease do
|
15
|
+
GEMSPEC.version.version << "pre#{PKG_BUILD}"
|
16
|
+
Rake::Task[:gem].clear
|
17
|
+
|
18
|
+
Gem::PackageTask.new( GEMSPEC ) do |pkg|
|
19
|
+
pkg.need_zip = true
|
20
|
+
pkg.need_tar = true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
12
25
|
### Task: gem
|
13
26
|
### Task: package
|
14
27
|
Rake::PackageTask.new( PKG_NAME, PKG_VERSION ) do |task|
|
@@ -21,35 +34,9 @@ end
|
|
21
34
|
task :package => [:gem]
|
22
35
|
|
23
36
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
desc "Build a RubyGem package (#{GEM_FILE_NAME})"
|
28
|
-
task :gem => gempath.to_s
|
29
|
-
file gempath.to_s => [PKGDIR.to_s] + GEMSPEC.files do
|
30
|
-
when_writing( "Creating GEM" ) do
|
31
|
-
Gem::Builder.new( GEMSPEC ).build
|
32
|
-
verbose( true ) do
|
33
|
-
mv GEM_FILE_NAME, gempath
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
svnrev = get_svn_rev()
|
39
|
-
prerelease_gem_file_name = "#{PKG_FILE_NAME}.#{svnrev}.gem"
|
40
|
-
prerelease_gempath = PKGDIR + prerelease_gem_file_name
|
41
|
-
|
42
|
-
desc "Build a pre-release RubyGem package"
|
43
|
-
task :prerelease_gem => prerelease_gempath.to_s
|
44
|
-
file prerelease_gempath.to_s => [PKGDIR.to_s] + GEMSPEC.files do
|
45
|
-
when_writing( "Creating prerelease GEM" ) do
|
46
|
-
gemspec = GEMSPEC.clone
|
47
|
-
gemspec.version = Gem::Version.create( "%s.%d" % [GEMSPEC.version, svnrev] )
|
48
|
-
Gem::Builder.new( gemspec ).build
|
49
|
-
verbose( true ) do
|
50
|
-
mv prerelease_gem_file_name, prerelease_gempath
|
51
|
-
end
|
52
|
-
end
|
37
|
+
Gem::PackageTask.new( GEMSPEC ) do |pkg|
|
38
|
+
pkg.need_zip = true
|
39
|
+
pkg.need_tar = true
|
53
40
|
end
|
54
41
|
|
55
42
|
|
@@ -60,7 +47,7 @@ task :install => "spec:quiet" do
|
|
60
47
|
sitelib = Pathname.new( CONFIG['sitelibdir'] )
|
61
48
|
sitearch = Pathname.new( CONFIG['sitearchdir'] )
|
62
49
|
Dir.chdir( LIBDIR ) do
|
63
|
-
LIB_FILES.each do |libfile|
|
50
|
+
LIB_FILES.collect {|path| Pathname(path) }.each do |libfile|
|
64
51
|
relpath = libfile.relative_path_from( LIBDIR )
|
65
52
|
target = sitelib + relpath
|
66
53
|
FileUtils.mkpath target.dirname,
|
@@ -101,7 +88,7 @@ task :uninstall do
|
|
101
88
|
sitearch = Pathname.new( CONFIG['sitearchdir'] )
|
102
89
|
|
103
90
|
Dir.chdir( LIBDIR ) do
|
104
|
-
LIB_FILES.each do |libfile|
|
91
|
+
LIB_FILES.collect {|path| Pathname(path) }.each do |libfile|
|
105
92
|
relpath = libfile.relative_path_from( LIBDIR )
|
106
93
|
target = sitelib + relpath
|
107
94
|
FileUtils.rm_f target, :verbose => true, :noop => $dryrun
|
@@ -131,3 +118,12 @@ end
|
|
131
118
|
|
132
119
|
|
133
120
|
|
121
|
+
desc "Add development depdendencies to the gemspec -- this is meant to be chained " +
|
122
|
+
"together with :gem"
|
123
|
+
task :include_dev_dependencies do
|
124
|
+
DEVELOPMENT_DEPENDENCIES.each do |name, version|
|
125
|
+
version = '>= 0' if version.length.zero?
|
126
|
+
GEMSPEC.add_development_dependency( name, version )
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
data/rake/publishing.rb
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
RELEASE_NOTES_FILE = 'release.notes'
|
6
6
|
RELEASE_ANNOUNCE_FILE = 'release.ann'
|
7
7
|
|
8
|
+
GEM_PUBHOST = '' unless defined?( GEM_PUBHOST )
|
9
|
+
|
8
10
|
require 'net/smtp'
|
9
11
|
require 'net/protocol'
|
10
12
|
require 'openssl'
|
@@ -13,6 +15,7 @@ $publish_privately = false
|
|
13
15
|
|
14
16
|
### Add SSL to Net::SMTP
|
15
17
|
class Net::SMTP
|
18
|
+
|
16
19
|
def ssl_start( helo='localhost.localdomain', user=nil, secret=nil, authtype=nil )
|
17
20
|
if block_given?
|
18
21
|
begin
|
@@ -34,7 +37,13 @@ class Net::SMTP
|
|
34
37
|
|
35
38
|
def do_ssl_start( helodomain, user, secret, authtype )
|
36
39
|
raise IOError, 'SMTP session already started' if @started
|
37
|
-
|
40
|
+
if user or secret
|
41
|
+
if self.method( :check_auth_args ).arity == 3
|
42
|
+
check_auth_args( user, secret, authtype )
|
43
|
+
else
|
44
|
+
check_auth_args( user, secret )
|
45
|
+
end
|
46
|
+
end
|
38
47
|
|
39
48
|
# Open the connection
|
40
49
|
@debug_output << "opening connection to #{@address}...\n" if @debug_output
|
@@ -85,9 +94,11 @@ begin
|
|
85
94
|
require 'tmail'
|
86
95
|
require 'net/smtp'
|
87
96
|
require 'etc'
|
88
|
-
require 'rubyforge'
|
89
97
|
require 'socket'
|
90
98
|
require 'text/format'
|
99
|
+
require 'rubygems/gemcutter_utilities'
|
100
|
+
|
101
|
+
include Gem::GemcutterUtilities
|
91
102
|
|
92
103
|
### Generate a valid RFC822 message-id
|
93
104
|
def gen_message_id
|
@@ -99,8 +110,50 @@ begin
|
|
99
110
|
end
|
100
111
|
|
101
112
|
|
113
|
+
### Fetch the rubygems API token if it hasn't been already.
|
114
|
+
def sign_in_to_rubygems
|
115
|
+
return if Gem.configuration.rubygems_api_key
|
116
|
+
|
117
|
+
log "Enter your RubyGems.org credentials."
|
118
|
+
|
119
|
+
email = prompt " Email: "
|
120
|
+
password = prompt_for_password( "Password: " )
|
121
|
+
|
122
|
+
response = rubygems_api_request( :get, "api/v1/api_key" ) do |request|
|
123
|
+
request.basic_auth( email, password )
|
124
|
+
end
|
125
|
+
|
126
|
+
with_response( response ) do |resp|
|
127
|
+
log "Signed in."
|
128
|
+
Gem.configuration.rubygems_api_key = resp.body
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
### Push the gem at the specified +path+ to the rubygems server at +gemhost+.
|
134
|
+
def push_gem( path, gemhost )
|
135
|
+
ENV['RUBYGEMS_HOST'] = "http://#{gemhost}"
|
136
|
+
|
137
|
+
sign_in_to_rubygems()
|
138
|
+
|
139
|
+
response = rubygems_api_request( :post, "api/v1/gems" ) do |request|
|
140
|
+
request.body = Gem.read_binary( path )
|
141
|
+
request.add_field "Content-Length", request.body.size
|
142
|
+
request.add_field "Content-Type", "application/octet-stream"
|
143
|
+
request.add_field "Authorization", Gem.configuration.rubygems_api_key
|
144
|
+
end
|
145
|
+
|
146
|
+
case response
|
147
|
+
when Net::HTTPSuccess
|
148
|
+
log( response.body )
|
149
|
+
else
|
150
|
+
fail( response.body )
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
|
102
155
|
namespace :release do
|
103
|
-
task :default => [
|
156
|
+
task :default => [ :prep_release, :upload, :publish, :announce ]
|
104
157
|
|
105
158
|
desc "Re-publish the release with the current version number"
|
106
159
|
task :rerelease => [ :upload, :publish, :announce ]
|
@@ -116,183 +169,149 @@ begin
|
|
116
169
|
desc "Generate the release notes"
|
117
170
|
task :notes => [RELEASE_NOTES_FILE]
|
118
171
|
file RELEASE_NOTES_FILE do |task|
|
119
|
-
|
120
|
-
|
121
|
-
trace "Last release tag is: %p" % [ last_rel_tag ]
|
122
|
-
start = get_last_changed_rev( last_rel_tag ) || 1
|
123
|
-
trace "Starting rev is: %p" % [ start ]
|
124
|
-
log_output = make_svn_log( '.', start, 'HEAD' )
|
172
|
+
last_tag = MercurialHelpers.get_tags.grep( /\d+\.\d+\.\d+/ ).
|
173
|
+
collect {|ver| vvec(ver) }.sort.last.unpack( 'N*' ).join('.')
|
125
174
|
|
126
175
|
File.open( task.name, File::WRONLY|File::TRUNC|File::CREAT ) do |fh|
|
127
|
-
fh.
|
176
|
+
fh.puts "Release Notes for #{PKG_VERSION}",
|
177
|
+
"--------------------------------", '', ''
|
128
178
|
end
|
129
179
|
|
130
180
|
edit task.name
|
131
181
|
end
|
132
182
|
CLOBBER.include( RELEASE_NOTES_FILE )
|
133
183
|
|
184
|
+
# Only define upload tasks if there's an upload host
|
185
|
+
if PROJECT_HOST.empty?
|
186
|
+
task :no_upload_host do
|
187
|
+
log "Skipping upload: no upload host."
|
188
|
+
end
|
189
|
+
task :upload => :no_upload_host
|
190
|
+
task :upload_docs => :no_upload_host
|
191
|
+
task :upload_packages => :no_upload_host
|
192
|
+
else
|
193
|
+
desc "Upload project documentation and packages to #{PROJECT_HOST}"
|
194
|
+
task :upload => [ :upload_docs, :upload_packages ]
|
195
|
+
task :project => :upload # the old name
|
196
|
+
|
197
|
+
desc "Publish the project docs to #{PROJECT_HOST}"
|
198
|
+
task :upload_docs => [ :apidocs ] do
|
199
|
+
when_writing( "Publishing docs to #{PROJECT_SCPDOCURL}" ) do
|
200
|
+
log "Uploading API documentation to %s:%s" % [ PROJECT_HOST, PROJECT_DOCDIR ]
|
201
|
+
run 'ssh', PROJECT_HOST, "rm -rf #{PROJECT_DOCDIR}"
|
202
|
+
run 'scp', '-qCr', API_DOCSDIR, PROJECT_SCPDOCURL
|
203
|
+
end
|
204
|
+
end
|
134
205
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
run 'scp', '-qCr', RDOCDIR, PROJECT_SCPDOCURL
|
206
|
+
desc "Publish the project packages to #{PROJECT_HOST}"
|
207
|
+
task :upload_packages => [ :package ] do
|
208
|
+
when_writing( "Uploading packages") do
|
209
|
+
pkgs = Pathname.glob( PKGDIR + "#{PKG_FILE_NAME}.{gem,tar.gz,tar.bz2,zip}" )
|
210
|
+
log "Uploading %d packages to #{PROJECT_SCPPUBURL}" % [ pkgs.length ]
|
211
|
+
pkgs.each do |pkgfile|
|
212
|
+
run 'scp', '-qC', pkgfile, PROJECT_SCPPUBURL
|
213
|
+
end
|
214
|
+
end
|
145
215
|
end
|
146
216
|
end
|
147
217
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
run 'scp', '-qC', pkgfile, PROJECT_SCPPUBURL
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
218
|
+
# Only define the announcement tasks if there are addresses to announce to
|
219
|
+
if RELEASE_ANNOUNCE_ADDRESSES.empty?
|
220
|
+
task :no_announce_addresses do
|
221
|
+
log "Skipping announcement: no announce addresses"
|
222
|
+
end
|
223
|
+
task :announce => :no_announce_addresses
|
158
224
|
|
225
|
+
else
|
226
|
+
file RELEASE_ANNOUNCE_FILE => [RELEASE_NOTES_FILE] do |task|
|
227
|
+
relnotes = File.read( RELEASE_NOTES_FILE )
|
228
|
+
announce_body = %{
|
159
229
|
|
160
|
-
|
161
|
-
relnotes = File.read( RELEASE_NOTES_FILE )
|
162
|
-
announce_body = %{
|
230
|
+
Version #{PKG_VERSION} of #{PKG_NAME} has been released.
|
163
231
|
|
164
|
-
|
232
|
+
#{Text::Format.new(:first_indent => 0).format_one_paragraph(GEMSPEC.description)}
|
165
233
|
|
166
|
-
|
234
|
+
== Project Page
|
167
235
|
|
168
|
-
|
236
|
+
#{GEMSPEC.homepage}
|
169
237
|
|
170
|
-
|
238
|
+
== Installation
|
171
239
|
|
172
|
-
|
240
|
+
$ sudo gem install #{GEMSPEC.name}
|
173
241
|
|
174
|
-
|
242
|
+
== Changes
|
243
|
+
#{relnotes}
|
244
|
+
}.gsub( /^\t+/, '' )
|
175
245
|
|
176
|
-
|
246
|
+
File.open( task.name, File::WRONLY|File::TRUNC|File::CREAT ) do |fh|
|
247
|
+
fh.print( announce_body )
|
248
|
+
end
|
177
249
|
|
178
|
-
|
250
|
+
edit task.name
|
251
|
+
end
|
252
|
+
CLOBBER.include( RELEASE_ANNOUNCE_FILE )
|
179
253
|
|
180
|
-
$ wget http://deveiate.org/code/#{PKG_FILE_NAME}.tar.gz
|
181
|
-
$ tar -xzvf #{PKG_FILE_NAME}.tar.gz
|
182
|
-
$ cd #{PKG_FILE_NAME}
|
183
|
-
$ sudo rake install
|
184
254
|
|
185
|
-
|
186
|
-
|
187
|
-
|
255
|
+
desc 'Send out a release announcement'
|
256
|
+
task :announce => [RELEASE_ANNOUNCE_FILE] do
|
257
|
+
email = TMail::Mail.new
|
188
258
|
|
189
|
-
|
190
|
-
|
191
|
-
|
259
|
+
if $publish_privately || RELEASE_ANNOUNCE_ADDRESSES.empty?
|
260
|
+
trace "Sending private announce mail"
|
261
|
+
email.to = 'rubymage@gmail.com'
|
262
|
+
else
|
263
|
+
trace "Sending public announce mail"
|
264
|
+
email.to = RELEASE_ANNOUNCE_ADDRESSES
|
265
|
+
email.bcc = 'rubymage@gmail.com'
|
266
|
+
end
|
192
267
|
|
193
|
-
|
194
|
-
|
195
|
-
CLOBBER.include( RELEASE_ANNOUNCE_FILE )
|
268
|
+
from = prompt_with_default( "Send announcement as:",
|
269
|
+
'Michael Granger <ged@FaerieMUD.org>' ) or fail
|
196
270
|
|
271
|
+
email.from = from
|
272
|
+
email.subject = "[ANN] #{PKG_NAME} #{PKG_VERSION}"
|
273
|
+
email.body = File.read( RELEASE_ANNOUNCE_FILE )
|
274
|
+
email.date = Time.new
|
197
275
|
|
198
|
-
|
199
|
-
task :announce => [RELEASE_ANNOUNCE_FILE] do
|
200
|
-
email = TMail::Mail.new
|
201
|
-
if $publish_privately
|
202
|
-
trace "Sending private announce mail"
|
203
|
-
email.to = 'rubymage@gmail.com'
|
204
|
-
else
|
205
|
-
trace "Sending public announce mail"
|
206
|
-
email.to = 'Ruby-Talk List <ruby-talk@ruby-lang.org>'
|
207
|
-
email.bcc = 'rubymage@gmail.com'
|
208
|
-
end
|
209
|
-
email.from = GEMSPEC.email
|
210
|
-
email.subject = "[ANN] #{PKG_NAME} #{PKG_VERSION}"
|
211
|
-
email.body = File.read( RELEASE_ANNOUNCE_FILE )
|
212
|
-
email.date = Time.new
|
213
|
-
|
214
|
-
email.message_id = gen_message_id()
|
215
|
-
|
216
|
-
log "About to send the following email:"
|
217
|
-
puts '---',
|
218
|
-
email.to_s,
|
219
|
-
'---'
|
220
|
-
|
221
|
-
ask_for_confirmation( "Will send via #{SMTP_HOST}." ) do
|
222
|
-
pwent = Etc.getpwuid( Process.euid )
|
223
|
-
curuser = pwent ? pwent.name : 'unknown'
|
224
|
-
username = prompt_with_default( "SMTP user", curuser )
|
225
|
-
password = prompt_for_password()
|
226
|
-
|
227
|
-
trace "Creating SMTP connection to #{SMTP_HOST}:#{SMTP_PORT}"
|
228
|
-
smtp = Net::SMTP.new( SMTP_HOST, SMTP_PORT )
|
229
|
-
smtp.set_debug_output( $stdout )
|
230
|
-
smtp.esmtp = true
|
231
|
-
|
232
|
-
trace "connecting..."
|
233
|
-
smtp.ssl_start( Socket.gethostname, username, password, :plain ) do |smtp|
|
234
|
-
trace "sending message..."
|
235
|
-
smtp.send_message( email.to_s, email.from, email.to )
|
236
|
-
end
|
237
|
-
trace "done."
|
238
|
-
end
|
239
|
-
end
|
276
|
+
email.message_id = gen_message_id()
|
240
277
|
|
278
|
+
log "About to send the following email:"
|
279
|
+
puts '---',
|
280
|
+
email.to_s,
|
281
|
+
'---'
|
241
282
|
|
242
|
-
|
243
|
-
|
244
|
-
|
283
|
+
ask_for_confirmation( "Will send via #{SMTP_HOST}." ) do
|
284
|
+
pwent = Etc.getpwuid( Process.euid )
|
285
|
+
curuser = pwent ? pwent.name : 'unknown'
|
286
|
+
username = prompt_with_default( "SMTP user", curuser )
|
287
|
+
password = prompt_for_password()
|
245
288
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
# If this project doesn't yet exist, create it
|
257
|
-
unless rf.autoconfig['package_ids'].key?( project )
|
258
|
-
ask_for_confirmation( "Package '#{project}' doesn't exist on RubyForge. Create it?" ) do
|
259
|
-
log "Creating new package '#{project}'"
|
260
|
-
rf.create_package( group_id, project )
|
289
|
+
trace "Creating SMTP connection to #{SMTP_HOST}:#{SMTP_PORT}"
|
290
|
+
smtp = Net::SMTP.new( SMTP_HOST, SMTP_PORT )
|
291
|
+
smtp.set_debug_output( $stdout )
|
292
|
+
smtp.esmtp = true
|
293
|
+
|
294
|
+
trace "connecting..."
|
295
|
+
smtp.ssl_start( Socket.gethostname, username, password, :plain ) do |smtp|
|
296
|
+
trace "sending message..."
|
297
|
+
smtp.send_message( email.to_s, email.from, email.to )
|
261
298
|
end
|
299
|
+
trace "done."
|
262
300
|
end
|
301
|
+
end
|
302
|
+
end
|
263
303
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
files = FileList[ PKGDIR + GEM_FILE_NAME ]
|
277
|
-
files.include PKGDIR + "#{PKG_FILE_NAME}.tar.gz"
|
278
|
-
files.include PKGDIR + "#{PKG_FILE_NAME}.tar.bz2"
|
279
|
-
files.include PKGDIR + "#{PKG_FILE_NAME}.zip"
|
280
|
-
|
281
|
-
log "Releasing #{PKG_FILE_NAME}"
|
282
|
-
when_writing do
|
283
|
-
log "Publishing to RubyForge: \n",
|
284
|
-
"\tproject: #{RUBYFORGE_GROUP}\n",
|
285
|
-
"\tpackage: #{PKG_NAME.downcase}\n",
|
286
|
-
"\tpackage version: #{PKG_VERSION}\n",
|
287
|
-
"\tfiles: " + files.collect {|f| f.to_s }.join(', ') + "\n"
|
288
|
-
|
289
|
-
ask_for_confirmation( "Publish to RubyForge?" ) do
|
290
|
-
log 'Logging in...'
|
291
|
-
rf.login
|
292
|
-
log "Adding the new release to the '#{project}' project"
|
293
|
-
rf.add_release( group_id, package_id, PKG_VERSION, *files )
|
294
|
-
end
|
295
|
-
end
|
304
|
+
if GEM_PUBHOST.empty?
|
305
|
+
task :no_gem_host do
|
306
|
+
log "Skipping gem push: no gem publication host."
|
307
|
+
end
|
308
|
+
task :publish => :no_gem_host
|
309
|
+
else
|
310
|
+
desc 'Publish the new gem to #{GEM_PUBHOST}'
|
311
|
+
task :publish => [:clean, :gem, :notes] do |task|
|
312
|
+
ask_for_confirmation( "Publish #{GEM_FILE_NAME} to #{GEM_PUBHOST}?", false ) do
|
313
|
+
gempath = PKGDIR + GEM_FILE_NAME
|
314
|
+
push_gem( gempath, GEM_PUBHOST )
|
296
315
|
end
|
297
316
|
end
|
298
317
|
end
|
@@ -309,6 +328,7 @@ rescue LoadError => err
|
|
309
328
|
end
|
310
329
|
|
311
330
|
task :release => :no_release_tasks
|
331
|
+
task "release:rerelease" => :no_release_tasks
|
312
332
|
task "release:announce" => :no_release_tasks
|
313
333
|
task "release:publish" => :no_release_tasks
|
314
334
|
task "release:notes" => :no_release_tasks
|