Files
Sankofa/scripts/check-dependencies.sh

88 lines
2.6 KiB
Bash
Raw Normal View History

#!/bin/bash
# check-dependencies.sh
# Checks if all required dependencies are installed
set -euo pipefail
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
MISSING=0
OPTIONAL_MISSING=0
check_required() {
local cmd=$1
local name=$2
if command -v "$cmd" &> /dev/null; then
echo -e "${GREEN}${NC} $name"
return 0
else
echo -e "${RED}${NC} $name (REQUIRED)"
((MISSING++))
return 1
fi
}
check_optional() {
local cmd=$1
local name=$2
if command -v "$cmd" &> /dev/null; then
echo -e "${GREEN}${NC} $name (optional)"
return 0
else
echo -e "${YELLOW}${NC} $name (optional, not installed)"
((OPTIONAL_MISSING++))
return 1
fi
}
main() {
echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ Dependency Check ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
echo "Required Dependencies:"
echo "----------------------"
check_required "kubectl" "kubectl (Kubernetes CLI)"
check_required "curl" "curl"
check_required "jq" "jq (JSON processor)"
echo ""
echo "Optional Dependencies:"
echo "----------------------"
check_optional "go" "Go (for building provider)"
check_optional "make" "make (for building)"
check_optional "docker" "Docker (for container builds)"
check_optional "kind" "kind (for local Kubernetes)"
check_optional "terraform" "Terraform (for infrastructure)"
check_optional "yamllint" "yamllint (for YAML validation)"
check_optional "dig" "dig (for DNS testing)"
check_optional "nslookup" "nslookup (for DNS testing)"
echo ""
if [ $MISSING -eq 0 ]; then
echo -e "${GREEN}✓ All required dependencies are installed${NC}"
if [ $OPTIONAL_MISSING -gt 0 ]; then
echo -e "${YELLOW}⚠ Some optional dependencies are missing (not critical)${NC}"
fi
exit 0
else
echo -e "${RED}✗ Missing $MISSING required dependency/dependencies${NC}"
echo ""
echo "Install missing dependencies:"
echo " Ubuntu/Debian: sudo apt-get install -y kubectl curl jq"
echo " macOS: brew install kubectl curl jq"
exit 1
fi
}
main "$@"