dyndoc-ruby 1.3.2 → 1.4.1

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