Changeset - f3669338ab80
[Not reviewed]
0 1 0
Branko Majic (branko) - 1 month ago 2025-03-06 13:32:29
branko@majic.rs
[cheatsheet_viewer.sh] Implemented command for showing profile information.
1 file changed with 80 insertions and 0 deletions:
0 comments (0 inline, 0 general) First comment
utils/cheatsheet_viewer.sh
Show inline comments
 
@@ -30,6 +30,7 @@ $PROGRAM $VERSION, simple utility for viewing image cheatsheets
 

	
 
Usage:
 
  $PROGRAM [OPTIONS] list
 
  $PROGRAM [OPTIONS] info PROFILE
 
EOF
 
}
 

	
 
@@ -58,6 +59,13 @@ activated. Base directory for profiles is:
 

	
 
  - ~/.config/cheatsheet_viewer/profiles/
 

	
 
Each profile definition consists out of a number of configuration
 
files:
 

	
 
  - ~/.config/cheatsheet_viewer/profiles/PROFILE/cheatsheets (list of
 
    cheatsheet files, one per line, blank lines are ignored, lines
 
    starting with '#' are ignored)
 

	
 
Multiple commands are provided for working with the profiles and
 
displaying the cheatsheets.
 

	
 
@@ -65,6 +73,15 @@ list
 

	
 
  Lists the available profiles.
 

	
 
info PROFILE
 

	
 
  Arguments:
 

	
 
    PROFILE (profile name)
 

	
 
  Shows detailed information about user-specified profile, such as
 
  list of defined cheatsheets etc.
 

	
 
$PROGRAM accepts the following options:
 

	
 
    -q
 
@@ -140,6 +157,57 @@ function command_list() {
 
}
 

	
 

	
 
#
 
# Displays profile information.
 
#
 
# Arguments:
 
#
 
#   $1 (config_dir)
 
#     Base directory under which all configuration files are stored.
 
#
 
#   $2 (profile)
 
#     Profile name.
 
#
 
# Returns:
 
#   0 on success, 1 otherwise.
 
#
 
function command_info() {
 
    local config_dir="$1"
 
    local profile="$2"
 

	
 
    local profile_dir="$config_dir/profiles/$profile"
 
    local cheatsheets_file="$profile_dir/cheatsheets"
 

	
 
    local cheatsheets=()
 

	
 
    if [[ ! -d $profile_dir ]]; then
 
        error "No such profile found under $profile_dir"
 
        return 1
 
    fi
 

	
 
    if [[ -e $cheatsheets_file ]]; then
 
        readarray -t cheatsheets < <(grep --invert-match --extended-regexp "(^[[:blank:]]*#|^[[:blank:]]*$)" "$cheatsheets_file")
 
    fi
 

	
 
    echo "Profile $profile"
 
    echo "========${profile//?/=}"
 
    echo
 
    echo "Base directory:   $profile_dir"
 
    echo "Cheatsheets list: $cheatsheets_file"
 
    echo
 

	
 
    if (( ${#cheatsheets[@]} == 0 )); then
 
        echo "No configured cheatsheets."
 
    else
 
        echo "Configured cheatsheets:"
 
        echo
 
        for cheatsheet in "${cheatsheets[@]}"; do
 
            echo "  - $cheatsheet"
 
        done
 
    fi
 
}
 

	
 

	
 
# Set-up colours for message printing if we're not piping and terminal is
 
# capable of outputting the colors.
 
_COLOR_TERMINAL=$(tput colors 2>&1)
 
@@ -234,6 +302,18 @@ if [[ $COMMAND == list ]]; then
 

	
 
    command_list "$CONFIG_DIR"
 

	
 
elif [[ $COMMAND == info ]]; then
 

	
 
    PROFILE="${1-}"
 
    shift
 

	
 
    if [[ -z $PROFILE ]]; then
 
        error "Profile name must be specified."
 
        exit "$ERROR_ARGUMENTS"
 
    fi
 

	
 
    command_info "$CONFIG_DIR" "$PROFILE"
 

	
 
else
 

	
 
    error "Unsupported command: $COMMAND"
0 comments (0 inline, 0 general) First comment
You need to be logged in to comment. Login now