Targetprocess MCP Server
by aaronsb
Verified
- scripts
#!/bin/bash
set -e
# Force immediate output
exec 1>&1
# This script provides a lightweight local development build pipeline
# that mirrors our CI approach but optimized for speed and local iteration.
# It performs all build steps from linting through Docker image creation,
# providing minimal but clear status output.
# Parse command line arguments
VERBOSE=false
while [[ "$#" -gt 0 ]]; do
case $1 in
--verbose) VERBOSE=true ;;
*) echo "Unknown parameter: $1"; exit 1 ;;
esac
shift
done
# Create temp directory for logs if it doesn't exist
TEMP_DIR="/tmp/apptio-target-process-mcp"
mkdir -p "$TEMP_DIR"
# Setup colored output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
CHECK_MARK="✓"
X_MARK="✗"
WARNING_MARK="⚠"
# Function to check log file size and show warning if needed
check_log_size() {
local log_file=$1
if [ -f "$log_file" ]; then
local line_count=$(wc -l < "$log_file")
if [ $line_count -gt 100 ]; then
echo -e "${YELLOW}${WARNING_MARK} Large log file detected ($line_count lines)${NC}"
echo " Tips for viewing large logs:"
echo " • head -n 20 $log_file (view first 20 lines)"
echo " • tail -n 20 $log_file (view last 20 lines)"
echo " • less $log_file (scroll through file)"
echo " • grep 'error' $log_file (search for specific terms)"
echo " • use pageless mode with tools when viewing files"
fi
fi
}
# Function to run a step and show its status
run_step() {
local step_name=$1
local log_file="$TEMP_DIR/$2.log"
local command=$3
echo -n "→ $step_name... "
if [ "$VERBOSE" = true ]; then
if eval "$command"; then
echo -e "${GREEN}${CHECK_MARK} Success${NC}"
return 0
else
echo -e "${RED}${X_MARK} Failed${NC}"
return 1
fi
else
if eval "$command > '$log_file' 2>&1"; then
echo -e "${GREEN}${CHECK_MARK} Success${NC} (log: $log_file)"
check_log_size "$log_file"
return 0
else
echo -e "${RED}${X_MARK} Failed${NC} (see details in $log_file)"
check_log_size "$log_file"
return 1
fi
fi
}
# Install dependencies
run_step "Installing dependencies" "npm-install" "npm install" || exit 1
# Run linting
run_step "Linting" "lint" "npm run lint" || exit 1
# Run tests (allowing failure for now since they're placeholder)
run_step "Testing" "test" "npm run test || true"
# Build TypeScript
run_step "Building TypeScript" "build" "npm run build" || exit 1
# Build Docker image
echo "→ Building Docker image..."
if [ "$VERBOSE" = true ]; then
if docker build -t apptio-target-process-mcp:local .; then
echo -e "${GREEN}${CHECK_MARK} Docker build successful${NC}"
else
echo -e "${RED}${X_MARK} Docker build failed${NC}"
exit 1
fi
else
DOCKER_LOG="$TEMP_DIR/docker-build.log"
if docker build -t apptio-target-process-mcp:local . > "$DOCKER_LOG" 2>&1; then
echo -e "${GREEN}${CHECK_MARK} Docker build successful${NC} (log: $DOCKER_LOG)"
check_log_size "$DOCKER_LOG"
else
echo -e "${RED}${X_MARK} Docker build failed${NC} (see details in $DOCKER_LOG)"
check_log_size "$DOCKER_LOG"
exit 1
fi
fi
echo -e "\n${GREEN}Build complete!${NC} Image tagged as apptio-target-process-mcp:local"