84 lines
2.2 KiB
Bash
Executable File
84 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# cflash launcher with self-update via git + rebuild (requires sudo for update)
|
|
|
|
CFLASH_DIR="/usr/local/lib/cflash"
|
|
CFLASH_JAR="$CFLASH_DIR/cflash.jar"
|
|
GIT_REPO="https://gitea.cametendo.org/cametendo/cflash.git"
|
|
|
|
update_cflash() {
|
|
# Check for sudo/root
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "cflash --update requires root privileges. Please run with sudo."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Updating cflash from repository..."
|
|
|
|
TMP_DIR=$(mktemp -d)
|
|
echo "Cloning repository into $TMP_DIR..."
|
|
|
|
if ! git clone --depth 1 "$GIT_REPO" "$TMP_DIR"; then
|
|
echo "Failed to clone repository."
|
|
rm -rf "$TMP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
pushd "$TMP_DIR" >/dev/null
|
|
|
|
# Logic to handle if the repo contents are nested inside a 'cflash' folder
|
|
if [[ ! -f "./build.sh" && -d "cflash" ]]; then
|
|
echo "Detected nested directory, moving into cflash/..."
|
|
cd cflash
|
|
fi
|
|
|
|
# Ensure build.sh is executable (git usually preserves this, but just in case)
|
|
if [[ -f "./build.sh" ]]; then
|
|
chmod +x ./build.sh
|
|
echo "Building cflash..."
|
|
if ! ./build.sh; then
|
|
echo "Build failed."
|
|
popd >/dev/null
|
|
rm -rf "$TMP_DIR"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Error: build.sh not found in the repository root or cflash/ directory."
|
|
popd >/dev/null
|
|
rm -rf "$TMP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Installing new version..."
|
|
if [[ -f "./install.sh" ]]; then
|
|
chmod +x ./install.sh
|
|
if ! ./install.sh; then
|
|
echo "Install failed."
|
|
popd >/dev/null
|
|
rm -rf "$TMP_DIR"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Error: install.sh not found."
|
|
popd >/dev/null
|
|
rm -rf "$TMP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
popd >/dev/null
|
|
rm -rf "$TMP_DIR"
|
|
echo "Update completed successfully!"
|
|
exit 0
|
|
}
|
|
|
|
# Handle --update argument
|
|
if [[ "$1" == "--update" ]]; then
|
|
update_cflash
|
|
fi
|
|
|
|
# Run cflash normally
|
|
if [[ -f "$CFLASH_JAR" ]]; then
|
|
java --enable-native-access=ALL-UNNAMED -jar "$CFLASH_JAR" "$@"
|
|
else
|
|
echo "Error: $CFLASH_JAR not found. Please run 'sudo cflash --update' to install."
|
|
exit 1
|
|
fi |