dyndoc-ruby 1.4.0 → 1.4.6

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
  SHA256:
3
- metadata.gz: 874ff2bfd3cfd0a3cbc30680e7ddadb68be8a3c417d85582e05c699855a96cec
4
- data.tar.gz: c47643d6023b0c525a23944127f578eb4c519cc19d35302deb7fdc4724f248f7
3
+ metadata.gz: 8ca881ea3393dc076e5e9c0906d7b1b6ada9e7e137ed7b51c6e2747d87e0eab5
4
+ data.tar.gz: 0d70c629074f76cffc709ead2f8672676f5f301c63addca578307ed7656ddca0
5
5
  SHA512:
6
- metadata.gz: 43fc0de9ab39f1dbee93acd2d3bedc272b21b154227dfe5a3c2c943816ae3f23a0e1b8372b2fd773181c5bd033d022d681900baf88c3c1ab64d686ca8ad698ad
7
- data.tar.gz: 0ead492497f229e9b37b04196336e3910db2611c1af3bd9d8fcf23a2943c7703b3e9def436ede1b3c0753e32670931dd7c0bc08bbb7eda3db40b3c39abbbd301
6
+ metadata.gz: 057d227514732b85c02080275d55fae7c1523c93df7e397ba6d559709cbdce21e17c46770fbf4a3370fb78e76ec6ab710fbaddb9d903031f41cc444340833751
7
+ data.tar.gz: 6f0723b13c1f65ca9fd028b18c05d312a9f0459c571ab191a6c8043059f5c3b88b176bffff10eb7a28f7c93f4f1e4823b835f9b5c6ae0518555ac48212204044
data/bin/dyn-ctl CHANGED
@@ -6,6 +6,15 @@ SRVS=["dyn-srv","dyn-html","dyn-http","dyn-task"]
6
6
  CMD="dyn-ctl"
7
7
  DYNCTL_PLIST=File.expand_path("~/Library/LaunchAgents/local.dyn-ctl.plist")
8
8
 
9
+ def srvs?(srvs)
10
+ if srvs
11
+ srvs=srvs.split(",",-1).map{|e| "dyn-"+e}
12
+ else
13
+ srvs=SRVS.dup
14
+ end
15
+ return srvs
16
+ end
17
+
9
18
  case (ARGV[0] || "start").downcase
10
19
  when "init"
11
20
  rodasrv=File.expand_path("~/RodaSrv")
@@ -58,7 +67,8 @@ when "unwatch"
58
67
  end
59
68
 
60
69
  when "start"
61
- status=SRVS.map do |srv|
70
+ srvs=srvs?(ARGV[1])
71
+ status=srvs.map do |srv|
62
72
  `#{srv} status`.empty?
63
73
  end
64
74
  if status.any?
@@ -69,16 +79,18 @@ when "start"
69
79
  `osascript -e '#{cmd_to_display}'`
70
80
  end
71
81
  puts message
72
- status.each_with_index { |e,i| `#{SRVS[i]} start` if e }
82
+ status.each_with_index { |e,i| `#{srvs[i]} start` if e }
73
83
  end
74
84
 
75
85
  when "stop"
76
- SRVS.each {|srv| `#{srv} stop`}
86
+ srvs=srvs?(ARGV[1])
87
+ srvs.each {|srv| `#{srv} stop`}
77
88
 
78
89
  when "status"
79
- SRVS.each {|srv| puts srv+(`#{srv} status`.empty? ? "stopped" : "running")}
90
+ srvs=srvs?(ARGV[1])
91
+ srvs.each {|srv| puts srv+"->"+(`#{srv} status`.empty? ? "stopped" : "running")}
80
92
 
81
- when "new"
93
+ when "new"
82
94
 
83
95
  if RUBY_PLATFORM =~ /darwin/
84
96
  ## launchctl seems to work but actually: dyn-srv, dyn-html and dyn-http started but noit properly
data/bin/dyn-rebase-url CHANGED
@@ -29,7 +29,7 @@ if opts[:help]
29
29
  puts "rebase_url [--dir] [--from <from_path>] [--to <to_path>] [--ext <extension>] file"
30
30
  else
31
31
  ext=opts[:ext] ? "."+opts[:ext] : ""
32
- files=opts[:dir] ? Dir[File.join(file,"*"+ext)] : [file]
32
+ files=opts[:"--dir"] ? Dir[File.join(file,"*"+ext)] : [file]
33
33
  ##p files
34
34
  ##p opts
35
35
  files.each do |filename|
@@ -1,4 +1,5 @@
1
1
  require "socket"
2
+ require 'dyndoc-servers-cfg'
2
3
 
3
4
  module Dyndoc
4
5
 
@@ -11,7 +12,7 @@ module Dyndoc
11
12
  ## reinit is an array
12
13
  def initialize(cmd,tmpl_filename,addr="127.0.0.1",reinit=[],port=7777)
13
14
 
14
- @addr,@port,@cmd,@tmpl_filename=addr,port,cmd,tmpl_filename
15
+ @addr,@port,@cmd,@tmpl_filename=addr,DyndocServers.dyn_cli_port? || port,cmd,tmpl_filename
15
16
  ##p [:tmpl_filename,@tmpl_filename,@cmd]
16
17
  ## The layout needs to be reintailized for new dyndoc file but not for the layout (of course)!
17
18
  dyndoc_cmd="dyndoc"
@@ -1,6 +1,7 @@
1
1
  require 'socket' # Get sockets from stdlib
2
2
  require "dyndoc-core"
3
3
  require 'dyndoc-converter'
4
+ require 'dyndoc-servers-cfg'
4
5
 
5
6
 
6
7
  module Dyndoc
@@ -67,7 +68,7 @@ module Dyndoc
67
68
  end
68
69
 
69
70
  def init_server
70
- @server = TCPServer.new('0.0.0.0',7777)
71
+ @server = TCPServer.new('0.0.0.0',DyndocServers.dyn_srv_port? || 7777)
71
72
  end
72
73
 
73
74
  def run
@@ -2,6 +2,7 @@ require 'dyndoc/init/home'
2
2
  require 'pathname'
3
3
  require 'yaml'
4
4
  require 'filewatcher'
5
+ require 'dyndoc-servers-cfg'
5
6
 
6
7
  #if RUBY_VERSION >= "2.4"
7
8
  class FileWatcher < Filewatcher
@@ -228,7 +229,8 @@ module Dyndoc
228
229
 
229
230
  def HtmlServers.dyn_http_server(host=nil,port=nil)
230
231
  require 'thin'
231
- dyn_html_srv_ru="/home/ubuntu/tools/dyn-html/srv.ru" # DyndocDockerSite guest-tools folder
232
+ dyn_html_srv_ru=File.join(ENV["HOME"],"RodaSrv","public","users",".dyn-html","srv.ru")
233
+ dyn_html_srv_ru="/home/ubuntu/tools/dyn-html/srv.ru" unless File.exists? dyn_html_srv_ru # DyndocDockerSite guest-tools folder
232
234
  dyn_html_srv_ru=File.join(ENV["HOME"],"dyndoc","html-srv","dyn.ru") unless File.exists? dyn_html_srv_ru
233
235
  dyn_html_srv_ru=File.expand_path("../../share/html-srv/dyn-html-srv.ru",__FILE__) unless File.exists? dyn_html_srv_ru
234
236
 
@@ -236,7 +238,7 @@ module Dyndoc
236
238
  if HtmlServers.cfg["html-srv-port"]
237
239
  arg += ["-p",HtmlServers.cfg["html-srv-port"].to_s]
238
240
  else
239
- arg += ["-p",port || "9294"]
241
+ arg += ["-p",(port || DyndocServers.dyn_http_port? || 9294).to_s]
240
242
  end
241
243
  if host
242
244
  arg += ["-a",host]
@@ -248,6 +250,23 @@ module Dyndoc
248
250
  Thin::Runner.new(arg).run!
249
251
  end
250
252
 
253
+ def HtmlServers.create_html_page(dyn_file,html_file,opts,pages_root)
254
+
255
+ Dyndoc.cli_convert_from_file(dyn_file[1..-1],html_file, opts)
256
+ ## fix html_file for _rmd, _adoc and _ttm
257
+ if html_file =~ /^(.*)_(rmd|adoc|ttm)\.html$/
258
+ html_file = $1+".html"
259
+ end
260
+ if html_file =~ /^(.*)_erb\.html$/
261
+ erb_page=File.join(pages_root,$1)
262
+ if File.exists? erb_page+"_erb.html"
263
+ FileUtils.mv erb_page+"_erb.html",erb_page+".erb"
264
+ end
265
+ html_file = "erb"+$1
266
+ end
267
+
268
+ end
269
+
251
270
  def HtmlServers.dyn_html_filewatcher(cfg={}) #cfg
252
271
  require 'dyndoc-convert'
253
272
  require 'dyndoc-edit'
@@ -257,14 +276,14 @@ module Dyndoc
257
276
  $VERBOSE = nil
258
277
  options={first: true}
259
278
  ## To put inside yaml config file!
260
- root ||= cfg["root"] || HtmlServers.cfg["root"] || File.join(ENV["HOME"],"RCqls","RodaServer")
279
+ root ||= cfg["root"] || HtmlServers.cfg["root"] || File.join(ENV["HOME"],"RodaSrv")
261
280
  dyn_root = cfg["dyn_root"] || HtmlServers.cfg["dyn_root"] || File.join(root ,"edit")
262
281
  public_root = cfg["public_root"] || HtmlServers.cfg["public_root"] || File.join(root ,"public")
263
282
  dyn_public_edit_root = File.join(public_root,"users","*",".edit","**","*.dyn")
264
283
  pages_root = File.join(public_root ,"pages")
265
284
  current_email = cfg["email"] || HtmlServers.cfg["email"] || "rdrouilh@gmail.com" #default email user can be overriden by -u option
266
285
  host=(cfg["html-srv-host"] || HtmlServers.cfg["html-srv-host"] || "http://localhost").to_s
267
- port=(cfg["html-srv-port"] || HtmlServers.cfg["html-srv-port"] || "9294").to_s
286
+ port=(cfg["html-srv-port"] || HtmlServers.cfg["html-srv-port"] || DyndocServers.dyn_http_port? || "9294").to_s
268
287
  base_url= host+":"+port
269
288
 
270
289
  opts = {
@@ -310,18 +329,8 @@ module Dyndoc
310
329
  ##p [:opts,opts,:current_doc_tag,opts[:current_doc_tag]]
311
330
  state=""
312
331
  begin
313
- Dyndoc.cli_convert_from_file(dyn_file[1..-1],html_file, opts)
314
- ## fix html_file for _rmd, _adoc and _ttm
315
- if html_file =~ /^(.*)_(rmd|adoc|ttm)\.html$/
316
- html_file = $1+".html"
317
- end
318
- if html_file =~ /^(.*)_erb\.html$/
319
- erb_page=File.join(pages_root,$1)
320
- if File.exists? erb_page+"_erb.html"
321
- FileUtils.mv erb_page+"_erb.html",erb_page+".erb"
322
- end
323
- html_file = "erb"+$1
324
- end
332
+ HtmlServers.create_html_page(dyn_file,html_file,opts,pages_root)
333
+
325
334
  puts dyn_file[1..-1]+(dyn_public_edit_file.empty? ? "" : "*")+" processed => "+html_file+" created!"
326
335
  options[:first] = html_file != old_html_file
327
336
  if html_file != old_html_file
@@ -332,8 +341,8 @@ module Dyndoc
332
341
  else
333
342
  Dyndoc::Browser.reload
334
343
  end
335
- rescue
336
- state="error: "
344
+ rescue => e
345
+ state="error: #{e.message} =>"
337
346
  ensure
338
347
  notify_file=filename.split("/")
339
348
  if (ind=notify_file.index ".edit")
@@ -0,0 +1,24 @@
1
+ require 'yaml'
2
+ module DyndocServers
3
+ @@cfg=nil
4
+ @@servers_cfg_file=File.join(ENV["HOME"],".dyndoc-servers.yml")
5
+ def DyndocServers.cfg
6
+ unless @@cfg
7
+ @@cfg=(File.exist? @@servers_cfg_file) ? ::YAML::load_file(@@servers_cfg_file) : {}
8
+ end
9
+ @@cfg
10
+ end
11
+
12
+ def DyndocServers.dyn_cli_port?
13
+ DyndocServers.cfg["ports"] ? @@cfg["ports"]["dyn-cli"] : nil
14
+ end
15
+
16
+ def DyndocServers.dyn_srv_port?
17
+ DyndocServers.cfg["ports"] ? @@cfg["ports"]["dyn-srv"] : nil
18
+ end
19
+
20
+ def DyndocServers.dyn_http_port?
21
+ DyndocServers.cfg["ports"] ? @@cfg["ports"]["dyn-http"] : nil
22
+ end
23
+
24
+ end
data/lib/dyndoc-tasks.rb CHANGED
@@ -98,9 +98,9 @@ def DyndocTasks.dyn_yml(doc)
98
98
  end
99
99
  if is_dyntask
100
100
  dynfile=docname+".dyn"
101
- FileUtils.cp dyntaskpath, dynfile
102
- $params=cfg_yml["params"]
103
- $dyntask=dyntaskname
101
+ FileUtils.cp dyntaskpath, dynfile
102
+ $params=cfg_yml["params"]
103
+ $dyntask=dyntaskname
104
104
  cfg_yml["params"].each do |key,val|
105
105
  Settings["cfg_dyn.user_input"] << [key,val]
106
106
  end
@@ -126,8 +126,16 @@ def DyndocTasks.filewatcher(cfg={}) #cfg
126
126
  ::FileWatcher.new(dyntasks_root).watch() do |filename, event|
127
127
  ##DEBUG:
128
128
  puts filename + "->" + event.to_s+"\n"
129
- if [:changed,:updated,:new].include? event and File.extname(filename) == ".yml"
130
- DyndocTasks.dyn_yml filename
129
+ if [:changed,:updated,:new].include? event
130
+ case File.extname(filename)
131
+ when ".yml"
132
+ DyndocTasks.dyn_yml filename
133
+ when ".rb"
134
+ system("/usr/bin/env ruby "+filename)
135
+ when ".sh"
136
+ system("/usr/bin/env bash "+filename)
137
+ end
138
+
131
139
  end
132
140
  end
133
141
  end
data/lib/dyndoc-world.rb CHANGED
@@ -25,13 +25,37 @@ module DyndocWorld
25
25
  ## access ##
26
26
  ## prj is to give access for a user or a group of users
27
27
  ## if prj or prj/secret is undefined it is accessible
28
- def DyndocWorld.yml?(prj,yml)
28
+ def DyndocWorld.prj_file?(yml)
29
+ prj=yml["prj"] || yml["project"] || "default"
29
30
  admin=(prj=="admin")
30
31
  cfg=DyndocWorld.cfg(admin)
31
32
  cfg=cfg[prj] unless admin
32
- return true unless cfg
33
+ return nil unless cfg and yml["file"]
34
+ parts=yml["file"].split("/")
35
+ p [:parts,parts]
36
+ root=parts.shift
37
+ p [:root,root]
38
+ user=parts.shift
33
39
  ##DEBUG: p [:"yml?", cfg, yml, (cfg and yml and ((cfg["secret"] || "none") == (yml["secret"] || "none")) and yml["file"] and !(yml["file"].include? "../"))]
34
- return (cfg and yml and ((cfg["secret"] || "none") == (yml["secret"] || "none")) and yml["file"] and !(yml["file"].include? "../"))
40
+ if (cfg and yml and ((cfg["secret"] || "none") == (yml["secret"] || "none")) and yml["file"] and !(yml["file"].include? "../")) and ((cfg["users"] || []).include? user)
41
+ prj_file=nil
42
+ if ["public","edit","dynworld"].include? root
43
+ prj_subdir=cfg["subdir"] || ""
44
+ case root
45
+ when "public"
46
+ prj_file=File.join(DyndocWorld.public_root,"users",user)
47
+ prj_file=(Dir.exists? prj_file) ? File.join(prj_file,prj_subdir,parts) : ""
48
+ when "edit"
49
+ prj_file=File.join(DyndocWorld.public_root,"users",user,".edit")
50
+ prj_file=(Dir.exists? prj_file) ? File.join(prj_file,prj_subdir,parts) : ""
51
+ when "dynworld"
52
+ prj_file=File.join(DyndocWorld.root,user,prj_subdir,parts)
53
+ end
54
+ end
55
+ end
56
+ p [:prj_file,prj_file]
57
+ return prj_file
58
+
35
59
  end
36
60
 
37
61
  ## file ##
@@ -39,37 +63,19 @@ module DyndocWorld
39
63
  ## ex: public/<user>/<pathname>
40
64
  ## edit/<user>/<pathname>
41
65
  ## dynworld/<user>/<pathname>
42
- def DyndocWorld.prj_file(yml,content)
43
- success,prj_file=false,""
44
- parts=yml["file"].split("/")
45
- p [:parts,parts]
46
- root=parts.shift
47
- p [:root,root]
48
- if ["public","edit","dynworld"].include? root
49
- user=parts.shift
50
- case root
51
- when "public"
52
- prj_file=File.join(DyndocWorld.public_root,"users",user)
53
- prj_file=(Dir.exists? prj_file) ? File.join(prj_file,parts) : ""
54
- when "edit"
55
- prj_file=File.join(DyndocWorld.public_root,"users",user,".edit")
56
- prj_file=(Dir.exists? prj_file) ? File.join(prj_file,parts) : ""
57
- when "dynworld"
58
- prj_file=File.join(DyndocWorld.root,user,parts)
59
- end
60
- end
61
- p [:prj_file,prj_file]
62
- unless prj_file.empty?
63
- FileUtils.mkdir_p File.dirname prj_file
64
- File.open(prj_file,"w") {|f|
65
- if root == "edit"
66
- f << yml.to_yaml
67
- f << "---\n"
68
- end
69
- f << content.strip
70
- }
71
- success=true
66
+ def DyndocWorld.save_prj_file(prj_file,content)
67
+ FileUtils.mkdir_p File.dirname prj_file
68
+ File.open(prj_file,"w") {|f|
69
+ f << content.strip
70
+ }
71
+ end
72
+
73
+ def DyndocWorld.open_prj_file(prj_file)
74
+ res={success: false}
75
+ if File.exists? prj_file
76
+ res[:content]=File.read(prj_file)
77
+ res[:success]=true
72
78
  end
73
- return success
79
+ return res
74
80
  end
75
81
  end
metadata CHANGED
@@ -1,95 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dyndoc-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - RCqls
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-05 00:00:00.000000000 Z
11
+ date: 2021-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: R4rb
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.0.0
20
17
  - - "~>"
21
18
  - !ruby/object:Gem::Version
22
19
  version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.0.0
30
27
  - - "~>"
31
28
  - !ruby/object:Gem::Version
32
29
  version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: dyndoc-ruby-core
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 1.0.0
40
37
  - - "~>"
41
38
  - !ruby/object:Gem::Version
42
39
  version: '1.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.0.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 1.0.0
50
47
  - - "~>"
51
48
  - !ruby/object:Gem::Version
52
49
  version: '1.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: dyndoc-ruby-doc
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 1.0.0
60
57
  - - "~>"
61
58
  - !ruby/object:Gem::Version
62
59
  version: '1.0'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.0.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 1.0.0
70
67
  - - "~>"
71
68
  - !ruby/object:Gem::Version
72
69
  version: '1.0'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.0.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: dyndoc-ruby-exec
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 0.1.0
80
77
  - - "~>"
81
78
  - !ruby/object:Gem::Version
82
79
  version: '0.1'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.0
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 0.1.0
90
87
  - - "~>"
91
88
  - !ruby/object:Gem::Version
92
89
  version: '0.1'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.1.0
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: asciidoctor
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -188,7 +188,6 @@ executables:
188
188
  - dyn-4ever
189
189
  - dyn-yml
190
190
  - dyn-rebase-url
191
- - dyn-site
192
191
  extensions: []
193
192
  extra_rdoc_files: []
194
193
  files:
@@ -204,7 +203,6 @@ files:
204
203
  - bin/dyn-lint
205
204
  - bin/dyn-rebase-url
206
205
  - bin/dyn-scan
207
- - bin/dyn-site
208
206
  - bin/dyn-srv
209
207
  - bin/dyn-task
210
208
  - bin/dyn-x
@@ -216,6 +214,7 @@ files:
216
214
  - lib/dyndoc-edit.rb
217
215
  - lib/dyndoc-html-servers.rb
218
216
  - lib/dyndoc-linter.rb
217
+ - lib/dyndoc-servers-cfg.rb
219
218
  - lib/dyndoc-tasks.rb
220
219
  - lib/dyndoc-world.rb
221
220
  - lib/dyndoc/cli/interactive-client.rb
@@ -494,7 +493,7 @@ licenses:
494
493
  - MIT
495
494
  - GPL-2.0
496
495
  metadata: {}
497
- post_install_message:
496
+ post_install_message:
498
497
  rdoc_options: []
499
498
  require_paths:
500
499
  - lib
@@ -510,8 +509,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
510
509
  version: '0'
511
510
  requirements:
512
511
  - none
513
- rubygems_version: 3.0.6
514
- signing_key:
512
+ rubygems_version: 3.2.22
513
+ signing_key:
515
514
  specification_version: 4
516
515
  summary: R and Ruby in text document
517
516
  test_files: []
data/bin/dyn-site DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- cmd=::File.expand_path('../../share/dyn-site/dyn-site.sh', __FILE__)+" "+ARGV.join(" ")
4
-
5
- out=`/bin/bash -c "#{cmd}"`
6
-
7
- puts out unless out.empty?