dyndoc-ruby 1.2.2 → 1.3.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 +4 -4
- data/bin/dyn-ctl +1 -1
- data/bin/dyn-task +19 -0
- data/bin/dyn-yml +81 -81
- data/lib/dyndoc-html-servers.rb +18 -5
- data/lib/dyndoc-tasks.rb +130 -0
- data/share/dyntasks/workflow_task.dyn +4 -0
- data/share/etc/systemd/dyn-task.service +12 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ead83e394d38dcc18626162ada3e9fc5077d1e5673a6992227811bfda153fd5
|
4
|
+
data.tar.gz: be7ce6c24f93febcfddf6822aaf30e4dad4978cbbc8e88e47c02d6902cff525e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 924604a6f99dd1fc71ec45c2fb7d062b4564ae569bc8d6328ddbf2ae7e1ed88326aa607e8e62f7ba99f95ed68cef0e46732bcbc9468d8caa5ffa0b3abf039524
|
7
|
+
data.tar.gz: 015316465d1ac2db277a1390e4566a525e5005fdb45b9ea333e89b61014a8f870cdc6305a8301772bf5c8a70e5f0634704410fc26068f365fdd3da5c6356842d
|
data/bin/dyn-ctl
CHANGED
data/bin/dyn-task
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'dyndoc-tasks'
|
3
|
+
|
4
|
+
if ["--no-forever","--no-daemon"].include? ARGV[0]
|
5
|
+
cfg={}
|
6
|
+
cfg[:dyntasks_root]=ARGV[1] if ARGV[1]
|
7
|
+
DyndocTasks::filewatcher(cfg)
|
8
|
+
else
|
9
|
+
require 'daemons'
|
10
|
+
require 'dyndoc/init/home'
|
11
|
+
require 'fileutils'
|
12
|
+
|
13
|
+
dir_pids=File.join(Dyndoc.home,"pids")
|
14
|
+
FileUtils.mkdir_p dir_pids
|
15
|
+
Daemons.run_proc('dyn-task',{dir: dir_pids}) do
|
16
|
+
DyndocTasks::filewatcher
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/bin/dyn-yml
CHANGED
@@ -98,84 +98,84 @@ end.parse!(args)
|
|
98
98
|
doc=args[0]
|
99
99
|
|
100
100
|
doc += "_dyn.yml" unless doc =~ /_dyn.yml$/
|
101
|
-
|
102
|
-
require '
|
103
|
-
|
104
|
-
doc
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
if cfg_lines[i][0,
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
unless cfg_yml["dyntask"]
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
152
|
-
|
153
|
-
dyntaskname=cfg_yml["dyntask"]
|
154
|
-
|
155
|
-
if dyntaskname
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
end
|
101
|
+
|
102
|
+
require 'dyndoc-tasks'
|
103
|
+
|
104
|
+
DyndocTasks.dyn_yml doc
|
105
|
+
|
106
|
+
# require 'yaml'
|
107
|
+
# require 'fileutils'
|
108
|
+
|
109
|
+
# cfg_lines=File.readlines(doc)
|
110
|
+
# i=0
|
111
|
+
# i += 1 if cfg_lines[i][0,3] == "---"
|
112
|
+
|
113
|
+
# if cfg_lines[i][0,9] == "dyntask: "
|
114
|
+
# ## regular _dyn.yml file
|
115
|
+
# cfg_yml=YAML::load(cfg_lines.join("\n"))
|
116
|
+
# else
|
117
|
+
# cfg_txt = cfg_lines[0..i].join("\n")
|
118
|
+
# cfg_lines[(i+1)..-1].each do |line|
|
119
|
+
# if line[0,2] == " "
|
120
|
+
# cfg_txt << line
|
121
|
+
# else
|
122
|
+
# tn,td=line.split(":")
|
123
|
+
# cfg_txt << tn.strip << ": |\n"
|
124
|
+
# cfg_txt << " " << td.strip << "\n"
|
125
|
+
# end
|
126
|
+
# end
|
127
|
+
# cfg_yml=YAML::load(cfg_txt.strip)
|
128
|
+
# end
|
129
|
+
|
130
|
+
|
131
|
+
# unless cfg_yml["dyntask"]
|
132
|
+
# #attempt to know if format is the simplified one for workflow
|
133
|
+
# ks=cfg_yml.keys
|
134
|
+
# cfg2={"dyntask" => "workflow", "params" => {"id" => ks[0], "workdir" => cfg_yml[ks[0]]}}
|
135
|
+
# tasks={}
|
136
|
+
# ks[1..-1].each do |t|
|
137
|
+
# kt,*pt=cfg_yml[t].strip.split("\n")
|
138
|
+
# wt,tn=kt.strip.split("->").map{|e| e.strip if e}
|
139
|
+
# if tn
|
140
|
+
# tasks[t]={"dyntask" => tn}
|
141
|
+
# wt="init" if wt.empty?
|
142
|
+
# tasks[t]["wait"]=wt
|
143
|
+
# pt=YAML::load(pt.join("\n"))
|
144
|
+
# tasks[t]["params"]=pt
|
145
|
+
# else
|
146
|
+
# puts "Warning: task "+ t + " not considered because malformed"
|
147
|
+
# end
|
148
|
+
# end
|
149
|
+
# cfg2["params"]["tasks"]=tasks
|
150
|
+
# cfg_yml=cfg2
|
151
|
+
# end
|
152
|
+
|
153
|
+
# dyntaskname=cfg_yml["dyntask"]
|
154
|
+
|
155
|
+
# if dyntaskname
|
156
|
+
# puts dyntaskname
|
157
|
+
# dyntaskname += "_task.dyn" unless dyntaskname=~/_task.dyn$/
|
158
|
+
# dyntaskpath=dyntaskname
|
159
|
+
# is_dyntask=File.exists? dyntaskpath
|
160
|
+
# unless is_dyntask
|
161
|
+
# dyntaskpath=File.join(ENV["HOME"],"dyndoc","tasks",dyntaskname)
|
162
|
+
# is_dyntask=File.exists? dyntaskpath
|
163
|
+
# end
|
164
|
+
# unless is_dyntask
|
165
|
+
# share_path=File.expand_path("../../share", __FILE__)
|
166
|
+
# dyntaskpath=File.join(share_path,"dyntasks",dyntaskname)
|
167
|
+
# is_dyntask=File.exists? dyntaskpath
|
168
|
+
# end
|
169
|
+
# if is_dyntask
|
170
|
+
# dynfile=docname+".dyn"
|
171
|
+
# FileUtils.cp dyntaskpath, dynfile
|
172
|
+
# $params=cfg_yml["params"]
|
173
|
+
# $dyntask=dyntaskname
|
174
|
+
# cfg_yml["params"].each do |key,val|
|
175
|
+
# Settings["cfg_dyn.user_input"] << [key,val]
|
176
|
+
# end
|
177
|
+
|
178
|
+
# d=Dyndoc::TemplateDocument.new(dynfile)
|
179
|
+
# d.make_all
|
180
|
+
# end
|
181
|
+
# end
|
data/lib/dyndoc-html-servers.rb
CHANGED
@@ -255,8 +255,9 @@ module Dyndoc
|
|
255
255
|
options={first: true}
|
256
256
|
## To put inside yaml config file!
|
257
257
|
root ||= cfg["root"] || HtmlServers.cfg["root"] || File.join(ENV["HOME"],"RCqls","RodaServer")
|
258
|
-
dyn_root = cfg["dyn_root"] || HtmlServers.cfg["dyn_root"] || File.join(root ,"edit")
|
258
|
+
dyn_root = cfg["dyn_root"] || HtmlServers.cfg["dyn_root"] || File.join(root ,"edit")
|
259
259
|
public_root = cfg["public_root"] || HtmlServers.cfg["public_root"] || File.join(root ,"public")
|
260
|
+
dyn_public_edit_root = File.join(public_root,"users","*",".edit","**","*.dyn")
|
260
261
|
pages_root = File.join(public_root ,"pages")
|
261
262
|
current_email = cfg["email"] || HtmlServers.cfg["email"] || "rdrouilh@gmail.com" #default email user can be overriden by -u option
|
262
263
|
host=(cfg["html-srv-host"] || HtmlServers.cfg["html-srv-host"] || "http://localhost").to_s
|
@@ -269,9 +270,9 @@ module Dyndoc
|
|
269
270
|
user: nil #current_email
|
270
271
|
}
|
271
272
|
|
272
|
-
puts "watching "+ dyn_root
|
273
|
+
puts "watching "+ dyn_root+ " and " + dyn_public_edit_root
|
273
274
|
old_html_file=""
|
274
|
-
::FileWatcher.new(dyn_root).watch() do |filename, event|
|
275
|
+
::FileWatcher.new([dyn_root,dyn_public_edit_root]).watch() do |filename, event|
|
275
276
|
##p [:filename,filename,event]
|
276
277
|
if [:changed,:updated,:new].include? event and File.extname(filename) == ".dyn"
|
277
278
|
##p [:filename_event,event,filename]
|
@@ -279,7 +280,19 @@ module Dyndoc
|
|
279
280
|
## do not process preload, postload, lib and layout files
|
280
281
|
unless filename =~ /(?:_pre|_post|_lib|_layout)\.dyn$/
|
281
282
|
## find dyn_file (relative path from root)
|
282
|
-
|
283
|
+
dyn_public_edit_file=""
|
284
|
+
dyn_file=Pathname(filename).relative_path_from(Pathname(dyn_root)).to_s
|
285
|
+
if dyn_file[0,2] == '..' # try the public_root
|
286
|
+
dyn_public_edit_file=Pathname(filename).relative_path_from(Pathname(public_root)).to_s
|
287
|
+
dyn_public_edit_file=dyn_public_edit_file.split("/")
|
288
|
+
if dyn_public_edit_file[0]=="users" and dyn_public_edit_file[2]==".edit"
|
289
|
+
dyn_file="/"+File.join(dyn_public_edit_file[1],dyn_public_edit_file[3..-1])
|
290
|
+
dyn_public_edit_file=dyn_public_edit_file.join("/")
|
291
|
+
end
|
292
|
+
else
|
293
|
+
dyn_file="/"+dyn_file
|
294
|
+
end
|
295
|
+
|
283
296
|
unless HtmlServers.unwatched?(dyn_file[1..-1]).empty?
|
284
297
|
if RUBY_PLATFORM =~ /darwin/
|
285
298
|
`osascript -e 'display notification "Warning: #{dyn_file} unwatched by #{HtmlServers.unwatched?(dyn_file[1..-1])}!" with title "dyn-ctl unwatch"'`
|
@@ -303,7 +316,7 @@ module Dyndoc
|
|
303
316
|
end
|
304
317
|
html_file = "erb"+$1
|
305
318
|
end
|
306
|
-
puts dyn_file[1..-1]+" processed => "+html_file+" created!"
|
319
|
+
puts dyn_file[1..-1]+(dyn_public_edit_file.empty? ? "" : "*")+" processed => "+html_file+" created!"
|
307
320
|
options[:first] = html_file != old_html_file
|
308
321
|
if html_file != old_html_file
|
309
322
|
old_html_file = html_file
|
data/lib/dyndoc-tasks.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'filewatcher'
|
2
|
+
#if RUBY_VERSION >= "2.4"
|
3
|
+
class FileWatcher < Filewatcher
|
4
|
+
end
|
5
|
+
#end
|
6
|
+
|
7
|
+
|
8
|
+
module DyndocTasks
|
9
|
+
|
10
|
+
def DyndocTasks.dyn_yml(doc)
|
11
|
+
|
12
|
+
require 'yaml'
|
13
|
+
require 'fileutils'
|
14
|
+
|
15
|
+
doc =~ /^(.*)_dyn\.yml$/
|
16
|
+
docname=$1
|
17
|
+
|
18
|
+
cfg_lines=File.readlines(doc)
|
19
|
+
i=0
|
20
|
+
i += 1 if cfg_lines[i][0,3] == "---"
|
21
|
+
|
22
|
+
if cfg_lines[i][0,9] == "dyntask: "
|
23
|
+
## regular _dyn.yml file
|
24
|
+
cfg_yml=YAML::load(cfg_lines.join(""))
|
25
|
+
else
|
26
|
+
cfg_txt = cfg_lines[0..i].join("\n")
|
27
|
+
## deal with possible common params
|
28
|
+
cfg_common=""
|
29
|
+
while cfg_lines[i+1][0,2] == " "
|
30
|
+
i += 1
|
31
|
+
cfg_common << cfg_lines[i]
|
32
|
+
end
|
33
|
+
unless cfg_common.empty?
|
34
|
+
cfg_txt << "common:\n" << cfg_common
|
35
|
+
end
|
36
|
+
## deal with tasks
|
37
|
+
cfg_lines[(i+1)..-1].each do |line|
|
38
|
+
if line[0,2] == " "
|
39
|
+
cfg_txt << line
|
40
|
+
else
|
41
|
+
tn,td=line.split(":")
|
42
|
+
cfg_txt << tn.strip << ": |\n"
|
43
|
+
cfg_txt << " " << td.strip << "\n"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
##DEBUG: puts cfg_txt.strip
|
47
|
+
cfg_yml=YAML::load(cfg_txt.strip)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
unless cfg_yml["dyntask"]
|
52
|
+
#attempt to know if format is the simplified one for workflow
|
53
|
+
ks=cfg_yml.keys
|
54
|
+
cfg2={"dyntask" => "workflow", "params" => {"id" => ks[0], "workdir" => cfg_yml[ks[0]]}}
|
55
|
+
tasks={}
|
56
|
+
i=1
|
57
|
+
if ks[1] == "common"
|
58
|
+
i+=1
|
59
|
+
cfg2["params"]["params"]=cfg_yml["common"] # common params for tasks
|
60
|
+
end
|
61
|
+
ks[i..-1].each do |t|
|
62
|
+
kt,*pt=cfg_yml[t].strip.split("\n")
|
63
|
+
wt,tn=kt.strip.split("->").map{|e| e.strip if e}
|
64
|
+
if tn
|
65
|
+
tasks[t]={"dyntask" => tn}
|
66
|
+
wt="init" if wt.empty?
|
67
|
+
tasks[t]["wait"]=wt
|
68
|
+
pt=YAML::load(pt.join("\n"))
|
69
|
+
tasks[t]["params"]=pt
|
70
|
+
else
|
71
|
+
puts "Warning: task "+ t + " not considered because malformed"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
cfg2["params"]["tasks"]=tasks
|
75
|
+
cfg_yml=cfg2
|
76
|
+
end
|
77
|
+
|
78
|
+
dyntaskname=cfg_yml["dyntask"]
|
79
|
+
|
80
|
+
if dyntaskname
|
81
|
+
puts dyntaskname
|
82
|
+
##DEBUG: p [:cfg_yml,cfg_yml]
|
83
|
+
dyntaskname += "_task.dyn" unless dyntaskname=~/_task.dyn$/
|
84
|
+
dyntaskpath=dyntaskname
|
85
|
+
is_dyntask=File.exists? dyntaskpath
|
86
|
+
unless is_dyntask
|
87
|
+
dyntaskpath=File.join(ENV["HOME"],"dyndoc","tasks",dyntaskname)
|
88
|
+
is_dyntask=File.exists? dyntaskpath
|
89
|
+
end
|
90
|
+
unless is_dyntask
|
91
|
+
share_path=File.expand_path("../../share", __FILE__)
|
92
|
+
dyntaskpath=File.join(share_path,"dyntasks",dyntaskname)
|
93
|
+
is_dyntask=File.exists? dyntaskpath
|
94
|
+
end
|
95
|
+
if is_dyntask
|
96
|
+
dynfile=docname+".dyn"
|
97
|
+
FileUtils.cp dyntaskpath, dynfile
|
98
|
+
$params=cfg_yml["params"]
|
99
|
+
$dyntask=dyntaskname
|
100
|
+
cfg_yml["params"].each do |key,val|
|
101
|
+
Settings["cfg_dyn.user_input"] << [key,val]
|
102
|
+
end
|
103
|
+
|
104
|
+
d=Dyndoc::TemplateDocument.new(dynfile)
|
105
|
+
d.make_all
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def DyndocTasks.filewatcher(cfg={}) #cfg
|
111
|
+
require 'dyndoc/document'
|
112
|
+
|
113
|
+
Settings['cfg_dyn.ruby_only']=true
|
114
|
+
Settings["cfg_dyn.model_doc"] = "Content"
|
115
|
+
Settings["cfg_dyn.exec_mode"] = "yes"
|
116
|
+
|
117
|
+
require 'dyndoc-linter'
|
118
|
+
|
119
|
+
dyntasks_root=cfg["dyntasks_root"] || File.join(ENV["HOME"],".dyndoc-world","reactzone")
|
120
|
+
|
121
|
+
puts "watching tasks inside "+ dyntasks_root
|
122
|
+
::FileWatcher.new(dyntasks_root).watch() do |filename, event|
|
123
|
+
##DEBUG:
|
124
|
+
puts filename + "->" + event.to_s+"\n"
|
125
|
+
if [:changed,:updated,:new].include? event and File.extname(filename) == ".yml"
|
126
|
+
DyndocTasks.dyn_yml filename
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -46,6 +46,7 @@ shscript=""
|
|
46
46
|
prj_id=#{=prj_id}
|
47
47
|
# Creation of dyn tasks (_dyn.yml files)
|
48
48
|
tasks=$params["tasks"]
|
49
|
+
common_params=$params["params"]
|
49
50
|
#p [:tasks,tasks.keys]
|
50
51
|
## shell fcts
|
51
52
|
tasks.keys.each do |task| #
|
@@ -69,6 +70,9 @@ tasks.keys.each do |task| #
|
|
69
70
|
dyntask=(tasks[task].is_a? String) ? tasks[tasks[task]] : tasks[task]
|
70
71
|
dyntask=dyntask.select{|k| ["dyntask","params"].include? k}
|
71
72
|
#p [:dyntask,dyntask,dyntask.empty?]
|
73
|
+
if common_params
|
74
|
+
dyntask["params"] = common_params.dup.merge dyntask["params"]
|
75
|
+
end
|
72
76
|
File.open(task_yml,"w") {|f| f << dyntask.to_yaml } unless dyntask.empty?
|
73
77
|
rescue
|
74
78
|
puts "Task not created\n"
|
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.
|
4
|
+
version: 1.3.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
|
+
date: 2019-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: R4rb
|
@@ -178,6 +178,7 @@ executables:
|
|
178
178
|
- dpm
|
179
179
|
- dyn-html
|
180
180
|
- dyn-http
|
181
|
+
- dyn-task
|
181
182
|
- dyn-init
|
182
183
|
- dyn-scan
|
183
184
|
- dyn-lint
|
@@ -201,6 +202,7 @@ files:
|
|
201
202
|
- bin/dyn-lint
|
202
203
|
- bin/dyn-scan
|
203
204
|
- bin/dyn-srv
|
205
|
+
- bin/dyn-task
|
204
206
|
- bin/dyn-x
|
205
207
|
- bin/dyn-yml
|
206
208
|
- install/README.md
|
@@ -210,6 +212,7 @@ files:
|
|
210
212
|
- lib/dyndoc-edit.rb
|
211
213
|
- lib/dyndoc-html-servers.rb
|
212
214
|
- lib/dyndoc-linter.rb
|
215
|
+
- lib/dyndoc-tasks.rb
|
213
216
|
- lib/dyndoc/cli/interactive-client.rb
|
214
217
|
- lib/dyndoc/srv/interactive-server.rb
|
215
218
|
- lib/dyndoc/srv/tilt.rb
|
@@ -236,6 +239,7 @@ files:
|
|
236
239
|
- share/etc/systemd/dyn-html.service
|
237
240
|
- share/etc/systemd/dyn-http.service
|
238
241
|
- share/etc/systemd/dyn-srv.service
|
242
|
+
- share/etc/systemd/dyn-task.service
|
239
243
|
- share/etc/uv/render/README
|
240
244
|
- share/etc/uv/render/latex/-h.yaml
|
241
245
|
- share/etc/uv/render/latex/active4d.render
|