add site_local_files feature for easy lib/template override

This commit is contained in:
Oliver Gorwits
2017-05-14 21:12:19 +01:00
parent 824ec751e2
commit da04522199
4 changed files with 30 additions and 6 deletions

View File

@@ -3,9 +3,16 @@ package App::Netdisco::Configuration;
use App::Netdisco::Environment; use App::Netdisco::Environment;
use Dancer ':script'; use Dancer ':script';
use Path::Class 'dir';
BEGIN { BEGIN {
# stuff useful locations into @INC if (setting('include_paths') and ref [] eq ref setting('include_paths')) {
unshift @INC, @{ (setting('include_paths') || []) }; # stuff useful locations into @INC
push @{setting('include_paths')},
dir(($ENV{NETDISCO_HOME} || $ENV{HOME}), 'nd-site-local', 'lib')->stringify
if (setting('site_local_files'));
unshift @INC, @{setting('include_paths')};
}
} }
# set up database schema config from simple config vars # set up database schema config from simple config vars

View File

@@ -143,6 +143,21 @@ be loaded before (and hence override) any templates built in to Netdisco.
If you do want to copy and override a built in web template, then create the If you do want to copy and override a built in web template, then create the
directories necessary (such as "ajax" or "sidebar") in this path. directories necessary (such as "ajax" or "sidebar") in this path.
Note that templates may need to have a further "C<views>" subdirectory
created.
=head3 C<site_local_files>
Value: Boolean. Default: false.
A shortcut for using C<include_paths> and C<template_paths>. Setting this to
true will push C<< $home/nd-site-local/{lib,share} >> into those settings,
respectively. You can then put Perl code in C</lib> and templates in C</share>
within the C<nd-site-local> directory (you have to create this yourself).
Note that templates may need to have a further "C<views>" subdirectory
created.
=head3 C<external_databases> =head3 C<external_databases>
Value: List of Database Configuration Hashes. Default: None. Value: List of Database Configuration Hashes. Default: None.

View File

@@ -58,10 +58,11 @@ push @{ config->{engines}->{netdisco_template_toolkit}->{INCLUDE_PATH} },
# any template paths in deployment.yml (should override plugins) # any template paths in deployment.yml (should override plugins)
if (setting('template_paths') and ref [] eq ref setting('template_paths')) { if (setting('template_paths') and ref [] eq ref setting('template_paths')) {
foreach my $path (setting('template_paths')) { push @{setting('template_paths')},
unshift @{ config->{engines}->{netdisco_template_toolkit}->{INCLUDE_PATH} }, dir(($ENV{NETDISCO_HOME} || $ENV{HOME}), 'nd-site-local', 'share')->stringify
$path; if (setting('site_local_files'));
} unshift @{ config->{engines}->{netdisco_template_toolkit}->{INCLUDE_PATH} },
@{setting('template_paths')};
} }
# load cookie key from database # load cookie key from database

View File

@@ -13,6 +13,7 @@ log: 'warning'
logger_format: '[%P] %U %L %m' logger_format: '[%P] %U %L %m'
include_paths: [] include_paths: []
template_paths: [] template_paths: []
site_local_files: false
external_databases: [] external_databases: []
# ------------ # ------------