rscript 0.3.0 → 0.3.1

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 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