From efac1136d0310046ba0d885877e704eb787db5dd Mon Sep 17 00:00:00 2001 From: Uriel Date: Thu, 22 Jan 2009 09:22:15 +0100 Subject: [PATCH] Change app loading to be done in two passes, first source app files, then call init for enabled apps. This makes it possible to call app functions at config time. Provide $conf_wd variable at config time, which can in turn be used by apps to determine where in the tree we are at config/setup time. --- bin/werc.rc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/bin/werc.rc b/bin/werc.rc index e1ba246..714e9e5 100755 --- a/bin/werc.rc +++ b/bin/werc.rc @@ -99,13 +99,10 @@ fn setup_handlers { if not if(test -f $local_path.txt) handler_body_main=(txt_handler $local_path.txt) - # Apps - if(! ~ $#enabled_apps 0) { - for(a in $enabled_apps) { - . ./apps/$a/app.rc + # Apps, XXX: Maybe we should check that $enabled_apps exist in $werc_apps. + if(! ~ $#enabled_apps 0) + for(a in $enabled_apps) $a^'_init' - } - } if(! ~ $#handler_body_main 0) { } # We are done @@ -138,6 +135,7 @@ headers=lib/headers.tpl master_template=default_master.tpl res_tail='' ll_add handlers_bar_left nav_tree +werc_apps=( apps/* ) werc_root=`{pwd} for(i in siteTitle siteSubTitle pageTitle extraHeaders) $i = '' @@ -154,6 +152,9 @@ current_date_time=`{date} if(test -f etc/initrc.local) . ./etc/initrc.local +for(a in $werc_apps) + . ./$a/app.rc + # Parse request URL # NOTE: $REQUEST_URI is not officially in CGI 1.1, but seems to be de-facto req_path=`{echo -n $REQUEST_URI | sed 's/\?.*//; s/'^$forbidden_uri_chars^'//g; s/\.\.*/./g; 1q'} @@ -181,13 +182,13 @@ if(~ $local_path */) { if not if(test -d $local_path) perm_redirect $req_path^'/' -p=() cd $sitedir if(test -f _werc/config) . _werc/config +conf_wd='' # This can be used inside config files to know where we are in the document tree. for(i in ('' $args)) { - p=($"p^/^$i) - req_paths_list=($req_paths_list $p) + config_wd=($"config_wd^/^$i) + req_paths_list=($req_paths_list $config_wd) if(test -d $i) { cd $i if(test -f _werc/config)