diff options
Diffstat (limited to 'llama.cpp/tools/server/webui/scripts')
| -rw-r--r-- | llama.cpp/tools/server/webui/scripts/dev.sh | 57 | ||||
| -rwxr-xr-x | llama.cpp/tools/server/webui/scripts/install-git-hooks.sh | 202 | ||||
| -rwxr-xr-x | llama.cpp/tools/server/webui/scripts/post-build.sh | 3 |
3 files changed, 262 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/scripts/dev.sh b/llama.cpp/tools/server/webui/scripts/dev.sh new file mode 100644 index 0000000..b7539c2 --- /dev/null +++ b/llama.cpp/tools/server/webui/scripts/dev.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Development script for llama.cpp webui +# +# This script starts the webui development servers (Storybook and Vite). +# Note: You need to start llama-server separately. +# +# Usage: +# bash scripts/dev.sh +# npm run dev + +cd ../../../ + +# Check and install git hooks if missing +check_and_install_hooks() { + local hooks_missing=false + + # Check for required hooks + if [ ! -f ".git/hooks/pre-commit" ] || [ ! -f ".git/hooks/pre-push" ] || [ ! -f ".git/hooks/post-push" ]; then + hooks_missing=true + fi + + if [ "$hooks_missing" = true ]; then + echo "๐ง Git hooks missing, installing them..." + cd tools/server/webui + if bash scripts/install-git-hooks.sh; then + echo "โ
Git hooks installed successfully" + else + echo "โ ๏ธ Failed to install git hooks, continuing anyway..." + fi + cd ../../../ + else + echo "โ
Git hooks already installed" + fi +} + +# Install git hooks if needed +check_and_install_hooks + +# Cleanup function +cleanup() { + echo "๐งน Cleaning up..." + exit +} + +# Set up signal handlers +trap cleanup SIGINT SIGTERM + +echo "๐ Starting development servers..." +echo "๐ Note: Make sure to start llama-server separately if needed" +cd tools/server/webui +# Use --insecure-http-parser to handle malformed HTTP responses from llama-server +# (some responses have both Content-Length and Transfer-Encoding headers) +storybook dev -p 6006 --ci & NODE_OPTIONS="--insecure-http-parser" vite dev --host 0.0.0.0 & + +# Wait for all background processes +wait diff --git a/llama.cpp/tools/server/webui/scripts/install-git-hooks.sh b/llama.cpp/tools/server/webui/scripts/install-git-hooks.sh new file mode 100755 index 0000000..d14e281 --- /dev/null +++ b/llama.cpp/tools/server/webui/scripts/install-git-hooks.sh @@ -0,0 +1,202 @@ +#!/bin/bash + +# Script to install pre-commit and pre-push hooks for webui +# Pre-commit: formats code and runs checks +# Pre-push: builds the project, stashes unstaged changes + +REPO_ROOT=$(git rev-parse --show-toplevel) +PRE_COMMIT_HOOK="$REPO_ROOT/.git/hooks/pre-commit" +PRE_PUSH_HOOK="$REPO_ROOT/.git/hooks/pre-push" + +echo "Installing pre-commit and pre-push hooks for webui..." + +# Create the pre-commit hook +cat > "$PRE_COMMIT_HOOK" << 'EOF' +#!/bin/bash + +# Check if there are any changes in the webui directory +if git diff --cached --name-only | grep -q "^tools/server/webui/"; then + echo "Formatting and checking webui code..." + + # Change to webui directory and run format + cd tools/server/webui + + # Check if npm is available and package.json exists + if [ ! -f "package.json" ]; then + echo "Error: package.json not found in tools/server/webui" + exit 1 + fi + + # Run the format command + npm run format + + # Check if format command succeeded + if [ $? -ne 0 ]; then + echo "Error: npm run format failed" + exit 1 + fi + + # Run the lint command + npm run lint + + # Check if lint command succeeded + if [ $? -ne 0 ]; then + echo "Error: npm run lint failed" + exit 1 + fi + + # Run the check command + npm run check + + # Check if check command succeeded + if [ $? -ne 0 ]; then + echo "Error: npm run check failed" + exit 1 + fi + + # Go back to repo root + cd ../../.. + + echo "โ
Webui code formatted and checked successfully" +fi + +exit 0 +EOF + +# Create the pre-push hook +cat > "$PRE_PUSH_HOOK" << 'EOF' +#!/bin/bash + +# Check if there are any webui changes that need building +WEBUI_CHANGES=$(git diff --name-only @{push}..HEAD | grep "^tools/server/webui/" || true) + +if [ -n "$WEBUI_CHANGES" ]; then + echo "Webui changes detected, checking if build is up-to-date..." + + # Change to webui directory + cd tools/server/webui + + # Check if npm is available and package.json exists + if [ ! -f "package.json" ]; then + echo "Error: package.json not found in tools/server/webui" + exit 1 + fi + + # Check if build output exists and is newer than source files + BUILD_FILE="../public/index.html.gz" + NEEDS_BUILD=false + + if [ ! -f "$BUILD_FILE" ]; then + echo "Build output not found, building..." + NEEDS_BUILD=true + else + # Check if any source files are newer than the build output + if find src -newer "$BUILD_FILE" -type f | head -1 | grep -q .; then + echo "Source files are newer than build output, rebuilding..." + NEEDS_BUILD=true + fi + fi + + if [ "$NEEDS_BUILD" = true ]; then + echo "Building webui..." + + # Stash any unstaged changes to avoid conflicts during build + echo "Checking for unstaged changes..." + if ! git diff --quiet || ! git diff --cached --quiet --diff-filter=A; then + echo "Stashing unstaged changes..." + git stash push --include-untracked -m "Pre-push hook: stashed unstaged changes" + STASH_CREATED=$? + else + echo "No unstaged changes to stash" + STASH_CREATED=1 + fi + + # Run the build command + npm run build + + # Check if build command succeeded + if [ $? -ne 0 ]; then + echo "Error: npm run build failed" + if [ $STASH_CREATED -eq 0 ]; then + echo "You can restore your unstaged changes with: git stash pop" + fi + exit 1 + fi + + # Go back to repo root + cd ../../.. + + # Check if build output was created/updated + if [ -f "tools/server/public/index.html.gz" ]; then + # Add the build output and commit it + git add tools/server/public/index.html.gz + if ! git diff --cached --quiet; then + echo "Committing updated build output..." + git commit -m "chore: update webui build output" + echo "โ
Build output committed successfully" + else + echo "Build output unchanged" + fi + else + echo "Error: Build output not found after build" + if [ $STASH_CREATED -eq 0 ]; then + echo "You can restore your unstaged changes with: git stash pop" + fi + exit 1 + fi + + if [ $STASH_CREATED -eq 0 ]; then + echo "โ
Build completed. Your unstaged changes have been stashed." + echo "They will be automatically restored after the push." + # Create a marker file to indicate stash was created by pre-push hook + touch .git/WEBUI_PUSH_STASH_MARKER + fi + else + echo "โ
Build output is up-to-date" + fi + + echo "โ
Webui ready for push" +fi + +exit 0 +EOF + +# Create the post-push hook (for restoring stashed changes after push) +cat > "$REPO_ROOT/.git/hooks/post-push" << 'EOF' +#!/bin/bash + +# Check if we have a stash marker from the pre-push hook +if [ -f .git/WEBUI_PUSH_STASH_MARKER ]; then + echo "Restoring your unstaged changes after push..." + git stash pop + rm -f .git/WEBUI_PUSH_STASH_MARKER + echo "โ
Your unstaged changes have been restored." +fi + +exit 0 +EOF + +# Make all hooks executable +chmod +x "$PRE_COMMIT_HOOK" +chmod +x "$PRE_PUSH_HOOK" +chmod +x "$REPO_ROOT/.git/hooks/post-push" + +if [ $? -eq 0 ]; then + echo "โ
Git hooks installed successfully!" + echo " Pre-commit: $PRE_COMMIT_HOOK" + echo " Pre-push: $PRE_PUSH_HOOK" + echo " Post-push: $REPO_ROOT/.git/hooks/post-push" + echo "" + echo "The hooks will automatically:" + echo " โข Format and check webui code before commits (pre-commit)" + echo " โข Build webui code before pushes (pre-push)" + echo " โข Stash unstaged changes during build process" + echo " โข Restore your unstaged changes after the push" + echo "" + echo "To test the hooks:" + echo " โข Make a change to a file in the webui directory and commit it (triggers format/check)" + echo " โข Push your commits to trigger the build process" +else + echo "โ Failed to make hooks executable" + exit 1 +fi diff --git a/llama.cpp/tools/server/webui/scripts/post-build.sh b/llama.cpp/tools/server/webui/scripts/post-build.sh new file mode 100755 index 0000000..a49d6cc --- /dev/null +++ b/llama.cpp/tools/server/webui/scripts/post-build.sh @@ -0,0 +1,3 @@ +rm -rf ../public/_app; +rm ../public/favicon.svg; +rm ../public/index.html; |
