function j { if ($args.Length -eq 0) { $answer = gum spin --show-output -- skate list "@j" | gum choose $answer = $answer -split "`t" $key = -join("", $answer[0], "@j") $path = gum spin --show-output -- skate get $key if ($path -ne "Key cannot be empty") { cd $path } } else { # check if first argument is a number if ($args[0] -match '^\d+$') { $num = -join("", $args[0], "@j") $path = gum spin --show-output skate get $num if ($path -ne "Key not found") { cd $path } else { Write-Host "Bookmark not found" return } } else { if ($args[0] -eq 'set' -or $args[0] -eq 'delete' -and $args.Length -eq 2) { # check if second argument is a number if ($args[1] -match '^\d+$') { if ($args[0] -eq 'set') { gum spin -- skate set $key $path $path = (Get-Location).Path $key = -join("", $args[1], "@j") gum spin -- skate set $key $path } elseif ($args[0] -eq 'delete') { $in = $args[1] $key = -join("", $in, "@j") $path = gum spin --show-output -- skate get $key if ($path -ne "Key not found") { $message = "Deleting bookmark $in`: $path" gum style --foreground 212 $message gum confirm if ($?) { gum spin -- skate delete $key } } else { Write-Host "Bookmark $in not found" return } } } else { Write-Host "Invalid argument: bookmark must be a number" } } else { Write-Host "Invalid argument: try set, delete or a number" } } } }