Implemented v1
This commit is contained in:
commit
ea744ac6f1
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
apps
|
2
menu_items.txt
Normal file
2
menu_items.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Vaultwarden|https://git.giovanesaggio.com/Selfhosting/vaultwarden.git
|
||||
SMB Tools|https://git.giovanesaggio.com/Selfhosting/smb_utilities.git
|
64
selfhosting.sh
Executable file
64
selfhosting.sh
Executable file
@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
MENU_FILE="menu_items.txt"
|
||||
|
||||
# Check for git
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "Error: git is not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if file exists
|
||||
if [[ ! -f "$MENU_FILE" ]]; then
|
||||
echo "Menu file '$MENU_FILE' not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Temp file for dialog output
|
||||
tempfile=$(mktemp)
|
||||
|
||||
# Build dialog menu options
|
||||
options=()
|
||||
while IFS='|' read -r label url; do
|
||||
options+=("$label" "")
|
||||
done < "$MENU_FILE"
|
||||
|
||||
# Show the dialog
|
||||
dialog --clear --title "Select Repository to Clone" \
|
||||
--menu "Choose a repository:" 15 70 6 \
|
||||
"${options[@]}" 2>"$tempfile"
|
||||
|
||||
choice=$(<"$tempfile")
|
||||
rm -f "$tempfile"
|
||||
clear
|
||||
|
||||
# Find the corresponding URL and clone
|
||||
if [[ -n "$choice" ]]; then
|
||||
url=$(awk -F'|' -v label="$choice" '$1 == label {print $2}' "$MENU_FILE")
|
||||
if [[ -n "$url" ]]; then
|
||||
echo "Cloning repository: $url"
|
||||
|
||||
# Make sure apps folder exists
|
||||
mkdir -p apps
|
||||
cd apps || exit 1
|
||||
|
||||
# Extract repo name (without .git suffix)
|
||||
repo_name=$(basename "$url" .git)
|
||||
|
||||
# Clone the repo
|
||||
git clone "$url"
|
||||
|
||||
# Enter the repo folder
|
||||
if [[ -d "$repo_name" ]]; then
|
||||
cd "$repo_name" || echo "Failed to enter folder $repo_name"
|
||||
echo "You are now in $(pwd)"
|
||||
$SHELL # start a new shell session here if running interactively
|
||||
else
|
||||
echo "Cloning failed or directory not found: $repo_name"
|
||||
fi
|
||||
else
|
||||
echo "No URL found for: $choice"
|
||||
fi
|
||||
else
|
||||
echo "No selection made."
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user