mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-04-10 19:15:12 +00:00
CLI: don't show logs on informational messages
This commit is contained in:
parent
d2de02b922
commit
00a8552788
|
@ -22,30 +22,30 @@
|
|||
# The function auto-detects if the shell is sh and avoids colorizing the output in that case.
|
||||
|
||||
log() {
|
||||
# Exit early if logging_level is "none"
|
||||
# Exit immediately if logging_level is "none"
|
||||
if [[ $logging_level == "none" ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
local level="$1" # Logging level of the current message
|
||||
local message="$2" # Message to log
|
||||
local logfile="${3:-$rd_logs_folder/retrodeck.log}" # Log file, default to retrodeck.log
|
||||
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])" # Timestamp for the log entry
|
||||
local level="$1" # Current message level
|
||||
local message="$2" # Message to log
|
||||
local logfile="${3:-$rd_logs_folder/retrodeck.log}" # Default log file
|
||||
local timestamp="$(date +[%Y-%m-%d\ %H:%M:%S.%3N])" # Timestamp
|
||||
local colorize_terminal=true
|
||||
|
||||
# Determine the calling function or use [FWORK]
|
||||
# Determine the calling function, or use [FWORK]
|
||||
local caller="${FUNCNAME[1]:-FWORK}"
|
||||
caller="${caller^^}" # Convert to uppercase
|
||||
caller="${caller^^}" # Convert to uppercase
|
||||
|
||||
# Check if the shell is sh (not bash or zsh) to avoid colorization
|
||||
# Check if the shell is sh to avoid colorization
|
||||
if [ "${SHELL##*/}" = "sh" ]; then
|
||||
colorize_terminal=false
|
||||
fi
|
||||
|
||||
# Function to check if the current message level should be logged
|
||||
# Internal function to check if the message should be logged
|
||||
should_log() {
|
||||
case "$logging_level" in
|
||||
debug) return 0 ;; # Always log everything
|
||||
debug) return 0 ;; # Log everything
|
||||
info) [[ "$level" == "i" || "$level" == "e" ]] && return 0 ;;
|
||||
warn) [[ "$level" != "d" ]] && return 0 ;;
|
||||
error) [[ "$level" == "e" ]] && return 0 ;;
|
||||
|
@ -54,7 +54,7 @@ log() {
|
|||
}
|
||||
|
||||
if should_log; then
|
||||
# Define message colors based on level
|
||||
# Define colors based on the message level
|
||||
case "$level" in
|
||||
d)
|
||||
color="\e[32m[DEBUG]"
|
||||
|
@ -78,7 +78,7 @@ log() {
|
|||
;;
|
||||
esac
|
||||
|
||||
# Construct the log message
|
||||
# Build the message to display
|
||||
if [ "$colorize_terminal" = true ]; then
|
||||
colored_message="$color [$caller] $message\e[0m"
|
||||
else
|
||||
|
@ -86,17 +86,20 @@ log() {
|
|||
fi
|
||||
log_message="$timestamp $prefix [$caller] $message"
|
||||
|
||||
# Display the message in the terminal
|
||||
echo -e "$colored_message" >&2
|
||||
# If silent mode is not active, print the message to the terminal
|
||||
if [[ "$LOG_SILENT" != "true" ]]; then
|
||||
echo -e "$colored_message" >&2
|
||||
fi
|
||||
|
||||
# Write the log message to the log file
|
||||
# Ensure the log file exists
|
||||
if [ ! -f "$logfile" ]; then
|
||||
#echo "$timestamp [WARN] Log file not found in \"$logfile\", creating it" >&2 # Disabled it as it's always appearing because of log rotation
|
||||
if [[ ! -d "$(dirname "$logfile")" ]]; then
|
||||
mkdir -p "$(dirname "$logfile")"
|
||||
fi
|
||||
touch "$logfile"
|
||||
fi
|
||||
|
||||
# Write the log to the file
|
||||
echo "$log_message" >> "$logfile"
|
||||
fi
|
||||
}
|
||||
|
@ -130,4 +133,4 @@ rotate_logs() {
|
|||
# Compress without directory structure and suppress tar output
|
||||
tar -czf "${logfile}.1.tar.gz" -C "$(dirname "$logfile")" "$(basename "$logfile")" --remove-files &>/dev/null
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ run_game() {
|
|||
system=""
|
||||
manual_mode=false
|
||||
|
||||
usage="Usage: flatpak run net.retrodeck.retrodeck [-e emulator] [-s system] [-m] game"
|
||||
|
||||
# Parse options for system, emulator, and manual mode
|
||||
while getopts ":e:s:m" opt; do
|
||||
case ${opt} in
|
||||
|
@ -20,7 +22,7 @@ run_game() {
|
|||
log i "Run game: manual mode enabled"
|
||||
;;
|
||||
\?)
|
||||
echo "Usage: $0 [-e emulator] [-s system] [-m] game"
|
||||
echo "$usage"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
@ -30,7 +32,7 @@ run_game() {
|
|||
# Check for game argument
|
||||
if [[ -z "$1" ]]; then
|
||||
log e "Game path is required."
|
||||
log i "Usage: $0 [-e emulator] [-s system] [-m] game"
|
||||
log i "$usage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
278
retrodeck.sh
278
retrodeck.sh
|
@ -1,16 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
source /app/libexec/global.sh
|
||||
|
||||
# Function to display CLI help
|
||||
show_cli_help() {
|
||||
echo -e "
|
||||
echo -e "
|
||||
Usage:
|
||||
flatpak run [FLATPAK-RUN-OPTION] net.retrodeck.retrodeck [ARGUMENTS]
|
||||
|
||||
Arguments:
|
||||
-h, --help \t Print this help
|
||||
-v, --version \t Print RetroDECK version
|
||||
--info-msg \t Print paths and config informations
|
||||
--show-config \t Print information about the RetroDECK configuration file and its contents
|
||||
--debug \t Enable debug logging for this run of RetroDECK
|
||||
--configurator \t Starts the RetroDECK Configurator
|
||||
--compress-one <file> \t Compresses target file to a compatible format
|
||||
|
@ -35,139 +34,148 @@ https://retrodeck.net
|
|||
"
|
||||
}
|
||||
|
||||
# Arguments section
|
||||
# Check if is an infromational message
|
||||
# If so, set LOG_SILENT to true, source the global.sh script,
|
||||
# show the needed information and quit
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
LOG_SILENT=true
|
||||
source /app/libexec/global.sh
|
||||
if [[ "$version" =~ ^[0-9] ]]; then
|
||||
echo "RetroDECK v$version"
|
||||
else
|
||||
echo "RetroDECK $version"
|
||||
fi
|
||||
show_cli_help
|
||||
exit 0
|
||||
;;
|
||||
-v|--version)
|
||||
LOG_SILENT=true
|
||||
source /app/libexec/global.sh
|
||||
if [[ "$version" =~ ^[0-9] ]]; then
|
||||
echo "RetroDECK v$version"
|
||||
else
|
||||
echo "RetroDECK $version"
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
--show-config)
|
||||
LOG_SILENT=true
|
||||
source /app/libexec/global.sh
|
||||
echo "RetroDECK config file is in: $rd_conf"
|
||||
echo "Contents:"
|
||||
cat "$rd_conf"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-h*|--help*)
|
||||
if [[ "$version" == *"cooker"* ]]; then
|
||||
echo "RetroDECK $version"
|
||||
else
|
||||
echo "RetroDECK v$version"
|
||||
fi
|
||||
show_cli_help
|
||||
exit
|
||||
;;
|
||||
--version*|-v*)
|
||||
echo "RetroDECK v$version"
|
||||
exit
|
||||
;;
|
||||
--info-msg*)
|
||||
echo "RetroDECK v$version"
|
||||
echo "RetroDECK config file is in: $rd_conf"
|
||||
echo "Contents:"
|
||||
cat $rd_conf
|
||||
exit
|
||||
;;
|
||||
--debug*)
|
||||
logging_level="debug"
|
||||
shift
|
||||
;;
|
||||
--compress-one*)
|
||||
cli_compress_single_game "$2"
|
||||
exit
|
||||
;;
|
||||
--compress-all*)
|
||||
cli_compress_all_games "$2"
|
||||
;;
|
||||
--configurator*)
|
||||
sh /app/tools/configurator.sh
|
||||
#sh /app/bin/godot-configurator.sh
|
||||
exit 0
|
||||
;;
|
||||
# --legacy-configurator*)
|
||||
# sh /app/tools/configurator.sh
|
||||
# if [[ $(configurator_generic_question_dialog "RetroDECK Configurator" "Would you like to launch RetroDECK after closing the Configurator?") == "false" ]]; then
|
||||
# exit
|
||||
# else
|
||||
# shift
|
||||
# fi
|
||||
# ;;
|
||||
--reset*)
|
||||
component="${@:2}"
|
||||
if [ -z "$component" ]; then
|
||||
echo "You are about to reset one or more RetroDECK components or emulators."
|
||||
echo -e "Available options are:\nall, $(prepare_component --list | tr ' ' ',' | sed 's/,/, /g')"
|
||||
read -p "Please enter the component you would like to reset: " component
|
||||
component=$(echo "$component" | tr '[:upper:]' '[:lower:]')
|
||||
fi
|
||||
log d "Resetting component: $component"
|
||||
prepare_component "reset" "$component"
|
||||
exit
|
||||
;;
|
||||
--factory-reset*)
|
||||
prepare_component --factory-reset
|
||||
;;
|
||||
--test-upgrade*)
|
||||
if [[ "$2" =~ ^.+ ]]; then
|
||||
echo "You are about to test upgrading RetroDECK from version $2 to $hard_version"
|
||||
read -p "Enter 'y' to continue, 'n' to start RetroDECK normally: " response
|
||||
if [[ $response == [yY] ]]; then
|
||||
version="$2"
|
||||
logging_level="debug" # Temporarily enable debug
|
||||
shift 2
|
||||
else
|
||||
shift
|
||||
fi
|
||||
else
|
||||
echo "Error: Invalid format. Usage: --test-upgrade <version>"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
--set*)
|
||||
preset="$2"
|
||||
if [ "$preset" == "cheevos" ]; then
|
||||
echo "Error: The 'cheevos' preset is not yet supported via CLI. Please use the RetroDECK Configurator."
|
||||
exit 1
|
||||
fi
|
||||
value="$3"
|
||||
if [ -z "$preset" ]; then
|
||||
echo "Error: No preset specified. Usage: --set <preset> [value], --set help for more help"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$preset" == "help" ]; then
|
||||
echo "Used to toggle or set a preset. Available presets are:"
|
||||
fetch_all_presets
|
||||
echo "Usage: --set <preset> [value]"
|
||||
echo "Examples:"
|
||||
echo "Force borders to be true for gba:"
|
||||
echo " make_preset_changes borders gba true"
|
||||
echo "Force borders to be true for all supported systems:"
|
||||
echo " make_preset_changes borders all true"
|
||||
echo "Toggle gba in preset borders, this will disable the enabled and vice versa:"
|
||||
echo " make_preset_changes borders gba true"
|
||||
echo "Toggle all in preset borders:"
|
||||
echo " make_preset_changes borders all"
|
||||
source /app/libexec/global.sh
|
||||
|
||||
# Process command-line arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
# If the first argument is -e, -s, -m, or a valid file, attempt to launch the game
|
||||
if [ -f "$1" ] || [[ "$1" == "-e" || "$1" == "-s" || "$1" == "-m" ]]; then
|
||||
echo "$LOG_BUFFER"
|
||||
log i "Game start option detected: $1"
|
||||
run_game "$@"
|
||||
exit 0
|
||||
fi
|
||||
make_preset_changes "$preset" "$value"
|
||||
exit 0
|
||||
;;
|
||||
--open*)
|
||||
open_component "${@:2}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
# Assume unknown arguments are game start arguments
|
||||
if [ -f "$i" ]; then
|
||||
log i "Attempting to start the game: $i"
|
||||
run_game "$@"
|
||||
exit
|
||||
elif [[ "$i" == "-e" || "$i" == "-s" || "$i" == "-m" ]]; then
|
||||
log i "Game start option detected: $i"
|
||||
run_game "$@"
|
||||
exit
|
||||
else
|
||||
log i "Command or File '$i' not found. Ignoring argument and continuing..."
|
||||
break # Continue with the main program
|
||||
fi
|
||||
;;
|
||||
-*|--*)
|
||||
log i "Unknown option $i"
|
||||
show_cli_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--debug)
|
||||
logging_level="debug"
|
||||
shift
|
||||
;;
|
||||
--compress-one)
|
||||
cli_compress_single_game "$2"
|
||||
exit 0
|
||||
;;
|
||||
--compress-all)
|
||||
cli_compress_all_games "$2"
|
||||
shift 2
|
||||
;;
|
||||
--configurator)
|
||||
sh /app/tools/configurator.sh
|
||||
exit 0
|
||||
;;
|
||||
--reset)
|
||||
component="${@:2}"
|
||||
if [ -z "$component" ]; then
|
||||
echo "You are about to reset one or more RetroDECK components or emulators."
|
||||
echo -e "Available options are:\nall, $(prepare_component --list | tr ' ' ',' | sed 's/,/, /g')"
|
||||
read -p "Please enter the component you would like to reset: " component
|
||||
component=$(echo "$component" | tr '[:upper:]' '[:lower:]')
|
||||
fi
|
||||
log d "Resetting component: $component"
|
||||
prepare_component "reset" "$component"
|
||||
exit 0
|
||||
;;
|
||||
--factory-reset)
|
||||
prepare_component --factory-reset
|
||||
exit 0
|
||||
;;
|
||||
--test-upgrade)
|
||||
if [[ "$2" =~ ^.+ ]]; then
|
||||
echo "You are about to test upgrading RetroDECK from version $2 to $hard_version"
|
||||
read -p "Enter 'y' to continue, 'n' to start RetroDECK normally: " response
|
||||
if [[ $response == [yY] ]]; then
|
||||
version="$2"
|
||||
logging_level="debug" # Temporarily enable debug logging
|
||||
shift 2
|
||||
else
|
||||
shift
|
||||
fi
|
||||
else
|
||||
echo "Error: Invalid format. Usage: --test-upgrade <version>"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
--set)
|
||||
preset="$2"
|
||||
if [ "$preset" == "cheevos" ]; then
|
||||
echo "Error: The 'cheevos' preset is not yet supported via CLI. Please use the RetroDECK Configurator."
|
||||
exit 1
|
||||
fi
|
||||
value="$3"
|
||||
if [ -z "$preset" ]; then
|
||||
echo "Error: No preset specified. Usage: --set <preset> [value] (use --set help for more information)"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$preset" == "help" ]; then
|
||||
echo "Used to toggle or set a preset. Available presets are:"
|
||||
fetch_all_presets
|
||||
echo "Usage: --set <preset> [value]"
|
||||
echo "Examples:"
|
||||
echo " Force borders to be true for GBA:"
|
||||
echo " make_preset_changes borders gba true"
|
||||
echo " Force borders to be true for all supported systems:"
|
||||
echo " make_preset_changes borders all true"
|
||||
echo " Toggle GBA in preset borders (this will disable if enabled and vice versa):"
|
||||
echo " make_preset_changes borders gba true"
|
||||
echo " Toggle all in preset borders:"
|
||||
echo " make_preset_changes borders all"
|
||||
exit 0
|
||||
fi
|
||||
make_preset_changes "$preset" "$value"
|
||||
exit 0
|
||||
;;
|
||||
--open)
|
||||
open_component "${@:2}"
|
||||
exit 0
|
||||
;;
|
||||
-*)
|
||||
# Catch-all for unrecognized options starting with a dash
|
||||
log e "Error: Unknown option '$1'"
|
||||
echo "Error: Unrecognized option '$1'. Use -h or --help for usage information."
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
# If it reaches here and is an unrecognized argument, report the error
|
||||
log e "Error: Command or file '$1' not recognized."
|
||||
echo "Error: Command or file '$1' not recognized. Use -h or --help for usage information."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# if lockfile exists
|
||||
|
|
Loading…
Reference in a new issue