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 56 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)). 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)). 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
165:- system:use_module(library(wfs),[call_residual_program/2,call_delays/2,delays_residual_program/2,answer_residual/2]). 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 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).