-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·87 lines (76 loc) · 2.95 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·87 lines (76 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env bash
# =============================================================================
# ShareWave — multi-module build script
#
# Produces:
# sharewave-server/target/sharewave-server.jar (headless server)
# sharewave-gui/target/sharewave-gui.jar (JavaFX admin GUI)
#
# Usage:
# ./build.sh build both modules
# ./build.sh server build server only
# ./build.sh gui build GUI only
#
# To install after building, see ./install.sh
# =============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
info() { echo -e "\033[1;34m[INFO]\033[0m $*"; }
ok() { echo -e "\033[1;32m[ OK ]\033[0m $*"; }
warn() { echo -e "\033[1;33m[WARN]\033[0m $*"; }
err() { echo -e "\033[1;31m[ERR ]\033[0m $*"; exit 1; }
hr() { echo "─────────────────────────────────────────────────────"; }
hr
info "ShareWave Build"
hr
command -v java >/dev/null || err "java not found"
command -v mvn >/dev/null || err "mvn not found"
info "Java : $(java -version 2>&1 | head -1)"
info "Maven: $(mvn --version | head -1)"
hr
# The VERSION file at the project root is the single source of truth —
# both modules read it directly at runtime (see AppVersion.java in each).
# Nothing needs to be copied or bundled into the JARs at build time.
CURRENT_VERSION="dev"
if [ -f "$SCRIPT_DIR/VERSION" ]; then
CURRENT_VERSION="$(tr -d '[:space:]' < "$SCRIPT_DIR/VERSION")"
fi
if [ -t 0 ]; then
# Interactive terminal — ask for a version, defaulting to the current one.
read -r -p "Version number [$CURRENT_VERSION]: " NEW_VERSION
NEW_VERSION="$(echo "${NEW_VERSION:-$CURRENT_VERSION}" | tr -d '[:space:]')"
if [ -z "$NEW_VERSION" ]; then
warn "Empty version entered — keeping $CURRENT_VERSION"
NEW_VERSION="$CURRENT_VERSION"
fi
echo "$NEW_VERSION" > "$SCRIPT_DIR/VERSION"
info "Version: $NEW_VERSION (written to VERSION)"
else
# Non-interactive (CI, piped input, etc.) — don't block on a prompt.
info "Version: $CURRENT_VERSION (from VERSION file; non-interactive, skipping prompt)"
fi
hr
TARGET="${1:-all}"
build_server() {
info "Building sharewave-server..."
mvn -q package -DskipTests -pl sharewave-server -am
ok "sharewave-server.jar → sharewave-server/target/sharewave-server.jar"
}
build_gui() {
info "Building sharewave-gui..."
mvn -q package -DskipTests -pl sharewave-gui -am
ok "sharewave-gui.jar → sharewave-gui/target/sharewave-gui.jar"
}
case "$TARGET" in
server) build_server ;;
gui) build_gui ;;
*) build_server; build_gui ;;
esac
hr
ok "Build complete."
ls -lh sharewave-server/target/sharewave-server.jar 2>/dev/null || true
ls -lh sharewave-gui/target/sharewave-gui.jar 2>/dev/null || true
echo ""
echo "To install: sudo ./install.sh"
hr