Added script
This commit is contained in:
parent
1512a06bc1
commit
b140ab96d2
71
GitThat.sh
Executable file
71
GitThat.sh
Executable file
@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
show_GitThat_help() {
|
||||
echo "Usage: $0 [-h] [-d directory] [-o output_file] [-s]"
|
||||
echo
|
||||
echo " -h Show this help message and exit"
|
||||
echo " -d <directory> Directory to search (default: current directory)"
|
||||
echo " -o <output_file> File to save the output (default: stdout)"
|
||||
echo " -s Search all subdirectories (recursive)"
|
||||
}
|
||||
|
||||
# Default values
|
||||
BASE_DIR="."
|
||||
OUTPUT_FILE=""
|
||||
RECURSIVE=false
|
||||
|
||||
# Parse options
|
||||
while getopts ":hd:o:s" opt; do
|
||||
case $opt in
|
||||
h)
|
||||
show_GitThat_help
|
||||
exit 0
|
||||
;;
|
||||
d)
|
||||
BASE_DIR="$OPTARG"
|
||||
;;
|
||||
o)
|
||||
OUTPUT_FILE="$OPTARG"
|
||||
;;
|
||||
s)
|
||||
RECURSIVE=true
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
show_GitThat_help
|
||||
exit 1
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument." >&2
|
||||
show_GitThat_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Determine find depth option
|
||||
if [ "$RECURSIVE" = true ]; then
|
||||
FIND_OPTS="-type d -name .git"
|
||||
else
|
||||
FIND_OPTS="-maxdepth 2 -type d -name .git"
|
||||
fi
|
||||
|
||||
# Run the search and collect results
|
||||
RESULTS=""
|
||||
while IFS= read -r gitdir; do
|
||||
repo_dir="$(dirname "$gitdir")"
|
||||
url=$(git -C "$repo_dir" config --get remote.origin.url)
|
||||
if [ -n "$url" ]; then
|
||||
RESULTS+="$repo_dir: $url"$'\n'
|
||||
else
|
||||
RESULTS+="$repo_dir: No remote.origin.url found"$'\n'
|
||||
fi
|
||||
done < <(find "$BASE_DIR" $FIND_OPTS)
|
||||
|
||||
# Output results
|
||||
if [ -n "$OUTPUT_FILE" ]; then
|
||||
echo "$RESULTS" > "$OUTPUT_FILE"
|
||||
else
|
||||
echo "$RESULTS"
|
||||
fi
|
||||
|
||||
Loading…
Reference in New Issue
Block a user