You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.0 KiB
98 lines
3.0 KiB
package provide punk::config [namespace eval punk::config { |
|
variable version |
|
set version 0.1 |
|
|
|
}] |
|
|
|
namespace eval punk::config { |
|
variable loaded |
|
variable startup ;#include env overrides |
|
variable running |
|
variable known_punk_env_vars |
|
|
|
#todo - XDG_DATA_HOME etc |
|
#https://specifications.freedesktop.org/basedir-spec/latest/ |
|
# see also: http://hiphish.github.io/blog/2020/08/30/dotfiles-were-a-mistake/ |
|
|
|
variable vars |
|
set vars [list \ |
|
apps \ |
|
config \ |
|
configset \ |
|
scriptlib \ |
|
color_stdout \ |
|
color_stderr \ |
|
logfile_stdout \ |
|
logfile_stderr \ |
|
syslog_stdout \ |
|
syslog_stderr \ |
|
syslog_active \ |
|
exec_unknown \ |
|
] |
|
#todo pkg punk::config |
|
|
|
#defaults |
|
|
|
dict set startup configset .punkshell |
|
dict set startup exec_unknown true ;#whether to use exec instead of experimental shellfilter::run |
|
#dict set startup color_stdout [list cyan bold] ;#not a good idea to default |
|
dict set startup color_stdout [list] |
|
dict set startup color_stderr [list red bold] |
|
dict set startup syslog_stdout "127.0.0.1:514" |
|
dict set startup syslog_stderr "127.0.0.1:514" |
|
dict set startup syslog_active 0 |
|
#default file logs to logs folder at same location as exe if writable, or empty string |
|
dict set startup logfile_stdout "" |
|
dict set startup logfile_stderr "" |
|
set exefolder [file dirname [info nameofexecutable]] |
|
set log_folder $exefolder/logs |
|
dict set startup scriptlib $exefolder/scriptlib |
|
dict set startup apps $exefolder/../../punkapps |
|
if {[file exists $log_folder]} { |
|
if {[file isdirectory $log_folder] && [file writable $log_folder]} { |
|
dict set startup logfile_stdout $log_folder/repl-exec-stdout.txt |
|
dict set startup logfile_stderr $log_folder/repl-exec-stderr.txt |
|
} |
|
} |
|
|
|
|
|
#todo - load/write config file |
|
|
|
#env vars override the configuration |
|
|
|
#todo - define which configvars are settable in env |
|
set known_punk_env_vars [list \ |
|
PUNK_APPS \ |
|
PUNK_CONFIG \ |
|
PUNK_CONFIGSET \ |
|
PUNK_SCRIPTLIB \ |
|
PUNK_EXECUNKNOWN \ |
|
PUNK_COLOR_STDERR \ |
|
PUNK_COLOR_STDOUT \ |
|
PUNK_LOGFILE_STDOUT \ |
|
PUNK_LOGFILE_STDERR \ |
|
PUNK_SYSLOG_STDOUT \ |
|
PUNK_SYSLOG_STDERR \ |
|
PUNK_SYSLOG_ACTIVE \ |
|
] |
|
|
|
#override with env vars if set |
|
variable evar |
|
foreach evar $known_punk_env_vars { |
|
if {[info exists ::env($evar)]} { |
|
set f [set ::env($evar)] |
|
if {$f ne "default"} { |
|
#e.g PUNK_SCRIPTLIB -> scriptlib |
|
set varname [string tolower [string range $evar 5 end]] |
|
dict set startup $varname $f |
|
} |
|
} |
|
} |
|
unset -nocomplain evar |
|
unset -nocomplain vars |
|
|
|
set running [dict create] |
|
set running [dict merge $running $startup] |
|
|
|
|
|
}
|
|
|