Add .firestarterrc support, fix rotating logs in a dry run
This commit is contained in:
parent
488ff83b41
commit
28878bd911
@ -28,6 +28,8 @@ By setting a dummy execution line, one can effectively prevent an entire configu
|
||||
command -v lemonbar
|
||||
~/.bin/lemonbar.sh | lemonbar
|
||||
|
||||
After all these programs have been started, the last thing firestarter does is execute `~/.firestarterrc`, if it exists.
|
||||
|
||||
# Logging
|
||||
|
||||
All STDOUT and STDERR messages from these commands are saved to a logfile in `~/.local/share/firestarter/logs` under the same name as the configuration file. By default, these logfiles are rotated every time you log in.
|
||||
|
29
firestarter
29
firestarter
@ -11,6 +11,7 @@
|
||||
_name="firestarter"
|
||||
_configdir="${XDG_CONFIG_HOME:-$HOME/.config}/$_name"
|
||||
_logdir="${XDG_DATA_HOME:-$HOME/.local/share}/$_name/logs"
|
||||
_firestarterrc="$HOME/.firestarterrc"
|
||||
|
||||
# Basic functions
|
||||
print() {
|
||||
@ -276,7 +277,7 @@ https://gitlab.com/rehashedsalt/firestarter
|
||||
EOF
|
||||
}
|
||||
step_check() {
|
||||
if [ -z "$dryrun" ]; then
|
||||
if [ -z "$_dryrun" ]; then
|
||||
for pid in $(pgrep firestarter); do
|
||||
if [ "$pid" != "$BASHPID" ]; then
|
||||
err "Firestarter is already running" 61
|
||||
@ -287,7 +288,7 @@ step_check() {
|
||||
}
|
||||
step_preexecute() {
|
||||
# Special things that can't use simple configuration files
|
||||
[ "$dryrun" = "1" ] && return 0
|
||||
[ "$_dryrun" = "1" ] && return 0
|
||||
|
||||
# dbus
|
||||
if \
|
||||
@ -359,11 +360,13 @@ step_preexecute() {
|
||||
fi
|
||||
}
|
||||
step_execute() {
|
||||
# Ensure we have a config directory
|
||||
if ! [ -d "$_configdir" ]; then
|
||||
if ! mkdir -p "$_configdir" > /dev/null 2>&1; then
|
||||
err "Failed to create configuration directory \"$_configdir\"" 52
|
||||
fi
|
||||
fi
|
||||
# Ensure we can log if we have to
|
||||
if [ -n "$FS_NOLOG" ]; then
|
||||
log "No logs will be created per FS_NOLOG"
|
||||
elif ! [ -d "$_logdir" ]; then
|
||||
@ -371,6 +374,7 @@ step_execute() {
|
||||
err "Failed to create log directory \"$_logdir\"" 53
|
||||
fi
|
||||
fi
|
||||
# Parse configs
|
||||
for file in "$_configdir"/*; do
|
||||
if ! [ -f "$file" ]; then
|
||||
log "No configuration files found; generating defaults"
|
||||
@ -387,11 +391,11 @@ step_execute() {
|
||||
read -r execline
|
||||
if bash -c "$checkline" > /dev/null 2>&1; then
|
||||
log "Found target for \"$filename\": \"$execline\""
|
||||
if [ -f "$logfile" ]; then
|
||||
[ -f "$logfile.old" ] && rm "$logfile.old"
|
||||
mv "$logfile" "$logfile.old"
|
||||
fi
|
||||
if ! [ "$dryrun" = "1" ]; then
|
||||
if ! [ "$_dryrun" = "1" ]; then
|
||||
if [ -f "$logfile" ]; then
|
||||
[ -f "$logfile.old" ] && rm "$logfile.old"
|
||||
mv "$logfile" "$logfile.old"
|
||||
fi
|
||||
bash -c "$execline" > "$logfile" 2>&1 &
|
||||
fi
|
||||
break
|
||||
@ -400,9 +404,14 @@ step_execute() {
|
||||
fi
|
||||
done < "$file"
|
||||
done
|
||||
# And then source in a user script if it exists
|
||||
if [ -r "$_firestarterrc" ] && [ -z "$_dryrun" ]; then
|
||||
log "Sourcing .firestarterrc"
|
||||
"$_firestarterrc"
|
||||
fi
|
||||
}
|
||||
step_wait() {
|
||||
[ "$dryrun" = "1" ] && exit 0
|
||||
[ "$_dryrun" = "1" ] && exit 0
|
||||
log "Waiting for programs to exit"
|
||||
log "Send any termination signal to firestarter to log out"
|
||||
trap step_logout EXIT
|
||||
@ -429,9 +438,9 @@ main() {
|
||||
while getopts ":dgh" opt; do
|
||||
case $opt in
|
||||
d)
|
||||
if ! [ "$dryrun" = "1" ]; then
|
||||
if ! [ "$_dryrun" = "1" ]; then
|
||||
log "Performing a dry run"
|
||||
dryrun=1
|
||||
_dryrun=1
|
||||
fi
|
||||
;;
|
||||
g)
|
||||
|
Loading…
Reference in New Issue
Block a user