rscript 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dafd9ec99e12b666918cb7b8006d5cd3527c8faf
4
- data.tar.gz: b6ff8fe6150016b7fd1f8a0906c312cc3fdf7bb6
3
+ metadata.gz: dfa743d27a2badb05e6df2a86cd897edde0225b5
4
+ data.tar.gz: 14414cceedeaffab943afe3f6b5ecb847b477856
5
5
  SHA512:
6
- metadata.gz: af4850b00ee83ae347424652cf5e3b9361c52193a07b3b094840e64cec66a7abaafe72ae0f633a1bf0a3d67b29b2b6b77b33e31f3d477dedb87372d3337f2b11
7
- data.tar.gz: d6a31d2d3803c42896ed93b86ba9d9c383b6da4c66864fcb9e567b1da8786faf16b595cbe61710885dd535af83a3308b1431e1d756a4eae758a29316e0f37790
6
+ metadata.gz: cf60bcd9047d5eaa5bc803fb8cf66339a91f7d1c5f5b1db41663f7e32c7cda4ec2976b3517f8381ef42b0dc38546ef96af4754db2842abdb5834ac15111029fc
7
+ data.tar.gz: 573e5164bdf8896978ba8b3730f0a2b66771761b569338696086c3107c8a9a2fec9b44da16f9bb066cfd531196f8829099f71c5b5e09315017da3421320b254d
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
@@ -1 +1 @@
1
- !%n;���X9�"R?Y�ײ
1
+ ��>�l���Aa6}�L�r��c��ʿd2��pV �3��oK�RVLbDjί���hz.�-.8���pj]�<��tW&�ޯ����=��C �"�95�;� =�C�@SΗ�MB��P�]̒w������F1��V�E݇�Ŝ~,/n`��d2�+jR�J���s���n�&�H�~� |��:n���u�n�E�÷M�O�N���Ü!�8���d���@���Ϙr�[ �����nyfԅ�"6��1�V�����
data/lib/rscript.rb CHANGED
@@ -32,5 +32,148 @@
32
32
  # MIT license - basically you can do anything you like with the script.
33
33
  # http://www.opensource.org/licenses/mit-license.php
34
34
 
35
- require 'rscript/rscript'
36
- require 'rscript/rscript_base'
35
+
36
+ require 'rscript_base'
37
+ require 'hashcache'
38
+ require 'rexle'
39
+
40
+
41
+ class RScript < RScriptBase
42
+
43
+ def initialize(logfile: '', logrotate: 'daily', pkg_src: '', cache: true)
44
+
45
+ @logger = Logger.new logfile, logrotate unless logfile.empty?
46
+ @cache = cache
47
+ @rsf_cache = HashCache.new({cache: 5}) if cache
48
+
49
+ end
50
+
51
+ def read(args=[])
52
+
53
+ if @logger then
54
+
55
+ @logger.debug 'inside RScript#read'
56
+ @logger.debug 'RScript -> args: ' + args.inspect
57
+
58
+ end
59
+
60
+ threads = []
61
+
62
+ if args.to_s[/\/\/job:/] then
63
+
64
+ ajob = []
65
+
66
+ args.each_index do |i|
67
+ if args[i][/\/\/job:/] then
68
+ ajob << "@id='#{$'}'"; args[i] = nil
69
+ end
70
+ end
71
+
72
+ args.compact!
73
+
74
+ out = read_rsf(args) do |doc|
75
+ doc.root.xpath("//job[#{ajob.join(' or ')}]").map do |job|
76
+ job.xpath('script').map {|s| read_script(s)}.join("\n")
77
+ end.join("\n")
78
+ end
79
+
80
+ raise "job not found" unless out.length > 0
81
+ out
82
+
83
+ else
84
+ out = read_rsf(args) {|doc| doc.root.xpath('//script').map {|s| read_script(s)}}.join("\n")
85
+ end
86
+
87
+ @logger.debug 'RScript -> out: ' + out.inspect[0..250] if @logger
88
+
89
+ [out, args]
90
+ end
91
+
92
+ def reset()
93
+ @rsf_cache.reset
94
+ end
95
+
96
+ # note: run() was copied from the development file rscript-wrapper.rb
97
+ def run(raw_args, params={}, rws=nil)
98
+
99
+ if @logger then
100
+ @logger.debug 'inside RScript#run'
101
+ @logger.debug 'RScript -> raw_args: ' + raw_args.inspect
102
+ end
103
+
104
+ if params[:splat] then
105
+ params.each do |k,v|
106
+ params.delete k unless k == :splat or k == :package or k == :job or k == :captures
107
+ end
108
+ end
109
+
110
+ if params[:splat] and params[:splat].length > 0 then
111
+ h = params[:splat].first[1..-1].split('&').inject({}) do |r,x|
112
+ k, v = x.split('=')
113
+ v ? r.merge(k[/\w+$/].to_sym => v) : r
114
+ end
115
+ params.merge! h
116
+ end
117
+
118
+ code2, args = self.read raw_args
119
+ @logger.debug 'RScript -> code2: ' + code2.inspect[0..250] if @logger
120
+
121
+ begin
122
+
123
+ =begin
124
+ thread = Thread.new(code2) do |x|
125
+
126
+ begin
127
+ Thread.current['result'] = eval x
128
+ rescue
129
+ @logger.debug('RScript -> eval: ' + ($!).inspect) if @logger
130
+ end
131
+
132
+ end
133
+ thread.join
134
+ =end
135
+ #puts 'code2 :' + code2.inspect
136
+ r = eval code2
137
+ #r = thread['result']
138
+
139
+ params = {}
140
+
141
+ return r
142
+
143
+ rescue Exception => e
144
+ params = {}
145
+ err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
146
+ return err_label
147
+ end
148
+
149
+ end
150
+
151
+ private
152
+
153
+ def read_rsf(args=[])
154
+
155
+ rsfile = args[0]; args.shift
156
+
157
+ $rsfile = rsfile[/[^\/]+(?=\.rsf)/]
158
+
159
+ buffer = if @cache then
160
+ @rsf_cache.read(rsfile) {read_sourcecode(rsfile) }
161
+ else
162
+ read_sourcecode(rsfile)
163
+ end
164
+
165
+ @url_base = rsfile[/\w+:\/\/[^\/]+/]
166
+
167
+ doc = Rexle.new(buffer)
168
+ yield(doc)
169
+
170
+ end
171
+
172
+ end
173
+
174
+ if __FILE__ == $0 then
175
+ raw_args = ARGV
176
+ rs = RScript.new()
177
+ code, args = rs.read(raw_args)
178
+ puts eval(code).join("\n")
179
+ end
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: rscript_base.rb
4
+
5
+ require 'cgi'
6
+ require 'open-uri'
7
+ require 'rxfhelper'
8
+
9
+ class RScriptBase
10
+
11
+ def initialize()
12
+ end
13
+
14
+ def read(doc)
15
+ doc.root.xpath('//script').map {|s| run_script(s)}.join(';')
16
+ end
17
+
18
+ protected
19
+
20
+ def read_script(script)
21
+ out_buffer = ''
22
+
23
+ src = script.attributes[:src]
24
+
25
+ out_buffer = if src then
26
+ read_sourcecode(script.attributes[:src].to_s)
27
+ else
28
+ script.texts.join("\n")
29
+ end
30
+
31
+ out_buffer
32
+ end
33
+
34
+ def read_sourcecode(rsf)
35
+
36
+ buffer, type = RXFHelper.read rsf
37
+
38
+ case type
39
+ when :url, :file
40
+ buffer
41
+ when :relative_url
42
+ open(@url_base + rsf, "UserAgent" => "rscript"){|x| x.read}
43
+ end
44
+ end
45
+
46
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -100,6 +100,7 @@ extensions: []
100
100
  extra_rdoc_files: []
101
101
  files:
102
102
  - lib/rscript.rb
103
+ - lib/rscript_base.rb
103
104
  homepage: https://github.com/jrobertson/rscript
104
105
  licenses:
105
106
  - MIT
metadata.gz.sig CHANGED
Binary file