
#Read the fucking manual
rtfm() { help $@ || info $@ || man $@ || curl "http://cheat.sh/$@"; }
# Get your public IP
extip(){ ip=$(curl -s http://api.ipify.org);
	echo "Public IP address is $ip"
}

# Cheatsheet for linux commands
ch() { curl "http://cheat.sh/$@"; }

# You can go to noti.toad.city and generate your own code to get browser notifications. It's all explained there. You'll need to modify this value
notica() { curl --data "d:$*" "https://noti.toad.city/?VFvu53" ; }

# Countdown Timer
countdown() {
  start="$(( $(date '+%s') + $1))"
  while [ $start -ge $(date +%s) ]; do
    time="$(( $start - $(date +%s) ))"
    printf '%s\r' "$(date -u -d "@$time" +%H:%M:%S)"
    sleep 0.1
  done
}
# Random quote to avoid making useful commit messages
function rgcm() {
  api="https://whatthecommit.com/index.txt"
  message=$(curl -s $api)
  if [[ -z $message ]]; then
    echo "Error: Failed to retrieve a random commit message"
    return 1
  fi
  git add .
  git commit -m "$message"
  echo "Git commit submitted with message: $message"
}
function cntdn() {
    local count=$1
    while [ $count -gt 0 ]; do
        echo -en "\n$count... "
        if [ $count -eq 3 ]; then
            echo "You've still got a few seconds to live it up before your time runs out!"
        elif [ $count -eq 2 ]; then
            echo "Tick-tock, tick-tock, time's running out!"
        elif [ $count -eq 1 ]; then
            echo "You had a good run, but it's time to face the music!"
        fi
        sleep 1
        ((count--))
    done
    echo "Time's up!"
}

function ramdisk() {
    if [ -z "$1" ]; then
        echo "Error: Ramdisk size not specified."
        return 1
    fi
    if [ ! -d "$HOME/ramdown" ]; then
        mkdir "$HOME/ramdown"
    fi

    size="$1"

    sudo mount -t tmpfs -o size="$size" tmpfs "$HOME/ramdown"
}

ipin() {
  local ip=$1
  local endpoint="https://ipinfo.io"
  # Append IP to the endpoint if provided
  if [[ -n $ip ]]; then
    endpoint+="/$ip"
  fi
  endpoint+="/json?token=4ea2457429bf23"
  # Make the API call and prettify the JSON response
  curl -s "$endpoint" | jq .
}
# Tere function
tere() {
    local result=$(command tere "$@")
    [ -n "$result" ] && cd -- "$result"
}
# Compress files. Like the name says.
function compress_files() {
    if [ -z "$1" ]; then
        echo "Usage: compress_files <archive_name.zip> <file1> <file2> ..."
    else
        zip -r "$1" "${@:2}"
    fi
}

# Du to a depth and human readable
function duh() {
  local depth=${1:-1}
  local path=${2:-"."}
  du -hx -d "$depth" -- "$path" | sort -h
}
