rubyment 0.6.25684806 → 0.7.25693512
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.
- checksums.yaml +4 -4
- data/lib/rubyment.rb +412 -28
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7acb74408f53c3d0d2040adc01891858d1eb6b0c
|
4
|
+
data.tar.gz: a572838aecf8a54e3512dc9d63bc72b7f7773a0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfb898a6646adb78ae6dfb64fa39e0eccb5eca0cc69177199e4c21d24ecf0d8aca79bc472d4c23b273b8d025743ca89fb8ab73a8c4480349757a921058a8115f
|
7
|
+
data.tar.gz: 8add6eb6c03e67ea2695971196bb72e40a9604c605efdb149c141455f0bea5a2726e433a99951c0aa4886360f261df03511db495f65e573bf99d2f89334655ac
|
data/lib/rubyment.rb
CHANGED
@@ -95,6 +95,112 @@ class Object
|
|
95
95
|
end
|
96
96
|
|
97
97
|
|
98
|
+
=begin
|
99
|
+
# begin_documentation
|
100
|
+
|
101
|
+
this module provides functions to generate html code.
|
102
|
+
|
103
|
+
# end_documentation
|
104
|
+
=end
|
105
|
+
module RubymentHTMLModule
|
106
|
+
|
107
|
+
|
108
|
+
=begin
|
109
|
+
this is a template for functions in this module.
|
110
|
+
=end
|
111
|
+
def html_content__ args=[]
|
112
|
+
html =<<-ENDHEREDOC
|
113
|
+
|
114
|
+
ENDHEREDOC
|
115
|
+
payload = "#{html}"
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
=begin
|
120
|
+
generates an html code with javascript,
|
121
|
+
to display a shell/invocation line to call
|
122
|
+
a GET <contents of the invocation line> on
|
123
|
+
the current server. The output is output
|
124
|
+
on a <PRE> tag.
|
125
|
+
If a server such
|
126
|
+
#test__experiment__web_http_https_server
|
127
|
+
is running, this html may provide an interface
|
128
|
+
to rubyment itself. By calling, eg
|
129
|
+
#autoreload on the invocation line, the
|
130
|
+
Ruby code can be even reloaded dynamically
|
131
|
+
without requiring the server to restart.
|
132
|
+
=end
|
133
|
+
def html_content__basic_shell
|
134
|
+
html =<<-ENDHEREDOC
|
135
|
+
<!DOCTYPE html>
|
136
|
+
<html>
|
137
|
+
<body>
|
138
|
+
|
139
|
+
<form>
|
140
|
+
Invoke:<br>
|
141
|
+
<input id="invocation_line" size=100 type="text" name="username"><br>
|
142
|
+
</form>
|
143
|
+
<button type="button" onclick="loadDoc()">Ok</button>
|
144
|
+
<pre id="demo">
|
145
|
+
</pre>
|
146
|
+
|
147
|
+
|
148
|
+
<script>
|
149
|
+
function loadDoc() {
|
150
|
+
var xhttp = new XMLHttpRequest();
|
151
|
+
xhttp.onreadystatechange = function() {
|
152
|
+
if (this.readyState == 4 && this.status == 200) {
|
153
|
+
ih = document.getElementById("demo").innerHTML
|
154
|
+
document.getElementById("demo").innerHTML =
|
155
|
+
this.responseText;
|
156
|
+
}
|
157
|
+
};
|
158
|
+
xhttp.open("GET", document.getElementById("invocation_line").value, true);
|
159
|
+
xhttp.send();
|
160
|
+
}
|
161
|
+
</script>
|
162
|
+
|
163
|
+
</body>
|
164
|
+
</html>
|
165
|
+
ENDHEREDOC
|
166
|
+
payload = "#{html}"
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
=begin
|
174
|
+
# begin_documentation
|
175
|
+
This module offers functions to manipulate
|
176
|
+
Strings.
|
177
|
+
|
178
|
+
# end_documentation
|
179
|
+
=end
|
180
|
+
module RubymentStringsModule
|
181
|
+
|
182
|
+
|
183
|
+
=begin
|
184
|
+
returns a quoted version of a string; does not escape against
|
185
|
+
quoting chars inside it.
|
186
|
+
=end
|
187
|
+
def quoted_string__no_escaping s
|
188
|
+
"\"#{s}\""
|
189
|
+
end
|
190
|
+
|
191
|
+
|
192
|
+
=begin
|
193
|
+
returns a quoted version of a string; does not escape against
|
194
|
+
quoting chars inside it.
|
195
|
+
=end
|
196
|
+
def quoted_string__no_escaping_single s
|
197
|
+
"\'#{s}\'"
|
198
|
+
end
|
199
|
+
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
|
98
204
|
=begin
|
99
205
|
# begin_documentation
|
100
206
|
This module offers function to interface with certain
|
@@ -146,6 +252,20 @@ module InternalRubymentModule
|
|
146
252
|
end
|
147
253
|
|
148
254
|
|
255
|
+
=begin
|
256
|
+
load __FILE__ -- so a threaded invocation,
|
257
|
+
like the functions running a tcp server,
|
258
|
+
can call this function and reload without
|
259
|
+
having to restart the process.
|
260
|
+
|
261
|
+
=end
|
262
|
+
def autoreload wtime=1
|
263
|
+
rubyment_memory__set_key :file_reloading, true
|
264
|
+
load rubyment_memory__get_key :filepath
|
265
|
+
rubyment_memory__set_key :file_reloading, false
|
266
|
+
end
|
267
|
+
|
268
|
+
|
149
269
|
end
|
150
270
|
|
151
271
|
|
@@ -1787,6 +1907,200 @@ trying to get the interface compatible with
|
|
1787
1907
|
end
|
1788
1908
|
|
1789
1909
|
|
1910
|
+
=begin
|
1911
|
+
will call puts on the stderr
|
1912
|
+
=end
|
1913
|
+
def stderr_puts *args
|
1914
|
+
stderr = rubyment_memory__get_key :stderr
|
1915
|
+
stderr.puts *args
|
1916
|
+
end
|
1917
|
+
|
1918
|
+
|
1919
|
+
=begin
|
1920
|
+
will call puts on the stdout
|
1921
|
+
=end
|
1922
|
+
def stdout_puts *args
|
1923
|
+
stdout = rubyment_memory__get_key :stdout
|
1924
|
+
stdout.puts *args
|
1925
|
+
end
|
1926
|
+
|
1927
|
+
|
1928
|
+
=begin
|
1929
|
+
force arguments to be given to method
|
1930
|
+
as an array
|
1931
|
+
|
1932
|
+
=end
|
1933
|
+
def invoke_as_array *args
|
1934
|
+
method_to_invoke,
|
1935
|
+
*args_to_method = args
|
1936
|
+
send method_to_invoke, args_to_method
|
1937
|
+
end
|
1938
|
+
|
1939
|
+
|
1940
|
+
=begin
|
1941
|
+
force arguments to be given to method
|
1942
|
+
as a splat
|
1943
|
+
=end
|
1944
|
+
def invoke_as_splat args=[]
|
1945
|
+
method_to_invoke,
|
1946
|
+
*args_to_method = args
|
1947
|
+
send method_to_invoke, *args_to_method
|
1948
|
+
end
|
1949
|
+
|
1950
|
+
|
1951
|
+
=begin
|
1952
|
+
# short_desc = "creates an http response, after executing the GET "
|
1953
|
+
|
1954
|
+
@memory[:documentation].push = {
|
1955
|
+
:function => :experiment__http_response_invoke_clone,
|
1956
|
+
:short_desc => short_desc,
|
1957
|
+
:description => "",
|
1958
|
+
:params => [
|
1959
|
+
{
|
1960
|
+
:name => :args,
|
1961
|
+
:description => "list of parameters",
|
1962
|
+
:duck_type => Array,
|
1963
|
+
:default_behavior => "interpreted as empty array",
|
1964
|
+
:params => [
|
1965
|
+
{
|
1966
|
+
:name => :request,
|
1967
|
+
:duck_type => String,
|
1968
|
+
:default_behavior => :nil
|
1969
|
+
:description => "ignored, will redirect whatever request is made. nil is used.",
|
1970
|
+
},
|
1971
|
+
{
|
1972
|
+
:name => :location,
|
1973
|
+
:duck_type => String,
|
1974
|
+
:default_behavior => "",
|
1975
|
+
:description => "Location: field value (the url to redirect to)",
|
1976
|
+
},
|
1977
|
+
{
|
1978
|
+
:name => :code,
|
1979
|
+
:duck_type => String,
|
1980
|
+
:default_behavior => "200 OK",
|
1981
|
+
:description => "Request code",
|
1982
|
+
},
|
1983
|
+
{
|
1984
|
+
:name => :version,
|
1985
|
+
:duck_type => String,
|
1986
|
+
:default_behavior => "1.1",
|
1987
|
+
:description => "HTTP protocol version",
|
1988
|
+
},
|
1989
|
+
{
|
1990
|
+
:name => :debug,
|
1991
|
+
:duck_type => Object,
|
1992
|
+
:default_behavior => :nil,
|
1993
|
+
:description => "prints debug information to the __IO__ specified by __@memory[:stderr]__ (STDERR by default)",
|
1994
|
+
},
|
1995
|
+
{
|
1996
|
+
:name => :eol,
|
1997
|
+
:duck_type => Object,
|
1998
|
+
:default_behavior => "\r\n",
|
1999
|
+
:description => "separator to join each line of the response",
|
2000
|
+
},
|
2001
|
+
{
|
2002
|
+
:name => :debug_request_parse,
|
2003
|
+
:duck_type => :boolean,
|
2004
|
+
:default_behavior => :nil,
|
2005
|
+
:forwarded => [
|
2006
|
+
{ :to => experiment__http_request_parse , :as => :debug }
|
2007
|
+
],
|
2008
|
+
},
|
2009
|
+
{
|
2010
|
+
:name => :output_exceptions,
|
2011
|
+
:duck_type => :boolean,
|
2012
|
+
:default_behavior => :nil,
|
2013
|
+
:description => "exceptions are normally properly handled by inner functions, but setting this to true can be helpful to debug some cases",
|
2014
|
+
},
|
2015
|
+
{
|
2016
|
+
:name => :reserved,
|
2017
|
+
:duck_type => Object,
|
2018
|
+
:default_behavior => "interpreted as nil",
|
2019
|
+
:description => "for future use",
|
2020
|
+
},
|
2021
|
+
],
|
2022
|
+
},
|
2023
|
+
],
|
2024
|
+
}
|
2025
|
+
|
2026
|
+
=end
|
2027
|
+
def experiment__http_response_invoke_clone args = []
|
2028
|
+
request,
|
2029
|
+
location,
|
2030
|
+
code,
|
2031
|
+
version,
|
2032
|
+
debug,
|
2033
|
+
eol,
|
2034
|
+
debug_request_parse,
|
2035
|
+
output_exceptions,
|
2036
|
+
reserved = args
|
2037
|
+
stderr = @memory[:stderr]
|
2038
|
+
stdout = @memory[:stdout]
|
2039
|
+
debug = debug.nne
|
2040
|
+
debug && (stderr.puts "{#{__method__} starting")
|
2041
|
+
debug && (stderr.puts "caller=#{caller_label}")
|
2042
|
+
debug && (stderr.puts "args.each_with_index=#{args.each_with_index.entries.inspect}")
|
2043
|
+
request_parse = experiment__http_request_parse [
|
2044
|
+
request,
|
2045
|
+
debug_request_parse,
|
2046
|
+
:methods_to_call.to_nil,
|
2047
|
+
output_exceptions,
|
2048
|
+
]
|
2049
|
+
debug && (stderr.puts "request_parse[2]=#{request_parse[2]}")
|
2050
|
+
require "shellwords"
|
2051
|
+
# request_parse[2][0] is the the request_uri
|
2052
|
+
# remove any starting slashes before sending to invoke:
|
2053
|
+
args_for_rubyment = Shellwords.split(request_parse[2][0].to_s.gsub /\/*/, "")
|
2054
|
+
debug && (stderr.puts "args_for_rubyment=#{args_for_rubyment}")
|
2055
|
+
request_stdout = StringIO.new
|
2056
|
+
request_stderr = StringIO.new
|
2057
|
+
# not thread-safe:
|
2058
|
+
@memory[:stdout] = request_stdout
|
2059
|
+
@memory[:stderr] = request_stderr
|
2060
|
+
block = bled [
|
2061
|
+
:no_answer.to_nil,
|
2062
|
+
:no_rescue.negate_me,
|
2063
|
+
:output.negate_me,
|
2064
|
+
] {
|
2065
|
+
invoke args_for_rubyment
|
2066
|
+
}
|
2067
|
+
invoke_result = block.first.call
|
2068
|
+
@memory[:stdout] = stdout
|
2069
|
+
@memory[:stderr] = stderr
|
2070
|
+
html_request_stdout = request_stdout.string.split("\n")
|
2071
|
+
html_request_stderr = request_stderr.string.split("\n")
|
2072
|
+
require 'json'
|
2073
|
+
payload = CGI.escapeHTML JSON.pretty_generate({
|
2074
|
+
"invoke_result" => invoke_result,
|
2075
|
+
"request_stdout" => html_request_stdout,
|
2076
|
+
"request_stderr" => html_request_stderr,
|
2077
|
+
})
|
2078
|
+
|
2079
|
+
debug && (stderr.puts "args_for_rubyment.size=#{args_for_rubyment.size}")
|
2080
|
+
debug && (stderr.puts "args_for_rubyment.size.nne=#{args_for_rubyment.size.nne}")
|
2081
|
+
debug && (stderr.puts "args_for_rubyment.size.nne.negate_me=#{args_for_rubyment.size.nne.negate_me}")
|
2082
|
+
args_for_rubyment.size.nne.negate_me && (payload = html_content__basic_shell)
|
2083
|
+
debug && (stderr.puts "payload=#{payload}")
|
2084
|
+
location = location.nne ""
|
2085
|
+
version = version.nne "1.1"
|
2086
|
+
code = code.nne "200 OK"
|
2087
|
+
eol = eol.nne "\r\n"
|
2088
|
+
rv = http_response_base [
|
2089
|
+
payload,
|
2090
|
+
:content_type.to_nil,
|
2091
|
+
code,
|
2092
|
+
version,
|
2093
|
+
:keep_alive.to_nil,
|
2094
|
+
debug,
|
2095
|
+
eol,
|
2096
|
+
location,
|
2097
|
+
]
|
2098
|
+
debug && (stderr.puts "will return #{rv.inspect}")
|
2099
|
+
debug && (stderr.puts "#{__method__} returning}")
|
2100
|
+
rv
|
2101
|
+
end
|
2102
|
+
|
2103
|
+
|
1790
2104
|
end
|
1791
2105
|
|
1792
2106
|
|
@@ -2934,6 +3248,8 @@ end
|
|
2934
3248
|
module RubymentModule
|
2935
3249
|
|
2936
3250
|
Object.class_eval { include ModifierForClassObjectModule }
|
3251
|
+
include RubymentHTMLModule
|
3252
|
+
include RubymentStringsModule
|
2937
3253
|
include InternalRubymentModule
|
2938
3254
|
include RubymentExperimentModule
|
2939
3255
|
include RubymentMaintainedModule
|
@@ -2993,7 +3309,7 @@ module RubymentModule
|
|
2993
3309
|
:stdout => STDOUT,
|
2994
3310
|
:stdin => STDIN,
|
2995
3311
|
:time => Time.now,
|
2996
|
-
:major_version => "0.
|
3312
|
+
:major_version => "0.7",
|
2997
3313
|
:basic_version => (Time.now.to_i / 60), # new one every minute
|
2998
3314
|
:filepath => __FILE__,
|
2999
3315
|
:running_dir => Dir.pwd,
|
@@ -3022,10 +3338,21 @@ module RubymentModule
|
|
3022
3338
|
memory = @memory
|
3023
3339
|
major_version = memory[:major_version]
|
3024
3340
|
basic_version = memory[:basic_version]
|
3025
|
-
major, minor = args
|
3341
|
+
major, minor, debug = args
|
3342
|
+
stderr = @memory[:stderr]
|
3343
|
+
debug = debug.nne
|
3344
|
+
debug && (stderr.puts "{#{__method__} starting")
|
3345
|
+
debug && (stderr.puts "caller=#{caller_label}")
|
3346
|
+
debug && (stderr.puts "args=#{args.inspect}")
|
3347
|
+
debug && (stderr.puts "args.each_with_index=#{args.each_with_index.entries.inspect}")
|
3348
|
+
debug && (stderr.puts "major_version=#{major_version}")
|
3349
|
+
debug && (stderr.puts "basic_version=#{basic_version}")
|
3026
3350
|
major ||= major_version
|
3027
3351
|
minor ||= basic_version
|
3028
|
-
"#{major}.#{minor}"
|
3352
|
+
rv = "#{major}.#{minor}"
|
3353
|
+
debug && (stderr.puts "#{__method__} will return #{rv.inspect}")
|
3354
|
+
debug && (stderr.puts "#{__method__} returning}")
|
3355
|
+
rv
|
3029
3356
|
end
|
3030
3357
|
|
3031
3358
|
|
@@ -3346,11 +3673,16 @@ module RubymentModule
|
|
3346
3673
|
#
|
3347
3674
|
def object_method_args_call args=ARGV
|
3348
3675
|
stderr = @memory[:stderr]
|
3676
|
+
debug = @memory[:debug]
|
3677
|
+
debug && (stderr.puts "{#{__method__} starting")
|
3678
|
+
debug && (stderr.puts "caller=#{caller_label}")
|
3679
|
+
debug && (stderr.puts "args=#{args.inspect}")
|
3680
|
+
debug && (stderr.puts "args.each_with_index=#{args.each_with_index.entries.inspect}")
|
3349
3681
|
method, object, *call_args = containerize args
|
3350
3682
|
object ||= self
|
3351
3683
|
method = to_object_method [method, object]
|
3352
3684
|
call_args = call_args && (containerize call_args)
|
3353
|
-
begin
|
3685
|
+
rv = begin
|
3354
3686
|
call_args && (method.call *call_args) || method.call
|
3355
3687
|
rescue NameError => nameError
|
3356
3688
|
# every object (even nil) has :method,
|
@@ -3359,6 +3691,10 @@ module RubymentModule
|
|
3359
3691
|
stderr.puts nameError
|
3360
3692
|
nil
|
3361
3693
|
end
|
3694
|
+
debug && (stderr.puts "#{__method__} will return #{rv.inspect}")
|
3695
|
+
# if raises exception before it will be unbalanced :
|
3696
|
+
debug && (stderr.puts "#{__method__} returning}")
|
3697
|
+
rv
|
3362
3698
|
end
|
3363
3699
|
|
3364
3700
|
|
@@ -4909,29 +5245,36 @@ require '#{gem_name}'
|
|
4909
5245
|
# +gem_spect+:: [String]
|
4910
5246
|
# +user_install+:: [Object]
|
4911
5247
|
# +quiet+:: [Object] if calling the object +nne+ method returns a +false+ value, will print debug information
|
5248
|
+
# +ignored+:: [Object] ignored parameter
|
5249
|
+
# +gem_version+:: [Object]
|
4912
5250
|
# @return [String] console output of gem uninstall
|
4913
5251
|
def gem_uninstall_all args=[]
|
4914
5252
|
stderr = @memory[:stderr]
|
4915
|
-
gem_spec, user_install, quiet, all = args
|
5253
|
+
gem_spec, user_install, quiet, all, gem_version = args
|
4916
5254
|
all = "-a"
|
4917
|
-
gem_uninstall [gem_spec, user_install, quiet, all]
|
5255
|
+
gem_uninstall [gem_spec, user_install, quiet, all, gem_version]
|
4918
5256
|
end
|
4919
5257
|
|
4920
5258
|
|
4921
5259
|
# gem_uninstall
|
4922
5260
|
# args:
|
4923
|
-
# [
|
4924
|
-
#
|
4925
|
-
#
|
5261
|
+
# @param [Array] +args+, an +Array+ whose elements are expected to be:
|
5262
|
+
# +gem_spect+:: [String]
|
5263
|
+
# +user_install+:: [Object]
|
5264
|
+
# +quiet+:: [Object] if calling the object +nne+ method returns a +false+ value, will print debug information
|
5265
|
+
# +ignored+:: [Object] ignored parameter
|
5266
|
+
# +gem_version+:: [Object]
|
5267
|
+
# @return [String] console output of gem uninstall
|
4926
5268
|
def gem_uninstall args=ARGV
|
4927
5269
|
stderr = @memory[:stderr]
|
4928
5270
|
system_user_is_super = @memory[:system_user_is_super]
|
4929
|
-
gem_spec, user_install, quiet, all = args
|
5271
|
+
gem_spec, user_install, quiet, all, gem_version = args
|
4930
5272
|
quiet = quiet.nne
|
4931
5273
|
debug = quiet.negate_me
|
4932
5274
|
all = all.nne ""
|
5275
|
+
gem_version = gem_version && ("--version #{gem_version}") || ""
|
4933
5276
|
user_install ||= (!system_user_is_super) && "--user-install" || ""
|
4934
|
-
command="gem uninstall #{all} -x #{user_install} #{gem_spec}"
|
5277
|
+
command="gem uninstall #{all} -x #{user_install} #{gem_spec} #{gem_version}"
|
4935
5278
|
debug && (stderr.puts "command=#{command}")
|
4936
5279
|
`#{command}`
|
4937
5280
|
end
|
@@ -4948,9 +5291,16 @@ require '#{gem_name}'
|
|
4948
5291
|
reserved = args
|
4949
5292
|
quiet = quiet.nne
|
4950
5293
|
debug = quiet.negate_me
|
4951
|
-
|
4952
|
-
|
4953
|
-
|
5294
|
+
effective_command="gem list | grep #{gem_spec}"
|
5295
|
+
command="gem list"
|
5296
|
+
debug && (stderr.puts "command=#{effective_command}")
|
5297
|
+
command_output = shell_popen3_command([command])[0]
|
5298
|
+
grep_command_output = command_output.select { |l|
|
5299
|
+
l.match /#{gem_spec}/
|
5300
|
+
}
|
5301
|
+
spec_grep_output = grep_command_output.join("\n")
|
5302
|
+
puts spec_grep_output
|
5303
|
+
spec_grep_output
|
4954
5304
|
end
|
4955
5305
|
|
4956
5306
|
# validate_require
|
@@ -4958,22 +5308,40 @@ require '#{gem_name}'
|
|
4958
5308
|
# returns nil if not found
|
4959
5309
|
# args:
|
4960
5310
|
# [requirement (String), validator_class (Class or String or nil),
|
4961
|
-
# validator_args (Array), validator_method (Method or String)
|
5311
|
+
# validator_args (Array), validator_method (Method or String),
|
5312
|
+
# file_to_load_instead (String)]
|
4962
5313
|
# returns:
|
4963
5314
|
# Rubyment, true or false
|
4964
5315
|
def validate_require args=ARGV
|
4965
5316
|
stderr = @memory[:stderr]
|
4966
|
-
|
5317
|
+
debug = @memory[:debug]
|
5318
|
+
debug && (stderr.puts "{#{__method__} starting")
|
5319
|
+
debug && (stderr.puts "caller=#{caller_label}")
|
5320
|
+
debug && (stderr.puts "args=#{args.inspect}")
|
5321
|
+
debug && (stderr.puts "args.each_with_index=#{args.each_with_index.entries.inspect}")
|
5322
|
+
requirement,
|
5323
|
+
validator_class,
|
5324
|
+
validator_args,
|
5325
|
+
validator_method,
|
5326
|
+
file_to_load_instead,
|
5327
|
+
reserved = containerize args
|
4967
5328
|
validate_call = validator_class && true
|
4968
5329
|
validator_class = to_class validator_class
|
4969
5330
|
validator_method ||= "new"
|
4970
|
-
begin
|
4971
|
-
require requirement
|
5331
|
+
rv = begin
|
5332
|
+
debug && (file_to_load_instead.nne.negate_me) && (stderr.puts "will require #{requirement}")
|
5333
|
+
(file_to_load_instead.nne.negate_me) && (require requirement)
|
5334
|
+
debug && (file_to_load_instead) && (stderr.puts "will load #{file_to_load_instead}")
|
5335
|
+
(file_to_load_instead) && (load file_to_load_instead)
|
4972
5336
|
validate_call && (object_method_args_call [validator_method, validator_class, validator_args]) || (!validate_call) && true
|
4973
5337
|
rescue LoadError => e
|
4974
5338
|
stderr.puts e
|
4975
5339
|
nil
|
4976
5340
|
end
|
5341
|
+
|
5342
|
+
debug && (stderr.puts "#{__method__} will return #{rv.inspect}")
|
5343
|
+
debug && (stderr.puts "#{__method__} returning}")
|
5344
|
+
rv
|
4977
5345
|
end
|
4978
5346
|
|
4979
5347
|
# system_rubyment
|
@@ -5070,6 +5438,7 @@ require '#{gem_name}'
|
|
5070
5438
|
gem_validate_class,
|
5071
5439
|
gem_validate_class_args,
|
5072
5440
|
gem_validate_class_method,
|
5441
|
+
gem_is_current_file,
|
5073
5442
|
]
|
5074
5443
|
end
|
5075
5444
|
|
@@ -5097,6 +5466,14 @@ require '#{gem_name}'
|
|
5097
5466
|
# true or false
|
5098
5467
|
def gem_validate args=ARGV
|
5099
5468
|
memory = @memory
|
5469
|
+
debug = @memory[:debug]
|
5470
|
+
stderr = @memory[:stderr]
|
5471
|
+
|
5472
|
+
debug = debug.nne
|
5473
|
+
debug && (stderr.puts "{#{__method__} starting")
|
5474
|
+
debug && (stderr.puts "caller=#{caller_label}")
|
5475
|
+
debug && (stderr.puts "args=#{args.inspect}")
|
5476
|
+
debug && (stderr.puts "args.each_with_index=#{args.each_with_index.entries.inspect}")
|
5100
5477
|
gem_defaults = rubyment_gem_defaults args
|
5101
5478
|
gem_name, gem_version = gem_defaults
|
5102
5479
|
gem_files, gem_is_current_file = gem_files_args gem_defaults
|
@@ -5110,21 +5487,28 @@ require '#{gem_name}'
|
|
5110
5487
|
gem_bin_generate,
|
5111
5488
|
gem_bin_contents,
|
5112
5489
|
]
|
5113
|
-
already_installed = (
|
5114
|
-
validate_require gem_validate_args gem_defaults
|
5115
|
-
)
|
5116
|
-
sleep 1
|
5117
|
-
already_installed && (gem_uninstall_all [gem_name])
|
5118
|
-
puts gem_list [gem_name]
|
5119
5490
|
p (gem_path [gem_name, gem_version])
|
5120
5491
|
gem_install [(gem_path [gem_name, gem_version])]
|
5121
|
-
|
5122
|
-
v = (
|
5492
|
+
listing = gem_list [gem_name]
|
5493
|
+
v = listing.index version([])
|
5494
|
+
debug && v && (stderr.puts "gem installed(#{v})")
|
5495
|
+
debug && v.negate_me && (stderr.puts "gem not installed(#{v})")
|
5496
|
+
v &&= (
|
5123
5497
|
validate_require gem_validate_args gem_defaults
|
5124
5498
|
)
|
5125
|
-
|
5126
|
-
|
5499
|
+
gem_uninstall [
|
5500
|
+
gem_name,
|
5501
|
+
:user_install.to_nil,
|
5502
|
+
:quiet.to_nil,
|
5503
|
+
:all.to_nil,
|
5504
|
+
gem_version,
|
5505
|
+
]
|
5127
5506
|
v
|
5507
|
+
rv = v
|
5508
|
+
debug && (stderr.puts "#{__method__} will return #{rv.inspect}")
|
5509
|
+
# if raises exception before it will be unbalanced :
|
5510
|
+
debug && (stderr.puts "#{__method__} returning}")
|
5511
|
+
rv
|
5128
5512
|
end
|
5129
5513
|
|
5130
5514
|
|