wxruby3 0.9.5 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +440 -84
- data/README.md +40 -23
- data/ext/mkrf_conf_ext.rb +68 -0
- data/lib/wx/core/ext.rb +22 -3
- data/lib/wx/core/secret_store.rb +38 -0
- data/lib/wx/doc/extra/02_lifecycles.md +4 -4
- data/lib/wx/doc/extra/14_config.md +1 -1
- data/lib/wx/doc/secret_store.rb +55 -0
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/base.rb +8 -8
- data/lib/wx/wxruby/cmd/check.rb +182 -0
- data/lib/wx/wxruby/cmd/sampler.rb +39 -29
- data/lib/wx/wxruby/cmd/setup.rb +125 -0
- data/lib/wx/wxruby/cmd/test.rb +56 -6
- data/rakelib/bin.rake +48 -0
- data/rakelib/bin.rb +62 -0
- data/rakelib/build.rb +11 -7
- data/rakelib/config.rake +3 -1
- data/rakelib/configure.rb +63 -35
- data/rakelib/doc.rake +3 -1
- data/rakelib/gem.rake +199 -0
- data/rakelib/gem.rb +334 -0
- data/rakelib/install.rb +5 -3
- data/rakelib/lib/config/{cygwin.rb → freebsd.rb} +1 -1
- data/rakelib/lib/config/linux.rb +26 -2
- data/rakelib/lib/config/macosx.rb +58 -11
- data/rakelib/lib/config/mingw.rb +134 -10
- data/rakelib/lib/config/pkgman/linux.rb +144 -0
- data/rakelib/lib/config/pkgman/macosx.rb +122 -0
- data/rakelib/lib/config/unixish.rb +47 -20
- data/rakelib/lib/config/{netbsd.rb → unknown.rb} +3 -2
- data/rakelib/lib/config.rb +301 -88
- data/rakelib/lib/core/package.rb +47 -49
- data/rakelib/lib/director/aui_manager.rb +1 -1
- data/rakelib/lib/director/dialog.rb +8 -0
- data/rakelib/lib/director/gdicommon.rb +1 -2
- data/rakelib/lib/director/grid_ctrl.rb +2 -2
- data/rakelib/lib/director/richtext_composite_object.rb +2 -4
- data/rakelib/lib/director/secret_store.rb +117 -0
- data/rakelib/lib/director/tree_event.rb +2 -2
- data/rakelib/lib/generate/doc/secret_store.yaml +55 -0
- data/rakelib/lib/generate/doc.rb +29 -14
- data/rakelib/lib/generate/interface.rb +4 -2
- data/rakelib/lib/specs/interfaces.rb +1 -0
- data/rakelib/lib/swig_runner.rb +11 -11
- data/rakelib/lib/typemap/common.rb +10 -0
- data/rakelib/prepost.rake +17 -5
- data/rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css +18 -0
- data/rakelib/yard/templates/default/fulldoc/html/setup.rb +5 -5
- data/rakelib/yard/yard/relative_markdown_links.rb +7 -1
- data/samples/sampler/sample.rb +2 -0
- data/tests/lib/wxapp_runner.rb +1 -1
- data/tests/test_config.rb +7 -4
- data/tests/test_secret_store.rb +83 -0
- metadata +46 -23
- data/ext/mkrf_conf_srcgem.rb +0 -67
- data/rakelib/run.rake +0 -52
@@ -0,0 +1,83 @@
|
|
1
|
+
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
+
#
|
3
|
+
# This software is released under the MIT license.
|
4
|
+
|
5
|
+
require_relative './lib/wxapp_runner'
|
6
|
+
|
7
|
+
require 'digest'
|
8
|
+
|
9
|
+
class TestSecretStore < Test::Unit::TestCase
|
10
|
+
|
11
|
+
unless is_ci_build?
|
12
|
+
|
13
|
+
def test_store
|
14
|
+
if Wx.has_feature?(:USE_SECRETSTORE)
|
15
|
+
state, err = Wx::SecretStore.get_default.ok?
|
16
|
+
if state
|
17
|
+
puts "SecretStore OK"
|
18
|
+
|
19
|
+
if Wx::WXWIDGETS_VERSION > '3.2.4'
|
20
|
+
password = Digest::SHA256.digest('My Secret Password!')
|
21
|
+
else
|
22
|
+
password = Digest::SHA256.hexdigest('My Secret Password!') # binary secrets does not work
|
23
|
+
end
|
24
|
+
secret_val = Wx::SecretValue.new(password)
|
25
|
+
assert_true(Wx::SecretStore.get_default.save('My/Service', 'a_user', secret_val))
|
26
|
+
|
27
|
+
secret_val2 = Wx::SecretValue.new
|
28
|
+
rc, user = Wx::SecretStore.get_default.load('My/Service', secret_val2)
|
29
|
+
assert_true(rc)
|
30
|
+
assert_equal('a_user', user)
|
31
|
+
assert_equal(secret_val, secret_val2)
|
32
|
+
assert_equal(password, secret_val2.get_data)
|
33
|
+
|
34
|
+
password = 'My Secret Password!'
|
35
|
+
secret_val = Wx::SecretValue.new(password)
|
36
|
+
assert_true(Wx::SecretStore.get_default.save('My/Service', 'a_user', secret_val))
|
37
|
+
|
38
|
+
secret_val2 = Wx::SecretValue.new
|
39
|
+
rc, user = Wx::SecretStore.get_default.load('My/Service', secret_val2)
|
40
|
+
assert_true(rc)
|
41
|
+
assert_equal('a_user', user)
|
42
|
+
assert_equal(secret_val, secret_val2)
|
43
|
+
assert_equal(password, secret_val2.get_as_string)
|
44
|
+
|
45
|
+
password = 'My Secret Password!'.encode('UTF-16')
|
46
|
+
secret_val = Wx::SecretValue.new(password)
|
47
|
+
assert_true(Wx::SecretStore.get_default.save('My/Service', 'a_user', secret_val))
|
48
|
+
|
49
|
+
secret_val2 = Wx::SecretValue.new
|
50
|
+
rc, user = Wx::SecretStore.get_default.load('My/Service', secret_val2)
|
51
|
+
assert_true(rc)
|
52
|
+
assert_equal('a_user', user)
|
53
|
+
assert_equal(secret_val, secret_val2)
|
54
|
+
assert_equal(password, secret_val2.get_as_string)
|
55
|
+
assert_not_equal('My Secret Password!'.encode('UTF-16'), secret_val2.get_as_string)
|
56
|
+
assert_equal('My Secret Password!'.encode('UTF-16'), secret_val2.get_as_string.encode('UTF-16'))
|
57
|
+
|
58
|
+
password = 'My Secret Password!'.encode('UTF-32')
|
59
|
+
secret_val = Wx::SecretValue.new(password)
|
60
|
+
assert_true(Wx::SecretStore.get_default.save('My/Service', 'a_user', secret_val))
|
61
|
+
|
62
|
+
secret_val2 = Wx::SecretValue.new
|
63
|
+
rc, user = Wx::SecretStore.get_default.load('My/Service', secret_val2)
|
64
|
+
assert_true(rc)
|
65
|
+
assert_equal('a_user', user)
|
66
|
+
assert_equal(secret_val, secret_val2)
|
67
|
+
assert_equal(password, secret_val2.get_as_string)
|
68
|
+
assert_not_equal('My Secret Password!'.encode('UTF-32'), secret_val2.get_as_string)
|
69
|
+
assert_equal('My Secret Password!'.encode('UTF-32'), secret_val2.get_as_string.encode('UTF-32'))
|
70
|
+
|
71
|
+
assert_true(Wx::SecretStore.get_default.delete('My/Service'))
|
72
|
+
|
73
|
+
else
|
74
|
+
puts "Default SecretStore not usable : #{err}"
|
75
|
+
end
|
76
|
+
else
|
77
|
+
puts 'Wx::SecretStore not available'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wxruby3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Corino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01
|
11
|
+
date: 2024-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -66,13 +66,27 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.5'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: plat4m
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.0'
|
69
83
|
description: wxRuby3 is a Ruby library providing an extension for the wxWidgets C++
|
70
84
|
UI framework
|
71
85
|
email: mcorino@m2c-software.nl
|
72
86
|
executables:
|
73
87
|
- wxruby
|
74
88
|
extensions:
|
75
|
-
- ext/
|
89
|
+
- ext/mkrf_conf_ext.rb
|
76
90
|
extra_rdoc_files: []
|
77
91
|
files:
|
78
92
|
- ".yardopts"
|
@@ -96,7 +110,7 @@ files:
|
|
96
110
|
- assets/logo.xcf
|
97
111
|
- assets/repo-social-preview.png
|
98
112
|
- bin/wxruby
|
99
|
-
- ext/
|
113
|
+
- ext/mkrf_conf_ext.rb
|
100
114
|
- ext/wxruby3/include/wxRubyApp.h
|
101
115
|
- ext/wxruby3/include/wxruby-ClientData.h
|
102
116
|
- ext/wxruby3/include/wxruby-ComboPopup.h
|
@@ -201,6 +215,7 @@ files:
|
|
201
215
|
- lib/wx/core/real_point.rb
|
202
216
|
- lib/wx/core/rect.rb
|
203
217
|
- lib/wx/core/region_iterator.rb
|
218
|
+
- lib/wx/core/secret_store.rb
|
204
219
|
- lib/wx/core/simplehelpprovider.rb
|
205
220
|
- lib/wx/core/size.rb
|
206
221
|
- lib/wx/core/sizer.rb
|
@@ -320,6 +335,7 @@ files:
|
|
320
335
|
- lib/wx/doc/rtc/richtext_style_sheet.rb
|
321
336
|
- lib/wx/doc/scaled_dc.rb
|
322
337
|
- lib/wx/doc/screen_dc.rb
|
338
|
+
- lib/wx/doc/secret_store.rb
|
323
339
|
- lib/wx/doc/sizer.rb
|
324
340
|
- lib/wx/doc/static_bitmap.rb
|
325
341
|
- lib/wx/doc/stc/styled_text_ctrl.rb
|
@@ -397,23 +413,31 @@ files:
|
|
397
413
|
- lib/wx/stc/styled_text_ctrl.rb
|
398
414
|
- lib/wx/version.rb
|
399
415
|
- lib/wx/wxruby/base.rb
|
416
|
+
- lib/wx/wxruby/cmd/check.rb
|
400
417
|
- lib/wx/wxruby/cmd/sampler.rb
|
418
|
+
- lib/wx/wxruby/cmd/setup.rb
|
401
419
|
- lib/wx/wxruby/cmd/test.rb
|
420
|
+
- rakelib/bin.rake
|
421
|
+
- rakelib/bin.rb
|
402
422
|
- rakelib/build.rake
|
403
423
|
- rakelib/build.rb
|
404
424
|
- rakelib/config.rake
|
405
425
|
- rakelib/configure.rb
|
406
426
|
- rakelib/doc.rake
|
407
427
|
- rakelib/doc.rb
|
428
|
+
- rakelib/gem.rake
|
429
|
+
- rakelib/gem.rb
|
408
430
|
- rakelib/install.rake
|
409
431
|
- rakelib/install.rb
|
410
432
|
- rakelib/lib/config.rb
|
411
|
-
- rakelib/lib/config/
|
433
|
+
- rakelib/lib/config/freebsd.rb
|
412
434
|
- rakelib/lib/config/linux.rb
|
413
435
|
- rakelib/lib/config/macosx.rb
|
414
436
|
- rakelib/lib/config/mingw.rb
|
415
|
-
- rakelib/lib/config/
|
437
|
+
- rakelib/lib/config/pkgman/linux.rb
|
438
|
+
- rakelib/lib/config/pkgman/macosx.rb
|
416
439
|
- rakelib/lib/config/unixish.rb
|
440
|
+
- rakelib/lib/config/unknown.rb
|
417
441
|
- rakelib/lib/core/include/client_data.inc
|
418
442
|
- rakelib/lib/core/include/enum.inc
|
419
443
|
- rakelib/lib/core/include/funcall.inc
|
@@ -623,6 +647,7 @@ files:
|
|
623
647
|
- rakelib/lib/director/scroll_bar.rb
|
624
648
|
- rakelib/lib/director/scrolled_t.rb
|
625
649
|
- rakelib/lib/director/searchctrl.rb
|
650
|
+
- rakelib/lib/director/secret_store.rb
|
626
651
|
- rakelib/lib/director/sizer.rb
|
627
652
|
- rakelib/lib/director/sizer_item.rb
|
628
653
|
- rakelib/lib/director/slider.rb
|
@@ -743,6 +768,7 @@ files:
|
|
743
768
|
- rakelib/lib/generate/doc/scrolled_canvas.yaml
|
744
769
|
- rakelib/lib/generate/doc/scrolled_control.yaml
|
745
770
|
- rakelib/lib/generate/doc/scrolled_window.yaml
|
771
|
+
- rakelib/lib/generate/doc/secret_store.yaml
|
746
772
|
- rakelib/lib/generate/doc/sizer.yaml
|
747
773
|
- rakelib/lib/generate/doc/splash_screen.yaml
|
748
774
|
- rakelib/lib/generate/doc/static_box.yaml
|
@@ -788,7 +814,6 @@ files:
|
|
788
814
|
- rakelib/lib/util/string.rb
|
789
815
|
- rakelib/prepost.rake
|
790
816
|
- rakelib/prepost.rb
|
791
|
-
- rakelib/run.rake
|
792
817
|
- rakelib/yard/templates/default/fulldoc/html/css/wxruby3.css
|
793
818
|
- rakelib/yard/templates/default/fulldoc/html/full_list.erb
|
794
819
|
- rakelib/yard/templates/default/fulldoc/html/setup.rb
|
@@ -1117,6 +1142,7 @@ files:
|
|
1117
1142
|
- tests/test_pg.rb
|
1118
1143
|
- tests/test_proof_check.rb
|
1119
1144
|
- tests/test_richtext.rb
|
1145
|
+
- tests/test_secret_store.rb
|
1120
1146
|
- tests/test_sizer.rb
|
1121
1147
|
- tests/test_std_controls.rb
|
1122
1148
|
- tests/test_styled_text_ctrl.rb
|
@@ -1132,22 +1158,19 @@ licenses:
|
|
1132
1158
|
- MIT
|
1133
1159
|
metadata:
|
1134
1160
|
bug_tracker_uri: https://github.com/mcorino/wxRuby3/issues
|
1135
|
-
source_code_uri: https://github.com/mcorino/wxRuby3
|
1136
|
-
documentation_uri: https://mcorino.github.io/wxRuby3
|
1137
1161
|
homepage_uri: https://github.com/mcorino/wxRuby3
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
$
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
Have fun using wxRuby3.
|
1162
|
+
documentation_uri: https://mcorino.github.io/wxRuby3
|
1163
|
+
github_repo: https://github.com/mcorino/wxRuby3
|
1164
|
+
post_install_message: "\nThe wxRuby3 Gem has been successfully installed including
|
1165
|
+
the 'wxruby' utility.\n\nIn case no suitable binary release package was available
|
1166
|
+
for your platform you \nwill need to run the post-install setup process by executing:\n\n$
|
1167
|
+
wxruby setup\n\nTo check whether wxRuby3 is ready to run or not you can at any time
|
1168
|
+
execute the \nfollowing command:\n\n$ wxruby check\n\nRun 'wxruby check -h' for
|
1169
|
+
more information.\n\nWhen the wxRuby3 setup has been fully completed you can start
|
1170
|
+
using wxRuby3.\n\nYou can run the regression tests to verify the installation by
|
1171
|
+
executing:\n\n$ wxruby test\n\nThe wxRuby3 sample explorer can be run by executing:\n\n$
|
1172
|
+
wxruby sampler\n\nHave fun using wxRuby3.\n\nRun 'wxruby -h' to see information
|
1173
|
+
on the available commands.\n\n"
|
1151
1174
|
rdoc_options:
|
1152
1175
|
- "--exclude=\\.dll"
|
1153
1176
|
- "--exclude=\\.so"
|
@@ -1167,7 +1190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1167
1190
|
- !ruby/object:Gem::Version
|
1168
1191
|
version: '0'
|
1169
1192
|
requirements: []
|
1170
|
-
rubygems_version: 3.
|
1193
|
+
rubygems_version: 3.5.3
|
1171
1194
|
signing_key:
|
1172
1195
|
specification_version: 4
|
1173
1196
|
summary: wxWidgets extension for Ruby
|
data/ext/mkrf_conf_srcgem.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
-
#
|
3
|
-
# This software is released under the MIT license.
|
4
|
-
|
5
|
-
###
|
6
|
-
# wxRuby3 extension configuration file for source gem
|
7
|
-
###
|
8
|
-
|
9
|
-
# generate Rakefile with appropriate default task (all actual task in rakelib)
|
10
|
-
File.open('../Rakefile', 'w') do |f|
|
11
|
-
f.puts <<EOF__
|
12
|
-
###
|
13
|
-
# wxRuby3 rake file
|
14
|
-
# Copyright (c) M.J.N. Corino, The Netherlands
|
15
|
-
###
|
16
|
-
|
17
|
-
task :default => 'wxruby:build' do
|
18
|
-
Rake::Task['wxruby:post:srcgem'].invoke
|
19
|
-
end
|
20
|
-
EOF__
|
21
|
-
end
|
22
|
-
|
23
|
-
require 'rbconfig'
|
24
|
-
if defined? ::RbConfig
|
25
|
-
RB_CONFIG = ::RbConfig
|
26
|
-
else
|
27
|
-
RB_CONFIG = ::Config
|
28
|
-
end unless defined? RB_CONFIG
|
29
|
-
RB_CONFIG::MAKEFILE_CONFIG['TRY_LINK'] = "$(CXX) #{RB_CONFIG::MAKEFILE_CONFIG['OUTFLAG']}conftest#{$EXEEXT} $(INCFLAGS) $(CPPFLAGS) " \
|
30
|
-
"$(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(ARCH_FLAG) $(LOCAL_LIBS) $(LIBS)"
|
31
|
-
require 'mkmf'
|
32
|
-
if defined?(MakeMakefile)
|
33
|
-
MakeMakefile::COMMON_HEADERS.clear
|
34
|
-
elsif defined?(COMMON_HEADERS)
|
35
|
-
COMMON_HEADERS.slice!(/./)
|
36
|
-
end
|
37
|
-
|
38
|
-
usage_txt =<<-__EOT
|
39
|
-
Please make sure you have a valid build environment either by having a system provided wxWidgets
|
40
|
-
development package installed (>= 3.2.0) or provide the paths to a locally built and installed
|
41
|
-
wxWidgets release (>= 3.2.0) by setting the WXWIN environment variable (and optionally WXXML)
|
42
|
-
for the 'gem install' command.
|
43
|
-
Installed versions of SWIG (>= 3.0.12) and (if no WXXML path is provided) doxygen and git are
|
44
|
-
also required.
|
45
|
-
Checkout the documentation at https://github.com/mcorino/wxRuby3 for more information.
|
46
|
-
__EOT
|
47
|
-
|
48
|
-
wxwin = ENV['WXWIN']
|
49
|
-
wxxml = ENV['WXXML']
|
50
|
-
with_wxwin = !!ENV['WITH_WXWIN']
|
51
|
-
|
52
|
-
# run configure with appropriate settings
|
53
|
-
cfgargs = ''
|
54
|
-
if wxwin || with_wxwin
|
55
|
-
cfgargs = ["--wxwin=#{wxwin}"]
|
56
|
-
cfgargs << "--wxxml=#{wxxml}" if wxxml
|
57
|
-
cfgargs << '--with-wxwin' if with_wxwin
|
58
|
-
cfgargs = "[#{cfgargs.join(',')}]"
|
59
|
-
end
|
60
|
-
Dir.chdir('..') do
|
61
|
-
puts "Running 'rake #{ARGV.join(' ')} configure#{cfgargs}'"
|
62
|
-
unless system("rake #{ARGV.join(' ')} configure#{cfgargs}")
|
63
|
-
puts 'Failed to configure wxRuby3'
|
64
|
-
puts usage_txt
|
65
|
-
exit(1)
|
66
|
-
end
|
67
|
-
end
|
data/rakelib/run.rake
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# Copyright (c) 2023 M.J.N. Corino, The Netherlands
|
2
|
-
#
|
3
|
-
# This software is released under the MIT license.
|
4
|
-
|
5
|
-
###
|
6
|
-
# wxRuby3 rake file
|
7
|
-
###
|
8
|
-
|
9
|
-
require_relative './configure'
|
10
|
-
|
11
|
-
namespace :wxruby do
|
12
|
-
|
13
|
-
task :run, [:app] => 'config:bootstrap' do |t, args|
|
14
|
-
Rake::Task[:build].invoke
|
15
|
-
WXRuby3.config.run args[:app]
|
16
|
-
end
|
17
|
-
|
18
|
-
task :debug, [:app] => 'config:bootstrap' do |t, args|
|
19
|
-
Rake::Task[:build].invoke
|
20
|
-
WXRuby3.config.debug args[:app]
|
21
|
-
end
|
22
|
-
|
23
|
-
task :test => 'config:bootstrap' do |t, args|
|
24
|
-
Rake::Task[:build].invoke
|
25
|
-
tests = args.extras - [':nodep']
|
26
|
-
tests << ENV['TEST'] if ENV['TEST']
|
27
|
-
WXRuby3.config.test *tests
|
28
|
-
end
|
29
|
-
|
30
|
-
task :irb => 'config:bootstrap' do |t, args|
|
31
|
-
Rake::Task[:build].invoke
|
32
|
-
WXRuby3.config.irb
|
33
|
-
end
|
34
|
-
|
35
|
-
task :exec => 'config:bootstrap' do |t, args|
|
36
|
-
WXRuby3.config.execute args.extras
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
desc "Run wxRuby tests"
|
42
|
-
task :test => 'wxruby:test'
|
43
|
-
|
44
|
-
task :tests => 'wxruby:test'
|
45
|
-
|
46
|
-
desc 'Run wxRuby (sample) app'
|
47
|
-
task :run, [:app] => 'wxruby:run'
|
48
|
-
|
49
|
-
desc 'Debug wxRuby (sample) app'
|
50
|
-
task :debug, [:app] => 'wxruby:debug'
|
51
|
-
|
52
|
-
task :irb => 'wxruby:irb'
|