You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.5 KiB
86 lines
2.5 KiB
1 year ago
|
#!/bin/sh
|
||
|
|
||
|
# Initialize verbose flag to 0
|
||
|
verbose=0
|
||
|
|
||
|
# Parse options
|
||
|
while getopts "v" opt; do
|
||
|
case $opt in
|
||
|
v) verbose=1 ;; # If -v is passed, set verbose to 1
|
||
|
\?) echo "Invalid option: -$OPTARG" >&2 ;; # Invalid option
|
||
|
esac
|
||
|
done
|
||
|
shift $((OPTIND-1)) # Shift off the options and optional --.
|
||
|
|
||
|
# Function to display priorities
|
||
|
display_priorities() {
|
||
|
# Get directory
|
||
|
DIR="${PWD}"
|
||
|
|
||
|
# Get the current priorities of the directory
|
||
|
dir_priorities=$(read-magic "${DIR}" priorities)
|
||
|
|
||
|
# If there are no priorities, print an error message and exit
|
||
|
if [ -z "${dir_priorities}" ] || [ "$dir_priorities" = "Error: The attribute does not exist." ]; then
|
||
|
echo "No priorities set in the current folder. Try 'prioritize <filename>'."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Initialize variables
|
||
|
highest_priority=""
|
||
|
line_added=false
|
||
|
menu_command="menu Priorities:"
|
||
|
|
||
|
# Loop through the priorities
|
||
|
dir_priorities=$(echo "${dir_priorities}" | tr ',' '\n')
|
||
|
|
||
|
for priority_hash in $dir_priorities; do
|
||
|
# Get the priority file
|
||
|
priority_file=$(get-card "${priority_hash}")
|
||
|
|
||
|
# Check if the file exists
|
||
|
if [ -n "${priority_file}" ]; then
|
||
|
# Get priority of the file
|
||
|
file_priority=$(read-magic "${priority_file}" priority 2>/dev/null)
|
||
|
|
||
|
# If the file does not have a priority, set it to 0
|
||
|
if [ -z "${file_priority}" ] || [ "$file_priority" = "Error: The attribute does not exist." ]; then
|
||
|
file_priority=0
|
||
|
fi
|
||
|
|
||
|
# If the priority of the file is a number
|
||
|
if [ "${file_priority}" -eq "${file_priority}" ] 2>/dev/null; then
|
||
|
# If the file's priority is not the highest priority, add a line
|
||
|
if [ -n "${highest_priority}" ] && [ "${file_priority}" -ne "${highest_priority}" ] && [ "${line_added}" = false ]; then
|
||
|
menu_command="${menu_command} \"─── %\""
|
||
|
line_added=true
|
||
|
fi
|
||
|
|
||
|
# Add the file to the menu command
|
||
|
menu_command="${menu_command} \""
|
||
|
if [ $verbose -eq 1 ]; then
|
||
|
menu_command="${menu_command}${file_priority} "
|
||
|
fi
|
||
|
item_name=$(basename "$priority_file")
|
||
|
menu_command="${menu_command}$item_name%priority-menu \\\"${priority_file}\\\"\""
|
||
|
|
||
|
# Update the highest priority
|
||
|
highest_priority="${file_priority}"
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Add exit command
|
||
|
menu_command="${menu_command} \"Exit%kill -2 $$\""
|
||
|
|
||
|
# Execute the constructed menu command
|
||
|
eval "${menu_command}"
|
||
|
}
|
||
|
|
||
|
# This script displays a list of the prioritized cards in the current directory.
|
||
|
# Catch Ctrl-C
|
||
|
trap "exit" INT
|
||
|
|
||
|
while true; do
|
||
|
display_priorities
|
||
|
done
|