diff --git a/dev.sh b/dev.sh index fe11a0c1..d8e86f51 100755 --- a/dev.sh +++ b/dev.sh @@ -1,5 +1,63 @@ #!/bin/bash +#!/bin/bash + +MINIMUM_NODE_VERSION=22.0.0 +MINIMUM_YARN_VERSION=1.22.22 +MINIMUM_DOCKER_VERSION=24.0.0 + +# Function to compare versions correctly +version_at_least() { + printf '%s\n%s\n' "$1" "$2" | sort -V | head -n 1 | grep -qx "$1" +} + +check_versions() { + local node_version yarn_version docker_version + local errors=() + + # Check Node.js version + if ! command -v node &> /dev/null; then + errors+=("Node.js is not installed. Please install Node.js v$MINIMUM_NODE_VERSION or higher.") + else + node_version=$(node -v | sed 's/^v//') + if ! version_at_least "$MINIMUM_NODE_VERSION" "$node_version"; then + errors+=("Current Node.js version ($node_version) is incompatible. Please install v$MINIMUM_NODE_VERSION or higher.") + fi + fi + + # Check Yarn version + if ! command -v yarn &> /dev/null; then + errors+=("Yarn is not installed. Please install Yarn v$MINIMUM_YARN_VERSION or higher.") + else + yarn_version=$(yarn -v) + if ! version_at_least "$MINIMUM_YARN_VERSION" "$yarn_version"; then + errors+=("Current Yarn version ($yarn_version) is incompatible. Please install v$MINIMUM_YARN_VERSION or higher.") + fi + fi + + # Check Docker version + if ! command -v docker &> /dev/null; then + errors+=("Docker is not installed. Please install Docker v$MINIMUM_DOCKER_VERSION or higher.") + else + docker_version=$(docker --version | awk '{print $3}' | sed 's/,//') + if ! version_at_least "$MINIMUM_DOCKER_VERSION" "$docker_version"; then + errors+=("Current Docker version ($docker_version) is incompatible. Please install v$MINIMUM_DOCKER_VERSION or higher.") + fi + fi + + # Display errors, if any + if [ ${#errors[@]} -ne 0 ]; then + for error in "${errors[@]}"; do + echo "$error" + done + exit 1 + fi + +} + +check_versions + + [ ! -f .env ] && cp env.example .env check_internet_connection() { diff --git a/web-server/src/assets/dora-icon.svg b/web-server/src/assets/dora-icon.svg index 611e37dd..6bf6baba 100644 --- a/web-server/src/assets/dora-icon.svg +++ b/web-server/src/assets/dora-icon.svg @@ -1 +1 @@ - \ No newline at end of file +