io_splice 4.3.0 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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