2:- module(logicmoo_webui,[
    3   load_web_package_dirs/0,
    4   webui_load_swish_and_clio/0,
    5   webui_start_swish_and_clio/0]).    6
    7:- use_module(library(prolog_pack)).    8
    9:- if( \+ current_prolog_flag(windows,true)).   10 :- if( \+ exists_source(library(phil))).   11  attach_linuxOnly_packs_web :- (working_directory(Dir,Dir);prolog_load_context(directory,Dir)),
   12          ('../packs_lib'=Rel;'../../packs_lib'=Rel;'../../../packs_lib'=Rel;
   13           '../../../../packs_lib'=Rel;'../../../../../../packs_lib'=Rel),
   14        absolute_file_name(Rel,LinuxOnlyPacks,[relative_to(Dir),file_type(directory),file_errors(fail)]),
   15        attach_packs(LinuxOnlyPacks),!,
   16        pack_list_installed.
   17
   18 :- endif.   19:- endif.   20
   21:- dynamic(lmconfig:logicmoo_webui_dir/1).   22
   23:- lmconfig:logicmoo_webui_dir(_) -> true;
   24  prolog_load_context(directory,Dir),asserta(lmconfig:logicmoo_webui_dir(Dir)).   25
   26:- listing(lmconfig:logicmoo_webui_dir/1).   27
   28attach_packs_relative_web_dir(Rel):-
   29   once(((
   30    lmconfig:logicmoo_webui_dir(Dir),
   31    (absolute_file_name(Rel,PackDir,[relative_to(Dir),file_type(directory),file_errors(fail)]);
   32      absolute_file_name(Rel,PackDir,[file_type(directory),file_errors(fail)])),
   33    writeln(attach_packs(PackDir)),attach_packs(PackDir)));writeln(failed(attach_packs_relative_web_dir(Rel)))).
   34
   35
   36
   37load_web_package_dirs:- 
   38
   39  findall(PackDir,'$pack':pack(Pack, PackDir),Before),  
   40
   41   ignore(catch(make_directory('/tmp/tempDir/pack'),_,true)),
   42   (user:file_search_path(pack,'/tmp/tempDir/pack') -> true ; asserta(user:file_search_path(pack,'/tmp/tempDir/pack'))),
   43   attach_packs('/tmp/tempDir/pack'),
   44    pack_install(trill,[upgrade(true),interactive(false)]),    
   45    pack_install(cplint_r,[upgrade(true),interactive(false)]),
   46    pack_install(rocksdb,[upgrade(true),interactive(false)]),
   47    pack_install(bddem,[upgrade(true),interactive(false)]),    
   48    pack_install(sldnfdraw,[upgrade(true),interactive(false)]),
   49    pack_install(phil,[upgrade(true),interactive(false)]),!,
   50
   51  ignore(( \+ exists_source(library(logicmoo_common)), attach_packs_relative_web_dir('../../logicmoo_utils/../'))),
   52  ignore(( \+ exists_source(library(sldnfdraw)), attach_packs_relative_web_dir('../../packs_lib/'))),
   53  ignore(( \+ exists_source(library(lps_corner)), attach_packs_relative_web_dir('../..'))),
   54  ignore(( \+ exists_source(library(rserve_client)), attach_packs_relative_web_dir('../packs_web/swish/pack/'))),
   55  % ignore(( \+ exists_source(library(rserve_client)), attach_packs_relative_web_dir('../swish/pack/'))),
   56  % ignore(( \+ exists_source(pack(plweb/pack_info)), attach_packs('/opt/logicmoo_workspace/packs_web'))),
   57  findall(PackDir,'$pack':pack(Pack, PackDir),After),
   58  (Before\==After -> (writeln(load_package_dirs(After)),pack_list_installed) ; true),
   59  !.
   60
   61
   62  
   63:- initialization(load_web_package_dirs, now).   64:- initialization(load_web_package_dirs, restore_state).   65
   66:- multifile(sandbox:safe_primitive/1).   67:- dynamic(sandbox:safe_primitive/1).   68:- multifile(sandbox:safe_meta_predicate/1).   69:- dynamic(sandbox:safe_meta_predicate/1).   70
   71:- dynamic(http_unix_daemon:http_daemon/0).   72
   73:- use_module(library(logicmoo_common)).   74:- if(\+ prolog_load_context(reloading,true)).   75:- use_module(library(sandbox)).   76:- use_module(library(pengines_sandbox)).   77% :- rtrace.
   78:- system:use_module(library(console_input)).   79:- system:use_module(library(date)).   80:- system:use_module(library(make)).   81:- system:use_module(library(qsave)).   82:- system:use_module(library(prolog_autoload)).   83:- system:use_module(library(lists)).   84:- system:use_module(library(backcomp)).   85:- system:use_module(library(edit)).   86:- system:use_module(library(prolog_trace)).   87:- system:use_module(library(threadutil)).   88:- system:use_module(library(yall)).   89:- system:use_module(library(time)).   90:- abolish(system:time/1).   91:- system:use_module(library(statistics)).   92
   93
   94:- system:use_module(library(apply)).   95:- system:use_module(library(assoc)).   96:- system:use_module(library(base64)).   97:- system:use_module(library(charsio)).   98:- system:use_module(library(codesio)).   99:- system:use_module(library(crypt)).  100:- system:use_module(library(ctypes)).  101:- system:use_module(library(dialect)).  102:- system:use_module(library(doc_files)).  103:- system:use_module(library(doc_http)).  104:- system:use_module(library(edinburgh)).  105:- system:use_module(library(error)).  106:- system:use_module(library(filesex)).  107:- system:use_module(library(gensym)).  108:- system:use_module(library(git)).  109:- system:use_module(library(http/html_head)).  110:- system:use_module(library(http/http_dispatch)).  111:- system:use_module(library(http/http_path)).  112:- system:use_module(library(http/mimetype)).  113:- system:use_module(library(lazy_lists)).  114:- system:use_module(library(listing)).  115:- system:use_module(library(lists)).  116:- system:use_module(library(memfile)).  117:- system:use_module(library(modules)).  118:- system:use_module(library(nb_rbtrees)).  119:- system:use_module(library(occurs)).  120:- system:use_module(library(operators)).  121:- system:use_module(library(option)).  122:- system:use_module(library(ordsets)).  123:- system:use_module(library(pairs)).  124:- system:use_module(library(pldoc)).  125:- system:use_module(library(pldoc/doc_html)).  126:- system:use_module(library(pldoc/doc_process)).  127:- system:use_module(library(pldoc/doc_search)).  128:- system:use_module(library(pldoc/doc_util)).  129:- system:use_module(library(pldoc/man_index)).  130:- system:use_module(library(porter_stem)).  131%:- system:use_module(library(pprint)).
  132:- system:use_module(library(predicate_options)).  133:- system:use_module(library(process)).  134:- system:use_module(library(prolog_clause)).  135:- system:use_module(library(prolog_code)).  136:- system:use_module(library(prolog_codewalk)).  137:- system:use_module(library(prolog_config)).  138:- system:use_module(library(prolog_source)).  139:- system:use_module(library(prolog_stack)).  140:- system:use_module(library(prolog_xref)).  141:- system:use_module(library(pure_input)).  142:- system:use_module(library(quintus)).  143:- system:use_module(library(readutil)).  144:- system:use_module(library(sgml)).  145:- system:use_module(library(sgml_write)).  146:- system:use_module(library(sha)).  147:- system:use_module(library(shell)).  148:- system:use_module(library(shlib)).  149:- system:use_module(library(socket)).  150:- system:use_module(library(solution_sequences)).  151:- system:use_module(library(sort)).  152:- system:use_module(library(ssl)).  153:- system:use_module(library(system)).  154:- system:use_module(library(thread_pool)).  155:- system:use_module(library(uri)).  156:- system:use_module(library(url)).  157:- system:use_module(library(uuid)).  158:- system:use_module(library(varnumbers)).  159:- system:use_module(library(when)).  160:- system:use_module(library(writef)).  161:- system:use_module(library(zlib)).  162
  163%:- system:use_module(library(jpl)).
  164%:- use_module(library(wfs)).
  165:- system:use_module(library(wfs),[call_residual_program/2,call_delays/2,delays_residual_program/2,answer_residual/2]).  166%:- system:use_module(library(gui_tracer)). % autoloading swi_ide:guitracer/0 from /usr/lib/swipl/xpce/prolog/lib/gui_tracer
  167%:- system:use_module(library(swi_compatibility)). %% autoloading swi_ide:auto_call/1 from /usr/lib/swipl/xpce/prolog/lib/swi_compatibility
  168:- endif.  169
  170sandbox:safe_primitive(dumpst:dumpST()).
  171sandbox:safe_meta_predicate(system:notrace/1).
  172
  173:- if(\+ prolog_load_context(reloading,true)).  174:- use_module(library(sandbox)).  175:- use_module(library(pengines_sandbox)).  176:- endif.  177
  178webui_load_swish_and_clio:-
  179   lmconfig:logicmoo_webui_dir(Dir),
  180   % trace,
  181   absolute_file_name('../packs_web/swish/run_swish_and_clio',Run,[relative_to(Dir),file_type(prolog),file_errors(fail)]),
  182   user:ensure_loaded(Run),
  183   swish_app:load_config('./config-enabled-swish'),
  184   listing(swish_config:login_item/2),!.
  185
  186
  187webui_start_swish_and_clio:- 
  188   webui_load_swish_and_clio,
  189   broadcast:broadcast(http(pre_server_start)),
  190   cp_server:cp_server([]),
  191   broadcast:broadcast(http(post_server_start)),
  192   swish:start_swish_stat_collector,!.
  193
  194
  195
  196:- initialization(webui_start_swish_and_clio,restore).  197:- initialization(webui_start_swish_and_clio,program).