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