module Dyndoc::HtmlServers
Public Class Methods
cfg()
click to toggle source
# File lib/dyndoc-html-servers.rb, line 220 def HtmlServers.cfg unless @@cfg dyndoc_home = Dyndoc.home cfg_yml = File.join(dyndoc_home,"etc","dyn-html.yml") @@cfg=(File.exist? cfg_yml) ? ::YAML::load_file(cfg_yml) : {} @@cfg["dyndoc_home"]=dyndoc_home end @@cfg end
create_html_page(dyn_file,html_file,opts,pages_root)
click to toggle source
# File lib/dyndoc-html-servers.rb, line 253 def HtmlServers.create_html_page(dyn_file,html_file,opts,pages_root) Dyndoc.cli_convert_from_file(dyn_file[1..-1],html_file, opts) ## fix html_file for _rmd, _adoc and _ttm if html_file =~ /^(.*)_(rmd|adoc|ttm)\.html$/ html_file = $1+".html" end if html_file =~ /^(.*)_erb\.html$/ erb_page=File.join(pages_root,$1) if File.exist? erb_page+"_erb.html" FileUtils.mv erb_page+"_erb.html",erb_page+".erb" end html_file = "erb"+$1 end end
dyn_html_filewatcher(cfg={})
click to toggle source
# File lib/dyndoc-html-servers.rb, line 270 def HtmlServers.dyn_html_filewatcher(cfg={}) #cfg require 'dyndoc-convert' require 'dyndoc-edit' require 'filewatcher' require 'dyndoc-linter' $VERBOSE = nil options={first: true} ## To put inside yaml config file! root ||= cfg["root"] || HtmlServers.cfg["root"] || File.join(ENV["HOME"],"RodaSrv") dyn_root = cfg["dyn_root"] || HtmlServers.cfg["dyn_root"] || File.join(root ,"edit") public_root = cfg["public_root"] || HtmlServers.cfg["public_root"] || File.join(root ,"public") dyn_public_edit_root = File.join(public_root,"users","*",".edit","**","*.dyn") pages_root = File.join(public_root ,"pages") current_email = cfg["email"] || HtmlServers.cfg["email"] || "rdrouilh@gmail.com" #default email user can be overriden by -u option host=(cfg["html-srv-host"] || HtmlServers.cfg["html-srv-host"] || "http://localhost").to_s port=(cfg["html-srv-port"] || HtmlServers.cfg["html-srv-port"] || DyndocServers.dyn_http_port? || "9294").to_s base_url= host+":"+port opts = { dyn_root: dyn_root, html_root: pages_root, user: nil #current_email } puts "watching "+ dyn_public_edit_root + " and " + dyn_root old_html_file="" ::FileWatcher.new([dyn_public_edit_root,dyn_root]).watch() do |filename, event| ## p [:filename,filename,event] if [:changed,:updated,:new].include? event and File.extname(filename) == ".dyn" ##p [:filename_event,event,filename] if (lint_error=Dyndoc::Linter.check_file(filename)).empty? ## do not process preload, postload, lib and layout files unless filename =~ /(?:_pre|_post|_lib|_layout)\.dyn$/ ## find dyn_file (relative path from root) dyn_public_edit_file="" dyn_file=Pathname(filename).relative_path_from(Pathname(dyn_root)).to_s if dyn_file[0,2] == '..' # try the public_root dyn_public_edit_file=Pathname(filename).relative_path_from(Pathname(public_root)).to_s dyn_public_edit_file=dyn_public_edit_file.split("/") if dyn_public_edit_file[0]=="users" and dyn_public_edit_file[2]==".edit" dyn_file="/"+File.join(dyn_public_edit_file[1],dyn_public_edit_file[3..-1]) dyn_public_edit_file=dyn_public_edit_file.join("/") end else dyn_file="/"+dyn_file end unless HtmlServers.unwatched?(dyn_file[1..-1]).empty? if RUBY_PLATFORM =~ /darwin/ `osascript -e 'display notification "Warning: #{dyn_file} unwatched by #{HtmlServers.unwatched?(dyn_file[1..-1])}!" with title "dyn-ctl unwatch"'` end else opts_doc=Dyndoc::FileWatcher.get_dyn_html_info(filename,dyn_file,opts[:user]) opts.merge! opts_doc ##p [:html_files,html_files] html_file=opts[:html_files][opts[:current_doc_tag]] # No more default # || html_files[""] ##p [:opts,opts,:current_doc_tag,opts[:current_doc_tag]] state="" begin HtmlServers.create_html_page(dyn_file,html_file,opts,pages_root) puts dyn_file[1..-1]+(dyn_public_edit_file.empty? ? "" : "*")+" processed => "+html_file+" created!" options[:first] = html_file != old_html_file if html_file != old_html_file old_html_file = html_file url=File.join(base_url,html_file) ## p [:url,url] Dyndoc::Browser.load(url) else Dyndoc::Browser.reload end rescue => e state="error: #{e.message} =>" ensure notify_file=filename.split("/") if (ind=notify_file.index ".edit") notify_file=notify_file[0..ind].join("/") File.open(notify_file+"/notify.out","w") do |f| f << state + filename end end end end end else if RUBY_PLATFORM =~ /darwin/ ##p lint_error cmd_to_display='display notification "' +lint_error.map{|e| e[0].to_s+") "+e[1].to_s}.join('" & "')+ '" with title "Lint Error:'+filename+'"' p [:cmd_display,cmd_to_display] `osascript -e '#{cmd_to_display}'` else puts "Lint Error: "+filename+" with "+lint_error.inspect end end end end end
dyn_http_server(host=nil,port=nil)
click to toggle source
# File lib/dyndoc-html-servers.rb, line 230 def HtmlServers.dyn_http_server(host=nil,port=nil) require 'thin' dyn_html_srv_ru=File.join(ENV["HOME"],"RodaSrv","public","users",".dyn-html","srv.ru") dyn_html_srv_ru="/home/ubuntu/tools/dyn-html/srv.ru" unless File.exist? dyn_html_srv_ru # DyndocDockerSite guest-tools folder dyn_html_srv_ru=File.join(ENV["HOME"],"dyndoc","html-srv","dyn.ru") unless File.exist? dyn_html_srv_ru dyn_html_srv_ru=File.expand_path("../../share/html-srv/dyn-html-srv.ru",__FILE__) unless File.exist? dyn_html_srv_ru arg=["-R",dyn_html_srv_ru] if HtmlServers.cfg["html-srv-port"] arg += ["-p",HtmlServers.cfg["html-srv-port"].to_s] else arg += ["-p",(port || DyndocServers.dyn_http_port? || 9294).to_s] end if host arg += ["-a",host] elsif HtmlServers.cfg["html-srv-host"] arg += ["-a",HtmlServers.cfg["html-srv-host"].to_s] end arg << "start" ##p [:arg,arg] Thin::Runner.new(arg).run! end
unwatch_add(path)
click to toggle source
# File lib/dyndoc-html-servers.rb, line 200 def HtmlServers.unwatch_add(path) return unless path HtmlServers.unwatch_cfg.unshift path HtmlServers.unwatch_save end
unwatch_cfg()
click to toggle source
# File lib/dyndoc-html-servers.rb, line 182 def HtmlServers.unwatch_cfg if @@unwatch.empty? @@unwatch=(File.exist? @@unwatch_yml) ? ::YAML::load_file(@@unwatch_yml) : [] end @@unwatch end
unwatch_ls()
click to toggle source
# File lib/dyndoc-html-servers.rb, line 189 def HtmlServers.unwatch_ls res=HtmlServers.unwatch_cfg.empty? ? "Empty folders list" : (HtmlServers.unwatch_cfg.each_with_index.map {|e,i| (i+1).to_s+") "+e}.join("\n") + "\n") puts res end
unwatch_rm(path)
click to toggle source
# File lib/dyndoc-html-servers.rb, line 206 def HtmlServers.unwatch_rm(path) return unless path HtmlServers.unwatch_cfg @@unwatch -= [path] HtmlServers.unwatch_save end
unwatch_save()
click to toggle source
# File lib/dyndoc-html-servers.rb, line 194 def HtmlServers.unwatch_save File.open(@@unwatch_yml,"w") do |f| f << @@unwatch.to_yaml end end
unwatched?(file)
click to toggle source
# File lib/dyndoc-html-servers.rb, line 213 def HtmlServers.unwatched?(file) return "" if HtmlServers.unwatch_cfg.empty? return HtmlServers.unwatch_cfg.map{|e| file[0...e.length] == e ? e : ""}[0] || "" end