dyndoc-ruby 1.3.0 → 1.4.0

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