dyndoc-ruby 1.3.2 → 1.4.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
  SHA256:
3
- metadata.gz: 4f13ef78daad4f7cab557c33988cf7da1100320cdb7a19ab211ee99abde8f8bf
4
- data.tar.gz: af4977f95ec0bc87dde2656419de2168f908cc65433eb0f6e0a2b0f447ab7226
3
+ metadata.gz: 8723bdb859aae5e91938015ec532b9fb896f20acef9ffa6e035e54e48debd7f3
4
+ data.tar.gz: e3e6db01504a19b2b50318ad7ce985711eebee860f8b3dfd7875216eee4fb04c
5
5
  SHA512:
6
- metadata.gz: 239ba8a18e7282920922051dad37a42a8fc8d3bb836aad7a42bb75176a056db398668d7cfb99afcc4a2f02b9bcb63b852486bfa41b1a453c6b5cd5334885a6ea
7
- data.tar.gz: 532883f4d9a29d228bdd7169699bad36b7dbe48fe369b535bf5f92dce0486ef683bd254a19de7a3c64d1c036fddc23890d4c34fb4ee18d462fe93e2821fca756
6
+ metadata.gz: 0cd8c4aa4ec42053a1c1227fad45122d77f96780f6b853998c63565f090cb99a6e2e470a89c016dcae1db250c00618e1fad3b52493267e73847bc33a1df2c20a
7
+ data.tar.gz: 235cabc8a20637344b9ae44960e6a55f8292bd8739167919cebcc2c31a8667ad95199719af12006af7e3b9d76a2e7b2eeda2b9e56ec2a967662e8f2bc76a8686
@@ -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]
@@ -245,6 +248,23 @@ module Dyndoc
245
248
  Thin::Runner.new(arg).run!
246
249
  end
247
250
 
251
+ def HtmlServers.create_html_page(dyn_file,html_file,opts,pages_root)
252
+
253
+ Dyndoc.cli_convert_from_file(dyn_file[1..-1],html_file, opts)
254
+ ## fix html_file for _rmd, _adoc and _ttm
255
+ if html_file =~ /^(.*)_(rmd|adoc|ttm)\.html$/
256
+ html_file = $1+".html"
257
+ end
258
+ if html_file =~ /^(.*)_erb\.html$/
259
+ erb_page=File.join(pages_root,$1)
260
+ if File.exists? erb_page+"_erb.html"
261
+ FileUtils.mv erb_page+"_erb.html",erb_page+".erb"
262
+ end
263
+ html_file = "erb"+$1
264
+ end
265
+
266
+ end
267
+
248
268
  def HtmlServers.dyn_html_filewatcher(cfg={}) #cfg
249
269
  require 'dyndoc-convert'
250
270
  require 'dyndoc-edit'
@@ -270,10 +290,11 @@ module Dyndoc
270
290
  user: nil #current_email
271
291
  }
272
292
 
273
- puts "watching "+ dyn_root+ " and " + dyn_public_edit_root
293
+ puts "watching "+ dyn_public_edit_root + " and " + dyn_root
274
294
  old_html_file=""
275
- ::FileWatcher.new([dyn_root,dyn_public_edit_root]).watch() do |filename, event|
276
- ##p [:filename,filename,event]
295
+ ::FileWatcher.new([dyn_public_edit_root,dyn_root]).watch() do |filename, event|
296
+ ##
297
+ p [:filename,filename,event]
277
298
  if [:changed,:updated,:new].include? event and File.extname(filename) == ".dyn"
278
299
  ##p [:filename_event,event,filename]
279
300
  if (lint_error=Dyndoc::Linter.check_file(filename)).empty?
@@ -304,27 +325,30 @@ module Dyndoc
304
325
 
305
326
  html_file=opts[:html_files][opts[:current_doc_tag]] # No more default # || html_files[""]
306
327
  ##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"
328
+ state=""
329
+ begin
330
+ HtmlServers.create_html_page(dyn_file,html_file,opts,pages_root)
331
+
332
+ puts dyn_file[1..-1]+(dyn_public_edit_file.empty? ? "" : "*")+" processed => "+html_file+" created!"
333
+ options[:first] = html_file != old_html_file
334
+ if html_file != old_html_file
335
+ old_html_file = html_file
336
+ url=File.join(base_url,html_file)
337
+ ## p [:url,url]
338
+ Dyndoc::Browser.load(url)
339
+ else
340
+ Dyndoc::Browser.reload
341
+ end
342
+ rescue => e
343
+ state="error: #{e.message} =>"
344
+ ensure
345
+ notify_file=filename.split("/")
346
+ if (ind=notify_file.index ".edit")
347
+ notify_file=notify_file[0..ind].join("/")
348
+ File.open(notify_file+"/notify.out","w") do |f|
349
+ f << state + filename
350
+ end
316
351
  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
352
  end
329
353
  end
330
354
  end
data/lib/dyndoc-tasks.rb CHANGED
@@ -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.2
4
+ version: 1.4.1
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-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: R4rb
@@ -217,6 +217,7 @@ files:
217
217
  - lib/dyndoc-html-servers.rb
218
218
  - lib/dyndoc-linter.rb
219
219
  - lib/dyndoc-tasks.rb
220
+ - lib/dyndoc-world.rb
220
221
  - lib/dyndoc/cli/interactive-client.rb
221
222
  - lib/dyndoc/srv/interactive-server.rb
222
223
  - lib/dyndoc/srv/tilt.rb
@@ -229,7 +230,6 @@ files:
229
230
  - share/demo/testBeamer.dyn
230
231
  - share/demo/testBeamer_lib.dyn
231
232
  - share/demo/test_atom.dyn
232
- - share/dyn-site/dyn-site.sh
233
233
  - share/dyndoc.yml/README.md
234
234
  - share/dyndoc.yml/example.dyndoc.yml
235
235
  - share/dyntasks/clean_task.dyn
@@ -1,167 +0,0 @@
1
- #!/bin/bash
2
-
3
-
4
- RootSrv=$HOME/RodaSrv
5
-
6
- if [ "$1" = "--root" ];then
7
- shift
8
- RootSrv=$1
9
- if [ $RootSrv = "cfg" ]; then
10
- RootSrv=`ruby -e 'require "yaml";puts YAML::load_file(File.join(ENV["HOME"],"dyndoc/etc/dyn-html.yml"))["root"]'`
11
- fi
12
- shift
13
- fi
14
-
15
- Cmd=$1
16
-
17
- #echo "Command: $Cmd"
18
-
19
- if [ "$Cmd" = "" ]; then
20
- Cmd="help"
21
- fi
22
-
23
-
24
- case $Cmd in
25
- set-root)
26
- new-root=$2
27
- ## Config file
28
- echo "---" > $HOME/dyndoc/etc/dyn-html.yml
29
- echo "root: $new-root" >> $HOME/dyndoc/etc/dyn-html.yml
30
- ;;
31
- help)
32
- echo "Aide:"
33
- echo "----"
34
- echo " dyn-site [--root <cfg|ROOT>] first (création de l'arborescence de base)"
35
- echo " dyn-site [--root <cfg|ROOT>] init [zip|link <PATH>](installation de tools et system)"
36
- echo " dyn-site [--root <cfg|ROOT>] add <User> (ajout d'un utilisateur <User>)"
37
- echo " dyn-site [--root <cfg|ROOT>] rebase <Conf> (cas de workshop où <Conf>=<User>)"
38
- echo " dyn-site [--root <cfg|ROOT>] rebase-subdir <Subdir> <Prj> (Subdir=<User>/<PrjPath>)"
39
- echo " dyn-site vscode [--update] (install vscode plugin for dyndoc)"
40
- ## DANGEROUS!: echo " dyn-site set-root <new-root>"
41
- ;;
42
- first)
43
- ## Not necessary for docker
44
- mkdir -p $RootSrv/edit
45
- mkdir -p $RootSrv/public/users
46
- ;;
47
- init)
48
- installmode=$2
49
- case $installmode in
50
- zip)
51
- ## Install Specfic stuff inside
52
- mkdir -p $RootSrv/install/RodaSrvTools
53
- cd ${RootSrv}/install
54
- if ! [ -d DynRodaSystem ]; then git clone https://toltex-gogs.dyndoc.fr/rcqls/DynRodaSystem.git; fi
55
- if ! [ -f RodaSrvTools.zip ]; then
56
- wget https://toltex-seafile.dyndoc.fr/f/128ced4435/?raw=1 -O RodaSrvTools.zip
57
- cd RodaSrvTools
58
- unzip ../RodaSrvTools.zip
59
- fi
60
- ## Create links
61
- cd ${RootSrv}
62
- ln -sf install/DynRodaSystem system
63
- cd public
64
- ln -sf ../install/RodaSrvTools tools
65
- ;;
66
- link)
67
- rodatools_path=$2
68
- ## Create links
69
- cd ${RootSrv}
70
- ln -sf $rodatools_path/system system
71
- cd public
72
- ln -sf $rodatools_path/tools tools
73
- esac
74
- ;;
75
- add)
76
- RodaWebUser=$2
77
- if [ "$RodaWebUser" != "" ]; then
78
- mkdir -p ${RootSrv}/edit/${RodaWebUser}
79
- mkdir -p ${RootSrv}/public/pages
80
- mkdir -p ${RootSrv}/public/users/${RodaWebUser}/.pages
81
- cd ${RootSrv}/public/pages
82
- ln -s ../users/${RodaWebUser}/.pages ${RodaWebUser}
83
- fi
84
- ;;
85
- rebase)
86
- Conf=$2
87
- if [ "${Conf}" = "" ]; then
88
- exit
89
- fi
90
- PUBLIC_ROOT="$HOME/RodaSrv/public/users/${Conf}"
91
- SITE_ROOT="$HOME/RodaSrv/.site/$Conf"
92
- PAGES_ROOT="$SITE_ROOT/pages"
93
- mkdir -p ${SITE_ROOT}
94
- cp -R ${PUBLIC_ROOT}/* ${SITE_ROOT}/
95
- cd ${PAGES_ROOT}
96
- pages=$(ls *.html)
97
- echo "pages to process: $pages"
98
- for html in $pages
99
- do
100
- rebase_url --from /users/$Conf/ --to / $html
101
- rebase_url --from /$Conf/ --to / $html
102
- mv $html ..
103
- done
104
- cd $SITE_ROOT
105
- rm -fr pages
106
- ;;
107
- rebase-subdir)
108
- Subdir=$2
109
- if [ "${Subdir}" = "" ]; then
110
- echo "Subdir doit être non vide!"
111
- exit
112
- fi
113
- Prj=$3
114
- if [ "${Prj}" = "" ]; then
115
- echo "Prj doit être non vide!"
116
- exit
117
- fi
118
- PUBLIC_ASSETS="$HOME/RodaSrv/public/users/${Subdir}/${Prj}"
119
- PUBLIC_PAGES="$HOME/RodaSrv/public/pages/${Subdir}/${Prj}"
120
- SITE_ROOT="$HOME/RodaSrv/.site/$Prj"
121
- PAGES_ROOT="$SITE_ROOT/pages"
122
- if [ -d ${SITE_ROOT} ]; then
123
- rm -fr ${SITE_ROOT}
124
- fi
125
- mkdir -p ${PAGES_ROOT}
126
- cp -R ${PUBLIC_PAGES}/* ${PAGES_ROOT}/
127
- cp -R ${PUBLIC_ASSETS}/* ${SITE_ROOT}/
128
- cd ${PAGES_ROOT}
129
- pages=$(find . -name '*.html')
130
- echo "pages to process: $pages"
131
- for html in $pages
132
- do
133
- rebase_url --from /users/${Subdir}/${Prj}/ --to / $html
134
- rebase_url --from /${Subdir}/${Prj}/ --to / $html
135
- done
136
- cd $SITE_ROOT
137
- mv pages/* .
138
- rm -fr pages
139
- ;;
140
- vscode)
141
- if [ -d ~/.vscode/extensions ]; then
142
- cd ~/.vscode/extensions
143
- mkdir tmp
144
- cd tmp
145
- git clone https://github.com/rcqls/dyndoc-syntax
146
- cd ..
147
- if [ -d dyndoc ]; then
148
- if [ "$2" = "--update" ]; then
149
- rm -fr dyndoc
150
- mv tmp/dyndoc-syntax/vscode/dyndoc dyndoc
151
- rm -fr tmp
152
- fi
153
- else
154
- mv tmp/dyndoc-syntax/vscode/dyndoc dyndoc
155
- rm -fr tmp
156
- fi
157
- fi
158
- ;;
159
- # deploy)
160
- # Conf=$2
161
- # url="sfdsmqrk@ftp.sfds.asso.fr:$Conf/"
162
- # if [ "$3" != "" ]; then
163
- # url="$3"
164
- # fi
165
- # rsync -az $SITE_ROOT/* $url
166
- # ;;
167
- esac