moved to gitea
This commit is contained in:
89
source_code/shmake_download_library.sh
Normal file
89
source_code/shmake_download_library.sh
Normal file
@@ -0,0 +1,89 @@
|
||||
#!/bin/sh
|
||||
|
||||
# shmake_library.sh - External library addition for shmake
|
||||
# Author: Emilia Marigold - 2026
|
||||
|
||||
download_library()
|
||||
{
|
||||
check_project_root
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
printf "Usage: %s library [url]\n" "$SCRIPT_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LIBRARY_URL="$1"
|
||||
LIBRARY_DIR="external_code/shared_libraries/source_code"
|
||||
|
||||
printf "Adding library from '%s' to %s...\n" "$LIBRARY_URL" "$LIBRARY_DIR"
|
||||
|
||||
LIBRARY_NAME=$(printf "%s" "$LIBRARY_URL" | sed 's|.*/||' | sed 's|.git$||')
|
||||
|
||||
if [ -d "$LIBRARY_DIR/$LIBRARY_NAME" ]; then
|
||||
printf "Warning: '%s' already exists in %s\n" "$LIBRARY_NAME" "$LIBRARY_DIR"
|
||||
printf "Overwrite? [y/N]: "
|
||||
read -r overwrite
|
||||
|
||||
case "$overwrite" in
|
||||
y|Y)
|
||||
rm -rf "$LIBRARY_DIR/$LIBRARY_NAME"
|
||||
;;
|
||||
*)
|
||||
printf "Aborted.\n" && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$LIBRARY_URL" in
|
||||
*.git)
|
||||
printf "Detected Git repository. Using git clone (shallow)...\n"
|
||||
if command -v git >/dev/null 2>&1; then
|
||||
mkdir -p "$LIBRARY_DIR"
|
||||
git clone "$LIBRARY_URL" "$LIBRARY_DIR/$LIBRARY_NAME"
|
||||
if [ $? -eq 0 ]; then
|
||||
printf "Library '%s' cloned successfully!\n" "$LIBRARY_NAME"
|
||||
printf "%s\n" "$LIBRARY_URL" >> "shmake_config/project_external_libraries.config"
|
||||
else
|
||||
printf "Error: Git clone failed.\n"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
printf "Error: 'git' not found. Please install git.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
printf "Detected file download. Trying wget/curl...\n"
|
||||
if command -v wget >/dev/null 2>&1; then
|
||||
printf "Using wget...\n"
|
||||
mkdir -p "$LIBRARY_DIR"
|
||||
wget "$LIBRARY_URL" -O "$LIBRARY_DIR/${LIBRARY_NAME}.tar.gz" 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
tar -xzf "$LIBRARY_DIR/${LIBRARY_NAME}.tar.gz" -C "$LIBRARY_DIR" 2>/dev/null
|
||||
rm "$LIBRARY_DIR/${LIBRARY_NAME}.tar.gz"
|
||||
printf "Library '%s' downloaded successfully!\n" "$LIBRARY_NAME"
|
||||
printf "%s\n" "$LIBRARY_URL" >> "shmake_config/project_external_libraries.config"
|
||||
else
|
||||
printf "Error: wget download failed.\n"
|
||||
exit 1
|
||||
fi
|
||||
elif command -v curl >/dev/null 2>&1; then
|
||||
printf "Using curl...\n"
|
||||
mkdir -p "$LIBRARY_DIR"
|
||||
curl -L "$LIBRARY_URL" -o "$LIBRARY_DIR/${LIBRARY_NAME}.tar.gz" 2>/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
tar -xzf "$LIBRARY_DIR/${LIBRARY_NAME}.tar.gz" -C "$LIBRARY_DIR" 2>/dev/null
|
||||
rm "$LIBRARY_DIR/${LIBRARY_NAME}.tar.gz"
|
||||
printf "Library '%s' downloaded successfully!\n" "$LIBRARY_NAME"
|
||||
printf "%s\n" "$LIBRARY_URL" >> "shmake_config/project_external_libraries.config"
|
||||
else
|
||||
printf "Error: curl download failed.\n"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
printf "Error: Neither 'wget' nor 'curl' found. Please install one.\n"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
Reference in New Issue
Block a user