This commit is contained in:
a 2025-06-30 21:05:12 -05:00
parent fddc3fbceb
commit 3883292bd6
No known key found for this signature in database
GPG Key ID: 2F22877AA4DFDADB
2 changed files with 9 additions and 82 deletions

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# repotool
this is a rediculous tool.
it returns json which is to be used by another wrapper for your shell that does directory movement.
i have no really other idea on how to implement this.
i did it in bashly originally, but i switched to lua.

View File

@ -1,82 +0,0 @@
#!/usr/bin/env bash
# Parse a git URL into domain and path components
# Usage: parse_git_url <url> <perl_regex_command> <jq_command>
# Returns: JSON with domain and path fields
parse_git_url() {
local url="$1"
local regex="$2"
local jq="$3"
local domain=""
local path=""
local output
# Check if it's an HTTP(S) URL
if [[ "$url" =~ ^https?:// ]]; then
output=($(echo "$url" | $regex '/^https?:\/\/(?:.*?:)?(.*\..*?)\/(.*?)(\.git)?$/ && print "$1 $2" ' -))
if [[ ${#output[@]} -eq 2 ]]; then
domain=${output[0]}
path=${output[1]}
fi
# Check if it's an SSH URL
elif [[ "$url" =~ ^[^:]+@[^:]+: ]] || [[ "$url" =~ ^ssh:// ]]; then
output=($(echo "$url" | $regex '/^(?:.*?@)?(.*\..*?)(?::|\/)(.*?)(\.git)?$/ && print "$1 $2" ' -))
if [[ ${#output[@]} -eq 2 ]]; then
domain=${output[0]}
path=${output[1]}
fi
# Check if it's a bare domain path (e.g., gfx.cafe/oku/trade)
else
output=($(echo "$url" | $regex '/^(.*\..*?)\/(.*?)(\.git)?$/ && print "$1 $2" ' -))
if [[ ${#output[@]} -eq 2 ]]; then
domain=${output[0]}
path=${output[1]}
fi
fi
# Return JSON
$jq -n --arg domain "$domain" --arg path "$path" '{domain: $domain, path: $path}'
}
# Get domain and path from current git repository's origin
# Usage: parse_git_origin <perl_regex_command> <jq_command>
# Returns: JSON with domain and path fields
parse_git_origin() {
local regex="$1"
local jq="$2"
# Get origin URL
local origin_url
origin_url=$(git config --get remote.origin.url)
if [[ -z "$origin_url" ]]; then
$jq -n '{domain: "", path: ""}'
return 1
fi
# Parse the URL
parse_git_url "$origin_url" "$regex" "$jq"
}
# Validate if a URL is a valid git repository URL
# Usage: valid_url <url>
# Returns: 1 for HTTP(S), 2 for SSH, 3 for bare domain paths, -1 for invalid
valid_url() {
local url="$1"
if [[ "$url" =~ ^https?:// ]]; then
echo "1"
return 0
elif [[ "$url" =~ ^[^:]+@[^:]+: ]] || [[ "$url" =~ ^ssh:// ]]; then
echo "2"
return 0
elif [[ "$url" =~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]+/[^/]+ ]]; then
# Bare domain path like gfx.cafe/oku/trade
echo "3"
return 0
else
echo "-1"
return 1
fi
}