io-wait 0.2.0 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +7 -0
- data/ext/io/wait/depend +1 -1
- data/ext/io/wait/extconf.rb +18 -13
- data/ext/io/wait/wait.c +139 -26
- metadata +6 -9
- data/Rakefile +0 -16
- data/io-wait.gemspec +0 -27
- data/rakelib/changelogs.rake +0 -34
- data/rakelib/epoch.rake +0 -5
- data/rakelib/version.rake +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43e7f91045efd73e51af1a6e055afe646fc95d1b7c1a154453d915e6a213d223
|
4
|
+
data.tar.gz: 4d542bfb7bde6053c4069f451d41f39e05b77d0ebab5514532f601466ca57bba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f78dc92e4500c196b69d87fb47f13f426f4a2d9b8532e69027d3c96a8dd93514d08c77adc421b8d3cac2e0aaf2f80d92327c98d95969a9816111b41c373fe10a
|
7
|
+
data.tar.gz: 4b2b4af88c93ddc7d12d1060f6f638aab6fc75178a32fe9810478a5b95e27575cbe1054c1e46964b7ca1eec1269f47b64bf823a990472363cb97c75236b4a438
|
data/Gemfile
CHANGED
data/ext/io/wait/depend
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
wait.o: $(RUBY_EXTCONF_H)
|
3
3
|
wait.o: $(arch_hdrdir)/ruby/config.h
|
4
4
|
wait.o: $(hdrdir)/ruby.h
|
5
|
-
wait.o: $(hdrdir)/ruby/assert.h
|
5
|
+
# wait.o: $(hdrdir)/ruby/assert.h # not in 2.6
|
6
6
|
wait.o: $(hdrdir)/ruby/backward.h
|
7
7
|
wait.o: $(hdrdir)/ruby/defines.h
|
8
8
|
wait.o: $(hdrdir)/ruby/encoding.h
|
data/ext/io/wait/extconf.rb
CHANGED
@@ -1,19 +1,24 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
require 'mkmf'
|
3
|
-
target = "io/wait"
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
fionread = %w[sys/ioctl.h sys/filio.h sys/socket.h].find do |h|
|
8
|
-
have_macro("FIONREAD", [h, ioctl_h].compact)
|
9
|
-
end
|
10
|
-
if fionread
|
11
|
-
$defs << "-DFIONREAD_HEADER=\"<#{fionread}>\""
|
12
|
-
create_makefile(target)
|
13
|
-
end
|
4
|
+
if RUBY_VERSION < "2.6"
|
5
|
+
File.write("Makefile", dummy_makefile($srcdir).join(""))
|
14
6
|
else
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
target = "io/wait"
|
8
|
+
have_func("rb_io_wait")
|
9
|
+
unless macro_defined?("DOSISH", "#include <ruby.h>")
|
10
|
+
have_header(ioctl_h = "sys/ioctl.h") or ioctl_h = nil
|
11
|
+
fionread = %w[sys/ioctl.h sys/filio.h sys/socket.h].find do |h|
|
12
|
+
have_macro("FIONREAD", [h, ioctl_h].compact)
|
13
|
+
end
|
14
|
+
if fionread
|
15
|
+
$defs << "-DFIONREAD_HEADER=\"<#{fionread}>\""
|
16
|
+
create_makefile(target)
|
17
|
+
end
|
18
|
+
else
|
19
|
+
if have_func("rb_w32_ioctlsocket", "ruby.h")
|
20
|
+
have_func("rb_w32_is_socket", "ruby.h")
|
21
|
+
create_makefile(target)
|
22
|
+
end
|
18
23
|
end
|
19
24
|
end
|
data/ext/io/wait/wait.c
CHANGED
@@ -40,23 +40,57 @@
|
|
40
40
|
#define FIONREAD_POSSIBLE_P(fd) ((void)(fd),Qtrue)
|
41
41
|
#endif
|
42
42
|
|
43
|
+
#ifndef HAVE_RB_IO_WAIT
|
44
|
+
static VALUE io_ready_p _((VALUE io));
|
45
|
+
static VALUE io_wait_readable _((int argc, VALUE *argv, VALUE io));
|
46
|
+
static VALUE io_wait_writable _((int argc, VALUE *argv, VALUE io));
|
47
|
+
void Init_wait _((void));
|
48
|
+
|
49
|
+
static struct timeval *
|
50
|
+
get_timeout(int argc, VALUE *argv, struct timeval *timerec)
|
51
|
+
{
|
52
|
+
VALUE timeout = Qnil;
|
53
|
+
rb_check_arity(argc, 0, 1);
|
54
|
+
if (!argc || NIL_P(timeout = argv[0])) {
|
55
|
+
return NULL;
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
*timerec = rb_time_interval(timeout);
|
59
|
+
return timerec;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
static int
|
64
|
+
wait_for_single_fd(rb_io_t *fptr, int events, struct timeval *tv)
|
65
|
+
{
|
66
|
+
int i = rb_wait_for_single_fd(fptr->fd, events, tv);
|
67
|
+
if (i < 0)
|
68
|
+
rb_sys_fail(0);
|
69
|
+
rb_io_check_closed(fptr);
|
70
|
+
return (i & events);
|
71
|
+
}
|
72
|
+
#endif
|
73
|
+
|
43
74
|
/*
|
44
75
|
* call-seq:
|
45
76
|
* io.nread -> int
|
46
77
|
*
|
47
78
|
* Returns number of bytes that can be read without blocking.
|
48
79
|
* Returns zero if no information available.
|
80
|
+
*
|
81
|
+
* You must require 'io/wait' to use this method.
|
49
82
|
*/
|
50
83
|
|
51
84
|
static VALUE
|
52
85
|
io_nread(VALUE io)
|
53
86
|
{
|
54
|
-
rb_io_t *fptr
|
87
|
+
rb_io_t *fptr;
|
88
|
+
int len;
|
55
89
|
ioctl_arg n;
|
56
90
|
|
57
91
|
GetOpenFile(io, fptr);
|
58
92
|
rb_io_check_readable(fptr);
|
59
|
-
|
93
|
+
len = rb_io_read_pending(fptr);
|
60
94
|
if (len > 0) return INT2FIX(len);
|
61
95
|
if (!FIONREAD_POSSIBLE_P(fptr->fd)) return INT2FIX(0);
|
62
96
|
if (ioctl(fptr->fd, FIONREAD, &n)) return INT2FIX(0);
|
@@ -64,6 +98,7 @@ io_nread(VALUE io)
|
|
64
98
|
return INT2FIX(0);
|
65
99
|
}
|
66
100
|
|
101
|
+
#ifdef HAVE_RB_IO_WAIT
|
67
102
|
static VALUE
|
68
103
|
io_wait_event(VALUE io, int event, VALUE timeout)
|
69
104
|
{
|
@@ -82,81 +117,128 @@ io_wait_event(VALUE io, int event, VALUE timeout)
|
|
82
117
|
return Qfalse;
|
83
118
|
}
|
84
119
|
}
|
120
|
+
#endif
|
85
121
|
|
86
122
|
/*
|
87
123
|
* call-seq:
|
88
|
-
* io.ready? ->
|
124
|
+
* io.ready? -> truthy or falsy
|
89
125
|
*
|
90
|
-
* Returns
|
126
|
+
* Returns a truthy value if input available without blocking, or a
|
127
|
+
* falsy value.
|
128
|
+
*
|
129
|
+
* You must require 'io/wait' to use this method.
|
91
130
|
*/
|
92
131
|
|
93
132
|
static VALUE
|
94
133
|
io_ready_p(VALUE io)
|
95
134
|
{
|
96
135
|
rb_io_t *fptr;
|
136
|
+
#ifndef HAVE_RB_IO_WAIT
|
137
|
+
struct timeval tv = {0, 0};
|
138
|
+
#endif
|
97
139
|
|
98
140
|
GetOpenFile(io, fptr);
|
99
141
|
rb_io_check_readable(fptr);
|
100
142
|
if (rb_io_read_pending(fptr)) return Qtrue;
|
101
143
|
|
102
|
-
|
144
|
+
#ifndef HAVE_RB_IO_WAIT
|
145
|
+
if (wait_for_single_fd(fptr, RB_WAITFD_IN, &tv))
|
146
|
+
return Qtrue;
|
147
|
+
#else
|
148
|
+
if (RTEST(io_wait_event(io, RUBY_IO_READABLE, RB_INT2NUM(0))))
|
149
|
+
return Qtrue;
|
150
|
+
#endif
|
151
|
+
return Qfalse;
|
103
152
|
}
|
104
153
|
|
105
154
|
/*
|
106
155
|
* call-seq:
|
107
|
-
* io.wait_readable ->
|
108
|
-
* io.wait_readable(timeout) ->
|
156
|
+
* io.wait_readable -> truthy or falsy
|
157
|
+
* io.wait_readable(timeout) -> truthy or falsy
|
158
|
+
*
|
159
|
+
* Waits until IO is readable and returns a truthy value, or a falsy
|
160
|
+
* value when times out. Returns a truthy value immediately when
|
161
|
+
* buffered data is available.
|
109
162
|
*
|
110
|
-
*
|
111
|
-
* +false+ when times out.
|
112
|
-
* Returns +true+ immediately when buffered data is available.
|
163
|
+
* You must require 'io/wait' to use this method.
|
113
164
|
*/
|
114
165
|
|
115
166
|
static VALUE
|
116
167
|
io_wait_readable(int argc, VALUE *argv, VALUE io)
|
117
168
|
{
|
118
|
-
rb_io_t *fptr
|
169
|
+
rb_io_t *fptr;
|
170
|
+
#ifndef HAVE_RB_IO_WAIT
|
171
|
+
struct timeval timerec;
|
172
|
+
struct timeval *tv;
|
173
|
+
#endif
|
119
174
|
|
120
|
-
|
175
|
+
GetOpenFile(io, fptr);
|
121
176
|
rb_io_check_readable(fptr);
|
122
177
|
|
178
|
+
#ifndef HAVE_RB_IO_WAIT
|
179
|
+
tv = get_timeout(argc, argv, &timerec);
|
180
|
+
#endif
|
123
181
|
if (rb_io_read_pending(fptr)) return Qtrue;
|
124
182
|
|
183
|
+
#ifndef HAVE_RB_IO_WAIT
|
184
|
+
if (wait_for_single_fd(fptr, RB_WAITFD_IN, tv)) {
|
185
|
+
return io;
|
186
|
+
}
|
187
|
+
return Qnil;
|
188
|
+
#else
|
125
189
|
rb_check_arity(argc, 0, 1);
|
126
190
|
VALUE timeout = (argc == 1 ? argv[0] : Qnil);
|
127
191
|
|
128
192
|
return io_wait_event(io, RUBY_IO_READABLE, timeout);
|
193
|
+
#endif
|
129
194
|
}
|
130
195
|
|
131
196
|
/*
|
132
197
|
* call-seq:
|
133
|
-
* io.wait_writable ->
|
134
|
-
* io.wait_writable(timeout) ->
|
198
|
+
* io.wait_writable -> truthy or falsy
|
199
|
+
* io.wait_writable(timeout) -> truthy or falsy
|
135
200
|
*
|
136
|
-
* Waits until IO is writable and returns
|
137
|
-
*
|
201
|
+
* Waits until IO is writable and returns a truthy value or a falsy
|
202
|
+
* value when times out.
|
203
|
+
*
|
204
|
+
* You must require 'io/wait' to use this method.
|
138
205
|
*/
|
139
206
|
static VALUE
|
140
207
|
io_wait_writable(int argc, VALUE *argv, VALUE io)
|
141
208
|
{
|
142
|
-
rb_io_t *fptr
|
209
|
+
rb_io_t *fptr;
|
210
|
+
#ifndef HAVE_RB_IO_WAIT
|
211
|
+
struct timeval timerec;
|
212
|
+
struct timeval *tv;
|
213
|
+
#endif
|
143
214
|
|
144
|
-
|
215
|
+
GetOpenFile(io, fptr);
|
145
216
|
rb_io_check_writable(fptr);
|
146
217
|
|
218
|
+
#ifndef HAVE_RB_IO_WAIT
|
219
|
+
tv = get_timeout(argc, argv, &timerec);
|
220
|
+
if (wait_for_single_fd(fptr, RB_WAITFD_OUT, tv)) {
|
221
|
+
return io;
|
222
|
+
}
|
223
|
+
return Qnil;
|
224
|
+
#else
|
147
225
|
rb_check_arity(argc, 0, 1);
|
148
226
|
VALUE timeout = (argc == 1 ? argv[0] : Qnil);
|
149
227
|
|
150
228
|
return io_wait_event(io, RUBY_IO_WRITABLE, timeout);
|
229
|
+
#endif
|
151
230
|
}
|
152
231
|
|
232
|
+
#ifdef HAVE_RB_IO_WAIT
|
153
233
|
/*
|
154
234
|
* call-seq:
|
155
|
-
* io.wait_priority ->
|
156
|
-
* io.wait_priority(timeout) ->
|
235
|
+
* io.wait_priority -> truthy or falsy
|
236
|
+
* io.wait_priority(timeout) -> truthy or falsy
|
157
237
|
*
|
158
|
-
* Waits until IO is priority and returns
|
159
|
-
*
|
238
|
+
* Waits until IO is priority and returns a truthy value or a falsy
|
239
|
+
* value when times out.
|
240
|
+
*
|
241
|
+
* You must require 'io/wait' to use this method.
|
160
242
|
*/
|
161
243
|
static VALUE
|
162
244
|
io_wait_priority(int argc, VALUE *argv, VALUE io)
|
@@ -173,6 +255,7 @@ io_wait_priority(int argc, VALUE *argv, VALUE io)
|
|
173
255
|
|
174
256
|
return io_wait_event(io, RUBY_IO_PRIORITY, timeout);
|
175
257
|
}
|
258
|
+
#endif
|
176
259
|
|
177
260
|
static int
|
178
261
|
wait_mode_sym(VALUE mode)
|
@@ -210,24 +293,51 @@ wait_mode_sym(VALUE mode)
|
|
210
293
|
|
211
294
|
/*
|
212
295
|
* call-seq:
|
213
|
-
* io.wait(events, timeout) ->
|
214
|
-
* io.wait(timeout = nil, mode = :read) ->
|
296
|
+
* io.wait(events, timeout) -> truthy or falsy
|
297
|
+
* io.wait(timeout = nil, mode = :read) -> truthy or falsy.
|
215
298
|
*
|
216
299
|
* Waits until the IO becomes ready for the specified events and returns the
|
217
|
-
* subset of events that become ready, or
|
300
|
+
* subset of events that become ready, or a falsy value when times out.
|
218
301
|
*
|
219
302
|
* The events can be a bit mask of +IO::READABLE+, +IO::WRITABLE+ or
|
220
303
|
* +IO::PRIORITY+.
|
221
304
|
*
|
222
|
-
* Returns
|
305
|
+
* Returns a truthy value immediately when buffered data is available.
|
223
306
|
*
|
224
307
|
* Optional parameter +mode+ is one of +:read+, +:write+, or
|
225
308
|
* +:read_write+.
|
309
|
+
*
|
310
|
+
* You must require 'io/wait' to use this method.
|
226
311
|
*/
|
227
312
|
|
228
313
|
static VALUE
|
229
314
|
io_wait(int argc, VALUE *argv, VALUE io)
|
230
315
|
{
|
316
|
+
#ifndef HAVE_RB_IO_WAIT
|
317
|
+
rb_io_t *fptr;
|
318
|
+
struct timeval timerec;
|
319
|
+
struct timeval *tv = NULL;
|
320
|
+
int event = 0;
|
321
|
+
int i;
|
322
|
+
|
323
|
+
GetOpenFile(io, fptr);
|
324
|
+
for (i = 0; i < argc; ++i) {
|
325
|
+
if (SYMBOL_P(argv[i])) {
|
326
|
+
event |= wait_mode_sym(argv[i]);
|
327
|
+
}
|
328
|
+
else {
|
329
|
+
*(tv = &timerec) = rb_time_interval(argv[i]);
|
330
|
+
}
|
331
|
+
}
|
332
|
+
/* rb_time_interval() and might_mode() might convert the argument */
|
333
|
+
rb_io_check_closed(fptr);
|
334
|
+
if (!event) event = RB_WAITFD_IN;
|
335
|
+
if ((event & RB_WAITFD_IN) && rb_io_read_pending(fptr))
|
336
|
+
return Qtrue;
|
337
|
+
if (wait_for_single_fd(fptr, event, tv))
|
338
|
+
return io;
|
339
|
+
return Qnil;
|
340
|
+
#else
|
231
341
|
VALUE timeout = Qundef;
|
232
342
|
rb_io_event_t events = 0;
|
233
343
|
|
@@ -264,6 +374,7 @@ io_wait(int argc, VALUE *argv, VALUE io)
|
|
264
374
|
}
|
265
375
|
|
266
376
|
return io_wait_event(io, events, timeout);
|
377
|
+
#endif
|
267
378
|
}
|
268
379
|
|
269
380
|
/*
|
@@ -284,5 +395,7 @@ Init_wait(void)
|
|
284
395
|
|
285
396
|
rb_define_method(rb_cIO, "wait_readable", io_wait_readable, -1);
|
286
397
|
rb_define_method(rb_cIO, "wait_writable", io_wait_writable, -1);
|
398
|
+
#ifdef HAVE_RB_IO_WAIT
|
287
399
|
rb_define_method(rb_cIO, "wait_priority", io_wait_priority, -1);
|
400
|
+
#endif
|
288
401
|
}
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: io-wait
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
8
|
+
- Charles Oliver Nutter
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
14
|
description: Waits until IO is readable or writable without blocking.
|
14
15
|
email:
|
15
16
|
- nobu@ruby-lang.org
|
17
|
+
- headius@headius.com
|
16
18
|
executables: []
|
17
19
|
extensions:
|
18
20
|
- ext/io/wait/extconf.rb
|
@@ -21,14 +23,9 @@ files:
|
|
21
23
|
- COPYING
|
22
24
|
- Gemfile
|
23
25
|
- README.md
|
24
|
-
- Rakefile
|
25
26
|
- ext/io/wait/depend
|
26
27
|
- ext/io/wait/extconf.rb
|
27
28
|
- ext/io/wait/wait.c
|
28
|
-
- io-wait.gemspec
|
29
|
-
- rakelib/changelogs.rake
|
30
|
-
- rakelib/epoch.rake
|
31
|
-
- rakelib/version.rake
|
32
29
|
homepage: https://github.com/ruby/io-wait
|
33
30
|
licenses:
|
34
31
|
- Ruby
|
@@ -44,14 +41,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
41
|
requirements:
|
45
42
|
- - ">="
|
46
43
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
44
|
+
version: '0'
|
48
45
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
46
|
requirements:
|
50
47
|
- - ">="
|
51
48
|
- !ruby/object:Gem::Version
|
52
49
|
version: '0'
|
53
50
|
requirements: []
|
54
|
-
rubygems_version: 3.
|
51
|
+
rubygems_version: 3.4.0.dev
|
55
52
|
signing_key:
|
56
53
|
specification_version: 4
|
57
54
|
summary: Waits until IO is readable or writable without blocking.
|
data/Rakefile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rake/testtask"
|
3
|
-
|
4
|
-
name = "io/wait"
|
5
|
-
|
6
|
-
Rake::TestTask.new(:test) do |t|
|
7
|
-
t.libs << "test/lib"
|
8
|
-
t.ruby_opts << "-rhelper"
|
9
|
-
t.test_files = FileList["test/**/test_*.rb"]
|
10
|
-
end
|
11
|
-
|
12
|
-
require 'rake/extensiontask'
|
13
|
-
Rake::ExtensionTask.new(name)
|
14
|
-
task :test => :compile
|
15
|
-
|
16
|
-
task :default => :test
|
data/io-wait.gemspec
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
_VERSION = "0.2.0"
|
2
|
-
|
3
|
-
Gem::Specification.new do |spec|
|
4
|
-
spec.name = "io-wait"
|
5
|
-
spec.version = _VERSION
|
6
|
-
spec.authors = ["Nobu Nakada"]
|
7
|
-
spec.email = ["nobu@ruby-lang.org"]
|
8
|
-
|
9
|
-
spec.summary = %q{Waits until IO is readable or writable without blocking.}
|
10
|
-
spec.description = %q{Waits until IO is readable or writable without blocking.}
|
11
|
-
spec.homepage = "https://github.com/ruby/io-wait"
|
12
|
-
spec.licenses = ["Ruby", "BSD-2-Clause"]
|
13
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
|
14
|
-
|
15
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
16
|
-
spec.metadata["source_code_uri"] = spec.homepage
|
17
|
-
|
18
|
-
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
19
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
20
|
-
f.match(%r{\A(?:test|spec|features)/|\A\.(?:git|travis)})
|
21
|
-
end
|
22
|
-
end
|
23
|
-
spec.extensions = %w[ext/io/wait/extconf.rb]
|
24
|
-
spec.bindir = "exe"
|
25
|
-
spec.executables = []
|
26
|
-
spec.require_paths = ["lib"]
|
27
|
-
end
|
data/rakelib/changelogs.rake
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
task "build" => "changelogs"
|
2
|
-
|
3
|
-
changelog = proc do |output, ver = nil, prev = nil|
|
4
|
-
ver &&= Gem::Version.new(ver)
|
5
|
-
range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..")
|
6
|
-
IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log|
|
7
|
-
line = log.gets
|
8
|
-
FileUtils.mkpath(File.dirname(output))
|
9
|
-
File.open(output, "wb") do |f|
|
10
|
-
f.print "-*- coding: utf-8 -*-\n\n", line
|
11
|
-
log.each_line do |line|
|
12
|
-
line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&')
|
13
|
-
line.sub!(/ +$/, '')
|
14
|
-
f.print(line)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
tags = IO.popen(%w[git tag -l v[0-9]*]).grep(/v(.*)/) {$1}
|
21
|
-
tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)}
|
22
|
-
tags.inject(nil) do |prev, tag|
|
23
|
-
task("logs/ChangeLog-#{tag}") {|t| changelog[t.name, tag, prev]}
|
24
|
-
tag
|
25
|
-
end
|
26
|
-
|
27
|
-
desc "Make ChangeLog"
|
28
|
-
task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last|
|
29
|
-
changelog[t.name, ver, prev]
|
30
|
-
end
|
31
|
-
|
32
|
-
changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}]
|
33
|
-
task "changelogs" => changelogs
|
34
|
-
CLOBBER.concat(changelogs) << "logs"
|
data/rakelib/epoch.rake
DELETED
data/rakelib/version.rake
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
class << (helper = Bundler::GemHelper.instance)
|
2
|
-
def update_gemspec
|
3
|
-
path = gemspec.loaded_from
|
4
|
-
File.open(path, "r+b") do |f|
|
5
|
-
d = f.read
|
6
|
-
if d.sub!(/^(_VERSION\s*=\s*)".*"/) {$1 + gemspec.version.to_s.dump}
|
7
|
-
f.rewind
|
8
|
-
f.truncate(0)
|
9
|
-
f.print(d)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def commit_bump
|
15
|
-
sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version}
|
16
|
-
#{gemspec.loaded_from}])
|
17
|
-
end
|
18
|
-
|
19
|
-
def version=(v)
|
20
|
-
gemspec.version = v
|
21
|
-
update_gemspec
|
22
|
-
commit_bump
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
major, minor, teeny = helper.gemspec.version.segments
|
27
|
-
|
28
|
-
task "bump:teeny" do
|
29
|
-
helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}")
|
30
|
-
end
|
31
|
-
|
32
|
-
task "bump:minor" do
|
33
|
-
helper.version = Gem::Version.new("#{major}.#{minor+1}.0")
|
34
|
-
end
|
35
|
-
|
36
|
-
task "bump:major" do
|
37
|
-
helper.version = Gem::Version.new("#{major+1}.0.0")
|
38
|
-
end
|
39
|
-
|
40
|
-
task "bump" => "bump:teeny"
|
41
|
-
|
42
|
-
task "tag" do
|
43
|
-
helper.__send__(:tag_version)
|
44
|
-
end
|