io_splice 4.3.0 → 4.4.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dcadc5a4c0bc52553768f5d4571f3630668e841a
4
+ data.tar.gz: 3f3b773ece8adb9a746e315145a3b75fb21e4fed
5
+ SHA512:
6
+ metadata.gz: 500904b87fe0360f1860968fe9d0997568f7f5918685f763419a2097d229a1aa2cec521809c5382ac8404cdf2804105de179976d0ebc48a622c8c5669d1ea2d4
7
+ data.tar.gz: 87019a4a269b7bda7873921697bf33d0017bbf4f73c7784670066486fcb426205300253cab147fea77069d8e13d0cbd7319b378f9f05f58d6ac3b7176b5b72e7
data/.document CHANGED
@@ -1,7 +1,5 @@
1
1
  README
2
2
  LICENSE
3
3
  NEWS
4
- ChangeLog
5
4
  lib
6
5
  ext/io_splice/io_splice_ext.c
7
- LATEST
data/.gitignore CHANGED
@@ -6,8 +6,7 @@
6
6
  Makefile
7
7
  /GIT-VERSION-FILE
8
8
  /local.mk
9
- /NEWS
10
- /ChangeLog
9
+ /NEWS*
11
10
  /.manifest
12
11
  /GIT-VERSION-FILE
13
12
  /man
@@ -2,4 +2,6 @@
2
2
  cgit_url: http://bogomips.org/ruby_io_splice.git
3
3
  git_url: git://bogomips.org/ruby_io_splice.git
4
4
  rdoc_url: http://bogomips.org/ruby_io_splice/
5
- changelog_start: v1.0.0
5
+ public_email: ruby-io-splice@bogomips.org
6
+ private_email: bofh@bogomips.org
7
+ ml_url: http://bogomips.org/ruby-io-splice/
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v4.3.0
4
+ DEF_VER=v4.4.0
5
5
 
6
6
  LF='
7
7
  '
@@ -1,13 +1,8 @@
1
1
  all::
2
2
  RCOV = rcov
3
3
  RSYNC_DEST := bogomips.org:/srv/bogomips/ruby_io_splice
4
- rfproject := qrp
5
4
  rfpackage := io_splice
6
5
  include pkg.mk
7
- ifneq ($(VERSION),)
8
- release::
9
- $(RAKE) publish_news VERSION=$(VERSION)
10
- endif
11
6
  rcov: build
12
7
  $(RCOV) -I lib:ext/io_splice $(test_unit)
13
8
  .PHONY: rcov
data/README CHANGED
@@ -87,14 +87,46 @@ don't email the git mailing list or maintainer with io_splice patches.
87
87
  == Contact
88
88
 
89
89
  All feedback (bug reports, user/development discussion, patches, pull
90
- requests) go to the mailing list: mailto:ruby.io.splice@librelist.org
90
+ requests) go to the mailing list: mailto:ruby-io-splice@bogomips.org
91
+
92
+ Send patches (from "git format-patch") with "git send-email" and do not
93
+ send HTML email or attachments. We are very responsive to email and you
94
+ will usually get a response within 24-72 hours.
91
95
 
92
96
  == Mailing List Archives
93
97
 
94
- In addition to the rsync-able archives provided by http://librelist.org/, we
95
- are also mirrored to
96
- {Gmane}[http://gmane.org/info.php?group=gmane.comp.lang.ruby.io-splice.general]
97
- and maintain our own mbox mirrors downloadable via HTTP.
98
+ We operate a {public-inbox}[http://public-inbox.org/] which
99
+ feeds the mailing list. You may subscribe either using
100
+ {ssoma}[http://ssoma.public-inbox.org/] or by sending a mail
101
+ to mailto:ruby-io-splice+subscribe@bogomips.org
102
+
103
+ ssoma is a mail archiver/fetcher using git. It operates in a similar
104
+ fashion to tools such as slrnpull, fetchmail, or getmail. ssoma
105
+ subscription instructions:
106
+
107
+ URL=git://bogomips.org/ruby-io-splice
108
+ LISTNAME=ruby-io-splice
109
+
110
+ # to initialize a maildir (this may be a new or existing maildir,
111
+ # ssoma will not touch existing messages)
112
+ # If you prefer mbox, use mbox:/path/to/mbox as the last argument
113
+ # You may also use imap://$MAILSERVER/INBOX for an IMAP account
114
+ # or imaps:// for an IMAPS account, as well.
115
+ ssoma add $LISTNAME $URL maildir:/path/to/maildir
116
+
117
+ # read with your favorite MUA (only using mutt as an example)
118
+ mutt -f /path/to/maildir # (or /path/to/mbox)
119
+
120
+ # to keep your mbox or maildir up-to-date, periodically run:
121
+ ssoma sync $LISTNAME
122
+
123
+ # your MUA may modify and delete messages from the maildir or mbox,
124
+ # this does not affect ssoma functionality at all
125
+
126
+ # to sync all your ssoma subscriptions
127
+ ssoma sync
128
+
129
+ # You may wish to sync in your cronjob
130
+ ssoma sync --cron
98
131
 
99
- * nntp://news.gmane.org/gmane.comp.lang.ruby.io-splice.general
100
- * http://bogomips.org/ruby_io_splice/archives/
132
+ * http://bogomips.org/ruby-io-splice/
@@ -0,0 +1,3 @@
1
+ /data
2
+ /news
3
+ /requests
@@ -0,0 +1,4 @@
1
+ # group_name max expire headers_only
2
+ gmane.comp.lang.ruby.io-splice.general 1000000000 1000000000 0
3
+
4
+ # usage: slrnpull -d $PWD -h news.gmane.org --no-post
@@ -125,8 +125,8 @@ static void * WITHOUT_GVL(rb_blocking_function_t *func, void *data1,
125
125
 
126
126
  struct splice_args {
127
127
  int fd_in;
128
- off_t *off_in;
129
128
  int fd_out;
129
+ off_t *off_in;
130
130
  off_t *off_out;
131
131
  size_t len;
132
132
  unsigned flags;
@@ -167,7 +167,7 @@ static ssize_t do_splice(int argc, VALUE *argv, unsigned dflags)
167
167
  a.fd_in = check_fileno(io_in);
168
168
  a.fd_out = check_fileno(io_out);
169
169
  bytes = (ssize_t)io_run(nogvl_splice, &a);
170
- if (bytes == -1) {
170
+ if (bytes < 0) {
171
171
  if (errno == EINTR)
172
172
  continue;
173
173
  if (waitall && errno == EAGAIN) {
@@ -238,7 +238,7 @@ static VALUE my_splice(int argc, VALUE *argv, VALUE self)
238
238
 
239
239
  if (n == 0)
240
240
  rb_eof_error();
241
- if (n == -1)
241
+ if (n < 0)
242
242
  rb_sys_fail("splice");
243
243
  return SSIZET2NUM(n);
244
244
  }
@@ -264,7 +264,7 @@ static VALUE trysplice(int argc, VALUE *argv, VALUE self)
264
264
 
265
265
  if (n == 0)
266
266
  return Qnil;
267
- if (n == -1) {
267
+ if (n < 0) {
268
268
  if (errno == EAGAIN)
269
269
  return sym_EAGAIN;
270
270
  rb_sys_fail("splice");
@@ -309,7 +309,7 @@ static ssize_t do_tee(int argc, VALUE *argv, unsigned dflags)
309
309
  a.fd_in = check_fileno(io_in);
310
310
  a.fd_out = check_fileno(io_out);
311
311
  bytes = (ssize_t)io_run(nogvl_tee, &a);
312
- if (bytes == -1) {
312
+ if (bytes < 0) {
313
313
  if (errno == EINTR)
314
314
  continue;
315
315
  if (waitall && errno == EAGAIN) {
@@ -366,7 +366,7 @@ static VALUE my_tee(int argc, VALUE *argv, VALUE self)
366
366
 
367
367
  if (n == 0)
368
368
  rb_eof_error();
369
- if (n == -1)
369
+ if (n < 0)
370
370
  rb_sys_fail("tee");
371
371
 
372
372
  return SSIZET2NUM(n);
@@ -391,7 +391,7 @@ static VALUE trytee(int argc, VALUE *argv, VALUE self)
391
391
 
392
392
  if (n == 0)
393
393
  return Qnil;
394
- if (n == -1) {
394
+ if (n < 0) {
395
395
  if (errno == EAGAIN)
396
396
  return sym_EAGAIN;
397
397
  rb_sys_fail("tee");
@@ -402,9 +402,9 @@ static VALUE trytee(int argc, VALUE *argv, VALUE self)
402
402
 
403
403
  struct vmsplice_args {
404
404
  int fd;
405
+ unsigned flags;
405
406
  struct iovec *iov;
406
407
  unsigned long nr_segs;
407
- unsigned flags;
408
408
  };
409
409
 
410
410
  static void * nogvl_vmsplice(void *ptr)
@@ -476,7 +476,7 @@ static void advance_vmsplice_args(struct vmsplice_args *a, long n)
476
476
  * This may allow the kernel to avoid data copies in some cases.
477
477
  * but is (probably) of limited usefulness in Ruby. If you have
478
478
  * use cases or ideas for making this more useful for Ruby users,
479
- * please tell us at ruby.io.splice@librelist.org!
479
+ * please tell us at ruby-io-splice@bogomips.org!
480
480
  *
481
481
  * Also consider the "sendfile" RubyGem or IO.copy_stream in Ruby 1.9
482
482
  * if you want to do zero-copy file transfers to pipes or sockets. As
@@ -520,7 +520,7 @@ static VALUE my_vmsplice(int argc, VALUE * argv, VALUE self)
520
520
  a.fd = check_fileno(io);
521
521
  n = (ssize_t)io_run(nogvl_vmsplice, &a);
522
522
 
523
- if (n == -1) {
523
+ if (n < 0) {
524
524
  if (errno == EAGAIN) {
525
525
  if (a.flags & SPLICE_F_NONBLOCK)
526
526
  rb_sys_fail("vmsplice");
@@ -1,26 +1,23 @@
1
1
  # -*- encoding: binary -*-
2
2
  ENV["VERSION"] or abort "VERSION= must be specified"
3
3
  manifest = File.readlines('.manifest').map! { |x| x.chomp! }
4
- require 'wrongdoc'
5
- extend Wrongdoc::Gemspec
4
+ require 'olddoc'
5
+ extend Olddoc::Gemspec
6
6
  name, summary, title = readme_metadata
7
7
 
8
8
  Gem::Specification.new do |s|
9
9
  s.name = %q{io_splice}
10
10
  s.version = ENV["VERSION"].dup
11
11
  s.authors = ["Ruby io_splice hackers"]
12
- s.date = Time.now.utc.strftime('%Y-%m-%d')
13
12
  s.description = readme_description
14
- s.email = %q{ruby.io.splice@librelist.org}
13
+ s.email = %q{ruby-io-splice@bogomips.org}
15
14
  s.extensions = %w(ext/io_splice/extconf.rb)
16
15
  s.extra_rdoc_files = extra_rdoc_files(manifest)
17
16
  s.files = manifest
18
- s.homepage = Wrongdoc.config[:rdoc_url]
17
+ s.homepage = Olddoc.config['rdoc_url']
19
18
  s.summary = summary
20
- s.rdoc_options = rdoc_options
21
- s.rubyforge_project = %q{qrp}
22
19
  s.test_files = Dir['test/test_*.rb']
23
- s.add_development_dependency('wrongdoc', '~> 1.5')
20
+ s.add_development_dependency('olddoc', '~> 1.0')
24
21
 
25
- # s.licenses = %w(LGPL) # accessor not compatible with older RubyGems
22
+ s.licenses = %w(LGPL) # accessor not compatible with older RubyGems
26
23
  end
@@ -5,7 +5,7 @@ require 'io/wait'
5
5
  module IO::Splice
6
6
  @warned = false
7
7
 
8
- def self.__deprecated
8
+ def self.__deprecated # :nodoc:
9
9
  return if @warned
10
10
  warn("IO::Splice.{copy_stream,full} are deprecated " \
11
11
  "and to be removed in io_splice 5.x")
data/pkg.mk CHANGED
@@ -1,7 +1,8 @@
1
1
  RUBY = ruby
2
2
  RAKE = rake
3
3
  RSYNC = rsync
4
- WRONGDOC = wrongdoc
4
+ OLDDOC = olddoc
5
+ RDOC = rdoc
5
6
 
6
7
  GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
7
8
  @./GIT-VERSION-GEN
@@ -44,44 +45,39 @@ $(ext_dl): $(ext_src) $(ext_pfx_src) $(ext_pfx)/$(ext)/Makefile
44
45
  $(MAKE) -C $(@D)
45
46
  lib := $(lib):$(ext_pfx)/$(ext)
46
47
  build: $(ext_dl)
48
+ else
49
+ build:
47
50
  endif
48
51
 
49
- pkg_extra := GIT-VERSION-FILE NEWS ChangeLog LATEST
50
- ChangeLog: GIT-VERSION-FILE .wrongdoc.yml
51
- $(WRONGDOC) prepare
52
+ pkg_extra += GIT-VERSION-FILE NEWS LATEST
53
+ NEWS: GIT-VERSION-FILE .olddoc.yml
54
+ $(OLDDOC) prepare
55
+ LATEST: NEWS
52
56
 
53
57
  manifest:
54
58
  $(RM) .manifest
55
59
  $(MAKE) .manifest
56
60
 
57
- .manifest: ChangeLog
61
+ .manifest: $(pkg_extra)
58
62
  (git ls-files && for i in $@ $(pkg_extra); do echo $$i; done) | \
59
63
  LC_ALL=C sort > $@+
60
64
  cmp $@+ $@ || mv $@+ $@
61
65
  $(RM) $@+
62
66
 
63
- doc:: .document .wrongdoc.yml
64
- find lib -type f -name '*.rbc' -exec rm -f '{}' ';'
67
+ doc:: .document .olddoc.yml $(pkg_extra) $(PLACEHOLDERS)
68
+ -find lib -type f -name '*.rbc' -exec rm -f '{}' ';'
65
69
  -find ext -type f -name '*.rbc' -exec rm -f '{}' ';'
66
70
  $(RM) -r doc
67
- $(WRONGDOC) all
71
+ $(RDOC) -f oldweb
72
+ $(OLDDOC) merge
68
73
  install -m644 COPYING doc/COPYING
69
- install -m644 $(shell grep '^[A-Z]' .document) doc/
74
+ install -m644 NEWS doc/NEWS
75
+ install -m644 NEWS.atom.xml doc/NEWS.atom.xml
76
+ install -m644 $(shell LC_ALL=C grep '^[A-Z]' .document) doc/
70
77
 
71
78
  ifneq ($(VERSION),)
72
79
  pkggem := pkg/$(rfpackage)-$(VERSION).gem
73
80
  pkgtgz := pkg/$(rfpackage)-$(VERSION).tgz
74
- release_notes := release_notes-$(VERSION)
75
- release_changes := release_changes-$(VERSION)
76
-
77
- release-notes: $(release_notes)
78
- release-changes: $(release_changes)
79
- $(release_changes):
80
- $(WRONGDOC) release_changes > $@+
81
- $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
82
- $(release_notes):
83
- $(WRONGDOC) release_notes > $@+
84
- $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
85
81
 
86
82
  # ensures we're actually on the tagged $(VERSION), only used for release
87
83
  verify:
@@ -117,23 +113,9 @@ $(pkgtgz): manifest fix-perms
117
113
 
118
114
  package: $(pkgtgz) $(pkggem)
119
115
 
120
- test-release:: verify package $(release_notes) $(release_changes)
121
- # make tgz release on RubyForge
122
- @echo rubyforge add_release -f \
123
- -n $(release_notes) -a $(release_changes) \
124
- $(rfproject) $(rfpackage) $(VERSION) $(pkgtgz)
125
- @echo gem push $(pkggem)
126
- @echo rubyforge add_file \
127
- $(rfproject) $(rfpackage) $(VERSION) $(pkggem)
128
- release:: verify package $(release_notes) $(release_changes)
129
- # make tgz release on RubyForge
130
- rubyforge add_release -f -n $(release_notes) -a $(release_changes) \
131
- $(rfproject) $(rfpackage) $(VERSION) $(pkgtgz)
116
+ release:: verify package
132
117
  # push gem to RubyGems.org
133
118
  gem push $(pkggem)
134
- # in case of gem downloads from RubyForge releases page
135
- rubyforge add_file \
136
- $(rfproject) $(rfpackage) $(VERSION) $(pkggem)
137
119
  else
138
120
  gem install-gem: GIT-VERSION-FILE
139
121
  $(MAKE) $@ VERSION=$(GIT_VERSION)
@@ -144,15 +126,13 @@ test_units := $(wildcard test/test_*.rb)
144
126
  test: test-unit
145
127
  test-unit: $(test_units)
146
128
  $(test_units): build
147
- $(RUBY) -I $(lib) $@
129
+ $(RUBY) -I $(lib) $@ $(RUBY_TEST_OPTS)
148
130
 
149
131
  # this requires GNU coreutils variants
150
132
  ifneq ($(RSYNC_DEST),)
151
133
  publish_doc:
152
134
  -git set-file-times
153
135
  $(MAKE) doc
154
- find doc/images -type f | \
155
- TZ=UTC xargs touch -d '1970-01-01 00:00:06' doc/rdoc.css
156
136
  $(MAKE) doc_gz
157
137
  $(RSYNC) -av doc/ $(RSYNC_DEST)/
158
138
  git ls-files | xargs touch
@@ -160,9 +140,18 @@ endif
160
140
 
161
141
  # Create gzip variants of the same timestamp as the original so nginx
162
142
  # "gzip_static on" can serve the gzipped versions directly.
163
- doc_gz: docs = $(shell find doc -type f ! -regex '^.*\.\(gif\|jpg\|png\|gz\)$$')
143
+ doc_gz: docs = $(shell find doc -type f ! -regex '^.*\.gz$$')
164
144
  doc_gz:
165
145
  for i in $(docs); do \
166
146
  gzip --rsyncable -9 < $$i > $$i.gz; touch -r $$i $$i.gz; done
147
+ check-warnings:
148
+ @(for i in $$(git ls-files '*.rb'| grep -v '^setup\.rb$$'); \
149
+ do $(RUBY) -d -W2 -c $$i; done) | grep -v '^Syntax OK$$' || :
150
+
151
+ ifneq ($(PLACEHOLDERS),)
152
+ $(PLACEHOLDERS):
153
+ echo olddoc_placeholder > $@
154
+ endif
167
155
 
168
156
  .PHONY: all .FORCE-GIT-VERSION-FILE doc test $(test_units) manifest
157
+ .PHONY: check-warnings
metadata CHANGED
@@ -1,69 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
- name: !binary |-
3
- aW9fc3BsaWNl
2
+ name: io_splice
4
3
  version: !ruby/object:Gem::Version
5
- version: 4.3.0
6
- prerelease:
4
+ version: 4.4.0
7
5
  platform: ruby
8
6
  authors:
9
- - !binary |-
10
- UnVieSBpb19zcGxpY2UgaGFja2Vycw==
7
+ - Ruby io_splice hackers
11
8
  autorequire:
12
9
  bindir: bin
13
10
  cert_chain: []
14
- date: 2014-02-15 00:00:00.000000000 Z
11
+ date: 2015-01-11 00:00:00.000000000 Z
15
12
  dependencies:
16
13
  - !ruby/object:Gem::Dependency
17
- name: !binary |-
18
- d3Jvbmdkb2M=
14
+ name: olddoc
19
15
  requirement: !ruby/object:Gem::Requirement
20
- none: false
21
16
  requirements:
22
- - - !binary |-
23
- fj4=
17
+ - - "~>"
24
18
  - !ruby/object:Gem::Version
25
- version: !binary |-
26
- MS41
19
+ version: '1.0'
27
20
  type: :development
28
21
  prerelease: false
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
- none: false
31
23
  requirements:
32
- - - !binary |-
33
- fj4=
24
+ - - "~>"
34
25
  - !ruby/object:Gem::Version
35
- version: !binary |-
36
- MS41
37
- description: ! 'The splice family of Linux system calls can transfer data between
38
- file
39
-
26
+ version: '1.0'
27
+ description: |-
28
+ The splice family of Linux system calls can transfer data between file
40
29
  descriptors without the need to copy data into userspace. Instead of a
41
-
42
30
  userspace buffer, they rely on an ordinary Unix pipe as a kernel-level
43
-
44
- buffer.'
45
- email: !binary |-
46
- cnVieS5pby5zcGxpY2VAbGlicmVsaXN0Lm9yZw==
31
+ buffer.
32
+ email: ruby-io-splice@bogomips.org
47
33
  executables: []
48
34
  extensions:
49
- - !binary |-
50
- ZXh0L2lvX3NwbGljZS9leHRjb25mLnJi
35
+ - ext/io_splice/extconf.rb
51
36
  extra_rdoc_files:
52
37
  - README
53
38
  - LICENSE
54
39
  - NEWS
55
- - ChangeLog
56
40
  - lib/io/splice.rb
57
41
  - lib/io/splice/mri_18.rb
58
42
  - ext/io_splice/io_splice_ext.c
59
- - LATEST
60
43
  files:
61
- - .document
62
- - .gitignore
63
- - .manifest
64
- - .wrongdoc.yml
44
+ - ".document"
45
+ - ".gitignore"
46
+ - ".manifest"
47
+ - ".olddoc.yml"
65
48
  - COPYING
66
- - ChangeLog
67
49
  - GIT-VERSION-FILE
68
50
  - GIT-VERSION-GEN
69
51
  - GNUmakefile
@@ -71,7 +53,8 @@ files:
71
53
  - LICENSE
72
54
  - NEWS
73
55
  - README
74
- - Rakefile
56
+ - archive/.gitignore
57
+ - archive/slrnpull.conf
75
58
  - examples/splice-cp.rb
76
59
  - examples/splice-tee.rb
77
60
  - ext/io_splice/extconf.rb
@@ -86,38 +69,30 @@ files:
86
69
  - test/test_io_splice_eintr.rb
87
70
  - test/test_io_splice_in_full.rb
88
71
  homepage: http://bogomips.org/ruby_io_splice/
89
- licenses: []
72
+ licenses:
73
+ - LGPL
74
+ metadata: {}
90
75
  post_install_message:
91
- rdoc_options:
92
- - -t
93
- - io_splice - zero-copy pipe I/O for Linux and Ruby
94
- - -W
95
- - http://bogomips.org/ruby_io_splice.git/tree/%s
76
+ rdoc_options: []
96
77
  require_paths:
97
78
  - lib
98
79
  required_ruby_version: !ruby/object:Gem::Requirement
99
- none: false
100
80
  requirements:
101
- - - ! '>='
81
+ - - ">="
102
82
  - !ruby/object:Gem::Version
103
83
  version: '0'
104
84
  required_rubygems_version: !ruby/object:Gem::Requirement
105
- none: false
106
85
  requirements:
107
- - - ! '>='
86
+ - - ">="
108
87
  - !ruby/object:Gem::Version
109
88
  version: '0'
110
89
  requirements: []
111
- rubyforge_project: !binary |-
112
- cXJw
113
- rubygems_version: 1.8.23
90
+ rubyforge_project:
91
+ rubygems_version: 2.4.5
114
92
  signing_key:
115
- specification_version: 3
93
+ specification_version: 4
116
94
  summary: zero-copy pipe I/O for Linux and Ruby
117
95
  test_files:
118
- - !binary |-
119
- dGVzdC90ZXN0X2lvX3NwbGljZV9pbl9mdWxsLnJi
120
- - !binary |-
121
- dGVzdC90ZXN0X2lvX3NwbGljZS5yYg==
122
- - !binary |-
123
- dGVzdC90ZXN0X2lvX3NwbGljZV9laW50ci5yYg==
96
+ - test/test_io_splice_in_full.rb
97
+ - test/test_io_splice.rb
98
+ - test/test_io_splice_eintr.rb
data/Rakefile DELETED
@@ -1,33 +0,0 @@
1
- # -*- encoding: binary -*-
2
- require 'wrongdoc'
3
- cgit_url = Wrongdoc.config[:cgit_url]
4
- git_url = Wrongdoc.config[:git_url]
5
-
6
- desc "post news article to rubyforge"
7
- task :publish_news do
8
- require 'rubyforge'
9
- spec = Gem::Specification.load('io_splice.gemspec')
10
- tmp = Tempfile.new('rf-news')
11
- _, subject, body = `git cat-file tag v#{spec.version}`.split(/\n\n/, 3)
12
- tmp.puts subject
13
- tmp.puts
14
- tmp.puts spec.description.strip
15
- tmp.puts ""
16
- tmp.puts "* #{spec.homepage}"
17
- tmp.puts "* #{spec.email}"
18
- tmp.puts "* #{git_url}"
19
- tmp.print "\nChanges:\n\n"
20
- tmp.puts body
21
- tmp.flush
22
- system(ENV["VISUAL"], tmp.path) or abort "#{ENV["VISUAL"]} failed: #$?"
23
- msg = File.readlines(tmp.path)
24
- subject = msg.shift
25
- blank = msg.shift
26
- blank == "\n" or abort "no newline after subject!"
27
- subject.strip!
28
- body = msg.join("").strip!
29
-
30
- rf = RubyForge.new.configure
31
- rf.login
32
- rf.post_news('qrp', subject, body)
33
- end