#!/usr/bin/env bash
set -euo pipefail

# Script Name: uuid
# Description: Generate v4 UUID (useful for security testing, tokens, identifiers)
# Source: https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time/
# Credit: Evan Hahn - https://codeberg.org/EvanHahn/dotfiles
# Usage: uuid              # generate one UUID
#        uuid 5            # generate 5 UUIDs
#        uuid | pbcopy     # copy to clipboard

count=${1:-1}

# Try multiple methods (in order of preference)
generate_uuid() {
  # Method 1: Python (most portable)
  if command -v python3 &>/dev/null; then
    python3 -c 'import uuid; print(uuid.uuid4())'
  # Method 2: Ruby
  elif command -v ruby &>/dev/null; then
    ruby -e "require 'securerandom'; puts SecureRandom.uuid"
  # Method 3: uuidgen (available on many systems)
  elif command -v uuidgen &>/dev/null; then
    uuidgen | tr '[:upper:]' '[:lower:]'
  # Method 4: /proc/sys/kernel/random/uuid (Linux)
  elif [[ -r /proc/sys/kernel/random/uuid ]]; then
    cat /proc/sys/kernel/random/uuid
  else
    echo "Error: No UUID generation method available" >&2
    echo "Install python3, ruby, or uuid-runtime package" >&2
    return 1
  fi
}

for ((i=1; i<=count; i++)); do
  generate_uuid
done
