#!/bin/zsh

# Define the location of the bookmarks file
bookmarks_file="$HOME/.bookmarks"

# Function to display usage information
help() {
  echo "\nQuickly navigate to saved bookmarks in the terminal.\n"
  echo "Usage:"
  echo "  goto downloads"
  echo "  goto school"
  echo "  goto portfolio"
  echo "  goto -h"
  echo "  goto --help"
}

# Function to validate and change directory
validate_dir() {
  local target_dir=$1

  # Check if bookmarks file exists
  if ! test -f "$bookmarks_file"; then
    echo "Error accessing bookmarks file: $bookmarks_file"
    return
  fi

  # Read each line in the bookmarks file
  while IFS= read -r line; do
    # Check if the line contains the target directory
    if [[ $line == *$target_dir* ]]; then
      # Change directory and exit
      cd "$line"
      return
    fi
  done < "$bookmarks_file"

  # Target directory not found in bookmarks
  echo "Directory '$target_dir' not found in bookmarks."
  return
}

# Check for valid number of arguments
if [[ $# -ne 1 ]]; then
  echo "Invalid usage. See 'goto --help' for details."
  return
elif [[ $1 == "-h" || $1 == "--help" ]]; then
  help
  return
fi

# Validate and change directory based on argument
validate_dir $1

# Exit script (should be reached after successful directory change)
return
