diff --git a/utils/cheatsheet_viewer.sh b/utils/cheatsheet_viewer.sh index 72bde8ad21a028761137c6ff9b68e1feba3fc0a2..2a83ecc5ce44e1e4f72c327846843617da09123e 100755 --- a/utils/cheatsheet_viewer.sh +++ b/utils/cheatsheet_viewer.sh @@ -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"