From f4439214e02fe0ad9a3551f1810e6303ea97d8c0 Mon Sep 17 00:00:00 2001 From: Robin de Rooij Date: Wed, 30 Nov 2022 15:13:42 +0100 Subject: [PATCH] Set dashboard at runtime Set dashboard path at runtime to allow AppImage dashboard to work --- distribution/appimage/build_script.sh | 2 +- src/config/terminus_config.pl | 4 ++++ src/core/api.pl | 1 + src/core/api/api_init.pl | 14 ++++++++++++++ src/load_paths.pl | 21 ++++++--------------- src/server/main.pl | 1 + 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/distribution/appimage/build_script.sh b/distribution/appimage/build_script.sh index 38359924f..118acf8ea 100755 --- a/distribution/appimage/build_script.sh +++ b/distribution/appimage/build_script.sh @@ -5,7 +5,7 @@ mkdir -p app_dir/usr/share/terminusdb mkdir -p app_dir/usr/bin mkdir -p app_dir/usr/lib/x86_64-linux-gnu # Build TerminusDB -cd ../../ && make install-deps && make && cd "$CURRENT_DIR" +cd ../../ && make install-dashboard && make install-deps && make && cd "$CURRENT_DIR" # Copy relevant files back to appimage dir cp -r ../../terminusdb ../../dashboard app_dir/usr/share/terminusdb/ cp -r /usr/lib/swi-prolog app_dir/usr/lib/ diff --git a/src/config/terminus_config.pl b/src/config/terminus_config.pl index 3d0caddd3..c7589d8ca 100644 --- a/src/config/terminus_config.pl +++ b/src/config/terminus_config.pl @@ -1,5 +1,6 @@ :- module(config,[ terminusdb_version/1, + dashboard_path/1, bootstrap_config_files/0, server/1, server_name/1, @@ -46,6 +47,9 @@ terminusdb_version('10.1.10'). /* [[[end]]] */ +dashboard_path(Path) :- + getenv('TERMINUSDB_DASHBOARD_PATH', Path). + bootstrap_config_files :- initialize_system_ssl_certs. diff --git a/src/core/api.pl b/src/core/api.pl index ff73da7ab..aa6aca9bf 100644 --- a/src/core/api.pl +++ b/src/core/api.pl @@ -1,6 +1,7 @@ :- module(api, [ % init.pl bootstrap_files/0, + add_dashboard_path/0, index_template/1, initialize_flags/0, initialize_database/2, diff --git a/src/core/api/api_init.pl b/src/core/api/api_init.pl index dd67d9963..8145cfc1c 100644 --- a/src/core/api/api_init.pl +++ b/src/core/api/api_init.pl @@ -1,5 +1,6 @@ :- module(api_init, [ bootstrap_files/0, + add_dashboard_path/0, initialize_flags/0, initialize_database/2, initialize_database_with_store/2, @@ -121,6 +122,19 @@ db_path(DB_Path), initialize_database_with_path(Key, DB_Path, Force). +assert_dashboard_path(Dir) :- + directory_file_path(Dir, 'assets', Assets), + asserta(user:file_search_path(dashboard, Dir)), + asserta(user:file_search_path(assets, Assets)). + +add_dashboard_path :- + config:dashboard_path(Dir), + assert_dashboard_path(Dir). +add_dashboard_path :- + user:file_search_path(terminus_top_dir, Dir), + directory_file_path(Dir, 'dashboard', Dashboard), + assert_dashboard_path(Dashboard). + /* * initialize_database_with_path(Key,DB_Path,Force) is det+error. * diff --git a/src/load_paths.pl b/src/load_paths.pl index 8eca487c8..b47202da2 100644 --- a/src/load_paths.pl +++ b/src/load_paths.pl @@ -11,6 +11,12 @@ prolog_load_context(file, File), relative_file_name(Path, File, '..'). +add_terminus_top_dir :- + top_level_directory(TopDir), + asserta(user:file_search_path(terminus_top_dir, TopDir)). + +:- add_terminus_top_dir. + add_terminus_home_path :- top_level_directory(TopDir), directory_file_path(TopDir, 'src', SrcDir), @@ -122,21 +128,6 @@ directory_file_path(Dir, 'terminusdb-enterprise/test', Enterprise), asserta(user:file_search_path(enterprise_test, Enterprise)). -assert_dashboard_path(Dir) :- - directory_file_path(Dir, 'assets', Assets), - asserta(user:file_search_path(dashboard, Dir)), - asserta(user:file_search_path(assets, Assets)). - -add_dashboard_path :- - getenv('TERMINUSDB_DASHBOARD_PATH', Dir), - assert_dashboard_path(Dir). -add_dashboard_path :- - top_level_directory(Dir), - directory_file_path(Dir, 'dashboard', Dashboard), - assert_dashboard_path(Dashboard). - -:- add_dashboard_path. - :- if(getenv("TERMINUSDB_ENTERPRISE", true)). :- add_enterprise_path. :- add_enterprise_test_path. diff --git a/src/server/main.pl b/src/server/main.pl index 716aa8323..aee5699e9 100644 --- a/src/server/main.pl +++ b/src/server/main.pl @@ -62,6 +62,7 @@ server(Server), server_port(Port), worker_amount(Workers), + add_dashboard_path, load_jwt_conditionally, HTTPOptions = [port(Port), workers(Workers)], foreach(pre_server_startup_hook(Port),true),