dyndoc-ruby 1.3.0 → 1.4.0

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: 9ead83e394d38dcc18626162ada3e9fc5077d1e5673a6992227811bfda153fd5
4
- data.tar.gz: be7ce6c24f93febcfddf6822aaf30e4dad4978cbbc8e88e47c02d6902cff525e
3
+ metadata.gz: 874ff2bfd3cfd0a3cbc30680e7ddadb68be8a3c417d85582e05c699855a96cec
4
+ data.tar.gz: c47643d6023b0c525a23944127f578eb4c519cc19d35302deb7fdc4724f248f7
5
5
  SHA512:
6
- metadata.gz: 924604a6f99dd1fc71ec45c2fb7d062b4564ae569bc8d6328ddbf2ae7e1ed88326aa607e8e62f7ba99f95ed68cef0e46732bcbc9468d8caa5ffa0b3abf039524
7
- data.tar.gz: 015316465d1ac2db277a1390e4566a525e5005fdb45b9ea333e89b61014a8f870cdc6305a8301772bf5c8a70e5f0634704410fc26068f365fdd3da5c6356842d
6
+ metadata.gz: 43fc0de9ab39f1dbee93acd2d3bedc272b21b154227dfe5a3c2c943816ae3f23a0e1b8372b2fd773181c5bd033d022d681900baf88c3c1ab64d686ca8ad698ad
7
+ data.tar.gz: 0ead492497f229e9b37b04196336e3910db2611c1af3bd9d8fcf23a2943c7703b3e9def436ede1b3c0753e32670931dd7c0bc08bbb7eda3db40b3c39abbbd301
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ cur=0
4
+ opts={mode: :default, to: ""}
5
+
6
+ ##p ARGV
7
+
8
+ while ["--dir","--mode","--from","--to","--help","--ext"].include? ARGV[cur]
9
+ ##p [:cur,ARGV[cur]]
10
+ case ARGV[cur]
11
+ when "--dir","--help"
12
+ opts[ARGV[cur].to_sym]=true
13
+ cur += 1
14
+ when "--mode"
15
+ opts[:mode]==ARGV[cur+1].to_sym if ["default","href"].include? ARGV[cur+1]
16
+ cur += 2
17
+ when "--from","--to"
18
+ opts[ARGV[cur][2..-1].to_sym]=ARGV[cur+1]
19
+ cur += 2
20
+ when "--ext"
21
+ opts[ARGV[cur].to_sym]=ARGV[cur+1]
22
+ cur += 2
23
+ end
24
+ end
25
+
26
+ file=ARGV[cur]
27
+ opts[:help]=true unless file
28
+ if opts[:help]
29
+ puts "rebase_url [--dir] [--from <from_path>] [--to <to_path>] [--ext <extension>] file"
30
+ else
31
+ ext=opts[:ext] ? "."+opts[:ext] : ""
32
+ files=opts[:dir] ? Dir[File.join(file,"*"+ext)] : [file]
33
+ ##p files
34
+ ##p opts
35
+ files.each do |filename|
36
+ content=File.read(filename)
37
+ File.open(filename,"w") do |f|
38
+ case opts[:mode]
39
+ when :href
40
+ f << content.gsub(/\ href="#{opts[:from]}/," href=\""+opts[:to])
41
+ else
42
+ f << content.gsub(/#{opts[:from]}/,opts[:to])
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,7 @@
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?
@@ -228,7 +228,10 @@ module Dyndoc
228
228
 
229
229
  def HtmlServers.dyn_http_server(host=nil,port=nil)
230
230
  require 'thin'
231
- dyn_html_srv_ru=File.expand_path("../../share/html-srv/dyn-html-srv.ru",__FILE__)
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"],"dyndoc","html-srv","dyn.ru") unless File.exists? dyn_html_srv_ru
233
+ dyn_html_srv_ru=File.expand_path("../../share/html-srv/dyn-html-srv.ru",__FILE__) unless File.exists? dyn_html_srv_ru
234
+
232
235
  arg=["-R",dyn_html_srv_ru]
233
236
  if HtmlServers.cfg["html-srv-port"]
234
237
  arg += ["-p",HtmlServers.cfg["html-srv-port"].to_s]
@@ -270,10 +273,11 @@ module Dyndoc
270
273
  user: nil #current_email
271
274
  }
272
275
 
273
- puts "watching "+ dyn_root+ " and " + dyn_public_edit_root
276
+ puts "watching "+ dyn_public_edit_root + " and " + dyn_root
274
277
  old_html_file=""
275
- ::FileWatcher.new([dyn_root,dyn_public_edit_root]).watch() do |filename, event|
276
- ##p [:filename,filename,event]
278
+ ::FileWatcher.new([dyn_public_edit_root,dyn_root]).watch() do |filename, event|
279
+ ##
280
+ p [:filename,filename,event]
277
281
  if [:changed,:updated,:new].include? event and File.extname(filename) == ".dyn"
278
282
  ##p [:filename_event,event,filename]
279
283
  if (lint_error=Dyndoc::Linter.check_file(filename)).empty?
@@ -304,27 +308,40 @@ module Dyndoc
304
308
 
305
309
  html_file=opts[:html_files][opts[:current_doc_tag]] # No more default # || html_files[""]
306
310
  ##p [:opts,opts,:current_doc_tag,opts[:current_doc_tag]]
307
- Dyndoc.cli_convert_from_file(dyn_file[1..-1],html_file, opts)
308
- ## fix html_file for _rmd, _adoc and _ttm
309
- if html_file =~ /^(.*)_(rmd|adoc|ttm)\.html$/
310
- html_file = $1+".html"
311
- end
312
- if html_file =~ /^(.*)_erb\.html$/
313
- erb_page=File.join(pages_root,$1)
314
- if File.exists? erb_page+"_erb.html"
315
- FileUtils.mv erb_page+"_erb.html",erb_page+".erb"
311
+ state=""
312
+ 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
325
+ puts dyn_file[1..-1]+(dyn_public_edit_file.empty? ? "" : "*")+" processed => "+html_file+" created!"
326
+ options[:first] = html_file != old_html_file
327
+ if html_file != old_html_file
328
+ old_html_file = html_file
329
+ url=File.join(base_url,html_file)
330
+ ## p [:url,url]
331
+ Dyndoc::Browser.load(url)
332
+ else
333
+ Dyndoc::Browser.reload
334
+ end
335
+ rescue
336
+ state="error: "
337
+ ensure
338
+ notify_file=filename.split("/")
339
+ if (ind=notify_file.index ".edit")
340
+ notify_file=notify_file[0..ind].join("/")
341
+ File.open(notify_file+"/notify.out","w") do |f|
342
+ f << state + filename
343
+ end
316
344
  end
317
- html_file = "erb"+$1
318
- end
319
- puts dyn_file[1..-1]+(dyn_public_edit_file.empty? ? "" : "*")+" processed => "+html_file+" created!"
320
- options[:first] = html_file != old_html_file
321
- if html_file != old_html_file
322
- old_html_file = html_file
323
- url=File.join(base_url,html_file)
324
- ## p [:url,url]
325
- Dyndoc::Browser.load(url)
326
- else
327
- Dyndoc::Browser.reload
328
345
  end
329
346
  end
330
347
  end
@@ -83,6 +83,10 @@ def DyndocTasks.dyn_yml(doc)
83
83
  dyntaskname += "_task.dyn" unless dyntaskname=~/_task.dyn$/
84
84
  dyntaskpath=dyntaskname
85
85
  is_dyntask=File.exists? dyntaskpath
86
+ unless is_dyntask
87
+ dyntaskpath=File.join(ENV["HOME"],".dyndoc-world","tasks",dyntaskname)
88
+ is_dyntask=File.exists? dyntaskpath
89
+ end
86
90
  unless is_dyntask
87
91
  dyntaskpath=File.join(ENV["HOME"],"dyndoc","tasks",dyntaskname)
88
92
  is_dyntask=File.exists? dyntaskpath
@@ -0,0 +1,75 @@
1
+ require 'yaml'
2
+
3
+ module DyndocWorld
4
+
5
+ @@root=nil
6
+ @@public=nil
7
+
8
+ def DyndocWorld.root(root=nil)
9
+ @@root=root if root
10
+ return @@root
11
+ end
12
+
13
+ def DyndocWorld.public_root(public_root=nil)
14
+ @@public=public_root if public_root
15
+ return @@public
16
+ end
17
+
18
+ def DyndocWorld.cfg(admin=nil)
19
+ cfg={}
20
+ secret = File.join(DyndocWorld.root,admin ? ".admin.yml" : ".secret.yml")
21
+ cfg = YAML::load_file(secret) if DyndocWorld.root and File.exists? secret
22
+ return cfg
23
+ end
24
+
25
+ ## access ##
26
+ ## prj is to give access for a user or a group of users
27
+ ## if prj or prj/secret is undefined it is accessible
28
+ def DyndocWorld.yml?(prj,yml)
29
+ admin=(prj=="admin")
30
+ cfg=DyndocWorld.cfg(admin)
31
+ cfg=cfg[prj] unless admin
32
+ return true unless cfg
33
+ ##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? "../"))
35
+ end
36
+
37
+ ## file ##
38
+ ## from yml
39
+ ## ex: public/<user>/<pathname>
40
+ ## edit/<user>/<pathname>
41
+ ## 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
72
+ end
73
+ return success
74
+ end
75
+ end
@@ -10,12 +10,10 @@ cfg.merge! YAML::load_file(cfg_yml) if File.exist? cfg_yml
10
10
  root = cfg["root"] || File.join(ENV["HOME"],"RCqls","RodaServer")
11
11
  $public_root = cfg["public_root"] || File.join(root ,"public")
12
12
  ##p [:public_root,$public_root]
13
- $dynworld_root=cfg["dynworld_root"] || File.join(ENV["HOME"],".dyndoc-world")
14
- $dynworld_tools=cfg["dynworld_tools"] || File.join(ENV["HOME"],"Gogs","dynworld")
15
- if Dir.exists? $dynworld_tools
16
- require File.join($dynworld_tools,"tools.rb")
17
- puts "Dynworld activated"
18
- end
13
+
14
+ require 'dyndoc-world'
15
+ DyndocWorld.root(cfg["dynworld_root"] || File.join(ENV["HOME"],".dyndoc-world"))
16
+ DyndocWorld.public_root($public_root)
19
17
 
20
18
  class App < Roda
21
19
  use Rack::Session::Cookie, :secret => (secret="Thanks like!")
@@ -45,24 +43,19 @@ class App < Roda
45
43
 
46
44
  r.post "file-save" do
47
45
  puts "file-save"
48
- prj,yml,@file,@content=r['prj'].strip,r['yml'].strip,r['file'].strip,r['content']
49
- p [prj,yml,@file,@content]
46
+ prj,yml,@content=r['prj'].strip,r['yml'].strip,r['content']
47
+ p [prj,yml,@content]
50
48
  success=false
51
49
  unless yml.empty?
52
50
  yml="---\n" + yml unless yml[0,4] == "---\n"
53
51
  yml=YAML::load(yml)
54
52
  p [:yml, yml]
55
53
  require 'fileutils'
56
- if @file and !(@file.include? "../") and (DyndocWorld.yml?(prj,yml))
57
- if Dir.exists? $dynworld_root
58
- prj_dir=DyndocWorld.prj_dir(prj,yml)
59
- dynworld_file=File.join($dynworld_root,prj_dir,@file)
60
- FileUtils.mkdir_p File.dirname dynworld_file
61
- File.open(dynworld_file,"w") {|f| f << @content.strip}
62
- success=true
63
- end
54
+ if DyndocWorld.yml?(prj,yml)
55
+ success=DyndocWorld.prj_file(yml,@content)
64
56
  end
65
57
  end
58
+ p [:success, "{success: " + success.to_s + "}"]
66
59
  "{success: " + success.to_s + "}"
67
60
  end
68
61
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dyndoc-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RCqls
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-11 00:00:00.000000000 Z
11
+ date: 2020-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: R4rb
@@ -187,6 +187,8 @@ executables:
187
187
  - dyn-ctl
188
188
  - dyn-4ever
189
189
  - dyn-yml
190
+ - dyn-rebase-url
191
+ - dyn-site
190
192
  extensions: []
191
193
  extra_rdoc_files: []
192
194
  files:
@@ -200,7 +202,9 @@ files:
200
202
  - bin/dyn-http
201
203
  - bin/dyn-init
202
204
  - bin/dyn-lint
205
+ - bin/dyn-rebase-url
203
206
  - bin/dyn-scan
207
+ - bin/dyn-site
204
208
  - bin/dyn-srv
205
209
  - bin/dyn-task
206
210
  - bin/dyn-x
@@ -213,6 +217,7 @@ files:
213
217
  - lib/dyndoc-html-servers.rb
214
218
  - lib/dyndoc-linter.rb
215
219
  - lib/dyndoc-tasks.rb
220
+ - lib/dyndoc-world.rb
216
221
  - lib/dyndoc/cli/interactive-client.rb
217
222
  - lib/dyndoc/srv/interactive-server.rb
218
223
  - lib/dyndoc/srv/tilt.rb