Clean up README, add exit status table, add more error handling

This commit is contained in:
Salt 2019-06-21 19:09:46 -05:00
parent 4371075861
commit 510ffbdbeb
2 changed files with 24 additions and 5 deletions

View File

@ -28,7 +28,7 @@ By setting a dummy execution line, one can effectively prevent an entire configu
command -v lemonbar command -v lemonbar
~/.bin/lemonbar.sh | lemonbar ~/.bin/lemonbar.sh | lemonbar
After all these programs have been started, the last thing firestarter does is execute `~/.firestarterrc`, if it exists. After all these programs have been started, firestarter executes `~/.firestarterrc` if it exists.
# Logging # Logging
@ -36,6 +36,18 @@ All STDOUT and STDERR messages from these commands are saved to a logfile in `~/
If you set the variable `FS_NOLOG` to a nonempty value, firestarter will not keep logs. If you set the variable `FS_NOLOG` to a nonempty value, firestarter will not keep logs.
# Exit Codes
| code | meaning |
| --: | --- |
| 0 | Success |
| 40 | Firestarter is already running |
| 50 | Unrecognized argument |
| 51 | Invalid option for an argument |
| 52 | Failed to create configuration directory |
| 53 | Failed to create logging directory (and logging is enabled) |
| 54 | `HOME` does not exist or is unreadable |
## Contribution ## Contribution
Firestarter by no means contains an exhaustive list of all possible programs. If you know of or have created a program that should be added, *please* open an issue about it. The script should be light but its choices massive. Firestarter by no means contains an exhaustive list of all possible programs. If you know of or have created a program that should be added, *please* open an issue about it. The script should be light but its choices massive.

View File

@ -12,6 +12,7 @@ _name="firestarter"
_configdir="${XDG_CONFIG_HOME:-$HOME/.config}/$_name" _configdir="${XDG_CONFIG_HOME:-$HOME/.config}/$_name"
_logdir="${XDG_DATA_HOME:-$HOME/.local/share}/$_name/logs" _logdir="${XDG_DATA_HOME:-$HOME/.local/share}/$_name/logs"
_firestarterrc="$HOME/.firestarterrc" _firestarterrc="$HOME/.firestarterrc"
_sessionid="$(< /proc/self/sessionid)"
# Basic functions # Basic functions
print() { print() {
@ -279,11 +280,18 @@ EOF
step_check() { step_check() {
if [ -z "$_dryrun" ]; then if [ -z "$_dryrun" ]; then
for pid in $(pgrep firestarter); do for pid in $(pgrep firestarter); do
# Skip invalid PIDs
! [ -d "/proc/$pid" ] && continue
# If it's not our session then who cares
[ "$_sessionid" != "$(< "/proc/$pid/sessionid")" ] && continue
if [ "$pid" != "$BASHPID" ]; then if [ "$pid" != "$BASHPID" ]; then
err "Firestarter is already running" 61 err "Firestarter is already running" 40
fi fi
done done
fi fi
if ! [ -d "$HOME" ] || ! [ -r "$HOME" ]; then
err "Inaccessible home directory: \"$HOME\"" 54
fi
return 0 return 0
} }
step_preexecute() { step_preexecute() {
@ -422,9 +430,8 @@ step_logout() {
log "Logging out" log "Logging out"
if command -v loginctl > /dev/null 2>&1; then if command -v loginctl > /dev/null 2>&1; then
# Use loginctl if possible # Use loginctl if possible
local sessionid="$(< /proc/self/sessionid)" if [ -n "$_sessionid" ]; then
if [ -n "$sessionid" ]; then loginctl terminate-session "$_sessionid"
loginctl terminate-session "$sessionid"
fi fi
else else
# Otherwise just brute it # Otherwise just brute it