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