-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathinstall.sh
More file actions
181 lines (146 loc) · 4.9 KB
/
Copy pathinstall.sh
File metadata and controls
181 lines (146 loc) · 4.9 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/bin/sh
# wpilog-mcp installer for macOS/Linux
# Usage: curl -fsSL https://raw.githubusercontent.com/TripleHelixProgramming/wpilog-mcp/main/install.sh | sh
set -e
REPO="TripleHelixProgramming/wpilog-mcp"
INSTALL_DIR="$HOME/.wpilog-mcp"
echo ""
echo "========================================"
echo " wpilog-mcp Installer"
echo "========================================"
echo ""
# --- Find Java ---
find_java() {
# 1. WPILib JDK (scan for latest year)
if [ -d "$HOME/wpilib" ]; then
for year in $(ls -1rd "$HOME/wpilib"/[0-9][0-9][0-9][0-9] 2>/dev/null); do
if [ -x "$year/jdk/bin/java" ]; then
echo "Found WPILib $(basename "$year") JDK: $year/jdk/bin/java" >&2
echo "$year/jdk/bin/java"
return 0
fi
done
fi
# 2. JAVA_HOME
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
echo "Found JAVA_HOME: $JAVA_HOME/bin/java" >&2
echo "$JAVA_HOME/bin/java"
return 0
fi
# 3. System PATH
if command -v java >/dev/null 2>&1; then
echo "Found java on PATH: $(command -v java)" >&2
command -v java
return 0
fi
echo "ERROR: Java 17+ is required but not found." >&2
echo "Install the WPILib toolkit: https://docs.wpilib.org/en/stable/docs/zero-to-robot/step-2/wpilib-setup.html" >&2
exit 1
}
JAVA_EXEC=$(find_java)
# Verify Java version
JAVA_VERSION=$("$JAVA_EXEC" -version 2>&1 | head -1)
echo "Java version: $JAVA_VERSION"
echo ""
# --- Download latest release ---
echo "Fetching latest release from GitHub..."
RELEASE_JSON=$(curl -fsSL "https://api.github.com/repos/$REPO/releases/latest" -H "User-Agent: wpilog-mcp-installer")
VERSION=$(echo "$RELEASE_JSON" | grep '"tag_name"' | sed 's/.*"v\([^"]*\)".*/\1/')
JAR_URL=$(echo "$RELEASE_JSON" | grep '"browser_download_url".*-all\.jar"' | sed 's/.*"\(https[^"]*\)".*/\1/')
if [ -z "$JAR_URL" ]; then
echo "ERROR: No JAR asset found in latest release" >&2
exit 1
fi
echo "Latest version: $VERSION"
echo ""
# --- Create directory structure ---
JARS_DIR="$INSTALL_DIR/jars"
BIN_DIR="$INSTALL_DIR/bin"
mkdir -p "$JARS_DIR" "$BIN_DIR"
# --- Download JAR ---
JAR_NAME="wpilog-mcp-${VERSION}.jar"
JAR_PATH="$JARS_DIR/$JAR_NAME"
if [ -f "$JAR_PATH" ]; then
echo "JAR already exists: $JAR_PATH"
else
echo "Downloading $JAR_NAME..."
curl -fsSL -o "$JAR_PATH" "$JAR_URL"
echo "Downloaded: $JAR_PATH"
fi
# --- Create launcher script ---
SCRIPT_PATH="$BIN_DIR/wpilog-mcp"
cat > "$SCRIPT_PATH" << 'LAUNCHER'
#!/bin/sh
# wpilog-mcp launcher
# Auto-generated by install.sh
MAX_HEAP="${WPILOG_MAX_HEAP:-4g}"
# Prefer WPILib JDK (scan for latest year), then JAVA_HOME, then system java
JAVA_EXEC="java"
if [ -d "$HOME/wpilib" ]; then
for year in $(ls -1rd "$HOME/wpilib"/[0-9][0-9][0-9][0-9] 2>/dev/null); do
if [ -x "$year/jdk/bin/java" ]; then
JAVA_EXEC="$year/jdk/bin/java"
break
fi
done
fi
if [ "$JAVA_EXEC" = "java" ] && [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
JAVA_EXEC="$JAVA_HOME/bin/java"
fi
LAUNCHER
# Append the jar path (not inside heredoc so variable expands)
echo "exec \"\$JAVA_EXEC\" -Xmx\"\$MAX_HEAP\" -jar \"$JAR_PATH\" \"\$@\"" >> "$SCRIPT_PATH"
chmod +x "$SCRIPT_PATH"
echo "Created launcher: $SCRIPT_PATH"
# --- Create default config ---
CONFIG_PATH="$INSTALL_DIR/servers.yaml"
if [ ! -f "$CONFIG_PATH" ]; then
cat > "$CONFIG_PATH" << 'CONFIG'
# wpilog-mcp server configuration
# Documentation: https://github.com/TripleHelixProgramming/wpilog-mcp#configuration
# Your FRC team number (used for TBA match lookups)
team: 0
# Directory containing .wpilog files downloaded from the roboRIO
logdir: ~/riologs
# The Blue Alliance API key (get one at https://www.thebluealliance.com/account)
# tba_key: your-key-here
servers:
# Default: stdio transport for MCP clients (Claude Desktop, etc.)
default:
transport: stdio
# HTTP transport for browser-based or multi-client access
http:
transport: http
port: 2363
# Stress testing configuration
stresstest:
tba_key: ${TBA_API_KEY}
CONFIG
echo "Created default config: $CONFIG_PATH"
echo " Edit this file to set your team number and log directory."
else
echo "Config already exists: $CONFIG_PATH (not overwritten)"
fi
# --- PATH instructions ---
echo ""
echo "========================================"
echo " Installation complete!"
echo "========================================"
echo ""
case ":$PATH:" in
*":$BIN_DIR:"*)
echo "bin directory is already on your PATH."
;;
*)
echo "Add to your shell profile (~/.zshrc or ~/.bashrc):"
echo ""
echo " export PATH=\"\$HOME/.wpilog-mcp/bin:\$PATH\""
echo ""
echo "Then restart your terminal."
;;
esac
echo ""
echo "Usage:"
echo " wpilog-mcp Start MCP server (stdio)"
echo " wpilog-mcp start http Start HTTP daemon"
echo ""