95 lines
2.2 KiB
Bash
Executable File
95 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
APK_PATH="${APK_PATH:-$PROJECT_ROOT/build/app/outputs/flutter-apk/app-release.apk}"
|
|
REMOTE_USER="${REMOTE_USER:-root}"
|
|
REMOTE_HOST="${REMOTE_HOST:-54.116.29.247}"
|
|
REMOTE_PORT="${REMOTE_PORT:-22}"
|
|
REMOTE_DIR="${REMOTE_DIR:-/data/wwwroot/apk}"
|
|
REMOTE_SCRIPT="${REMOTE_SCRIPT:-/data/wwwroot/apk/show_apk_link.sh}"
|
|
SHOULD_BUILD=true
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage: scripts/deploy-apk.sh [options]
|
|
|
|
Options:
|
|
--skip-build Upload the existing APK without running flutter build.
|
|
--apk PATH APK path to upload.
|
|
--host HOST Remote host. Default: 54.116.29.247
|
|
--user USER Remote user. Default: root
|
|
--port PORT SSH port. Default: 22
|
|
--remote-dir DIR Remote APK directory. Default: /data/wwwroot/apk
|
|
--remote-script PATH Remote link script. Default: /data/wwwroot/apk/show_apk_link.sh
|
|
-h, --help Show this help.
|
|
|
|
Environment variables with the same names are also supported:
|
|
APK_PATH, REMOTE_USER, REMOTE_HOST, REMOTE_PORT, REMOTE_DIR, REMOTE_SCRIPT
|
|
EOF
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--skip-build)
|
|
SHOULD_BUILD=false
|
|
shift
|
|
;;
|
|
--apk)
|
|
APK_PATH="$2"
|
|
shift 2
|
|
;;
|
|
--host)
|
|
REMOTE_HOST="$2"
|
|
shift 2
|
|
;;
|
|
--user)
|
|
REMOTE_USER="$2"
|
|
shift 2
|
|
;;
|
|
--port)
|
|
REMOTE_PORT="$2"
|
|
shift 2
|
|
;;
|
|
--remote-dir)
|
|
REMOTE_DIR="$2"
|
|
shift 2
|
|
;;
|
|
--remote-script)
|
|
REMOTE_SCRIPT="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ "$SHOULD_BUILD" == true ]]; then
|
|
(cd "$PROJECT_ROOT" && flutter build apk --release)
|
|
fi
|
|
|
|
if [[ ! -f "$APK_PATH" ]]; then
|
|
echo "APK not found: $APK_PATH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
APK_NAME="$(basename "$APK_PATH")"
|
|
REMOTE_TARGET="$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
|
|
|
echo "Uploading $APK_PATH to $REMOTE_TARGET"
|
|
scp -P "$REMOTE_PORT" "$APK_PATH" "$REMOTE_TARGET"
|
|
|
|
echo "Generating APK link on $REMOTE_HOST"
|
|
ssh -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" \
|
|
"bash '$REMOTE_SCRIPT' '$APK_NAME'"
|