mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 10:39:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| #  Copyright 2021 Collate
 | |
| #  Licensed under the Apache License, Version 2.0 (the "License");
 | |
| #  you may not use this file except in compliance with the License.
 | |
| #  You may obtain a copy of the License at
 | |
| #  http://www.apache.org/licenses/LICENSE-2.0
 | |
| #  Unless required by applicable law or agreed to in writing, software
 | |
| #  distributed under the License is distributed on an "AS IS" BASIS,
 | |
| #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| #  See the License for the specific language governing permissions and
 | |
| #  limitations under the License.
 | |
| 
 | |
| set -eu
 | |
| 
 | |
| set +e
 | |
| declare -A test_map
 | |
| res=$?
 | |
| if [[ $res -ne 0 ]]; then
 | |
|   echo "✗ ERROR: declare -A is not supported. Do you have bash version 4.0 or higher installed?"
 | |
|   exit 2
 | |
| fi
 | |
| set -e
 | |
| 
 | |
| 
 | |
| declare -A python
 | |
| python["name"]="Python"
 | |
| python["version_command"]="python --version 2>&1 | awk '{print \$2}'"
 | |
| python["required_version"]="3.9 3.10 3.11"
 | |
| 
 | |
| declare -A docker
 | |
| docker["name"]="Docker"
 | |
| docker["version_command"]="docker --version | awk '{print \$3}' | sed 's/,//'"
 | |
| docker["required_version"]="20 21 22 23 24 25 26 27 28 29"
 | |
| 
 | |
| declare -A maven
 | |
| maven["name"]="Maven"
 | |
| maven["version_command"]="mvn --version | head -n1 | awk '{print \$3}'"
 | |
| maven["required_version"]="3.6 3.7 3.8 3.9"
 | |
| 
 | |
| declare -A java
 | |
| java["name"]="Java"
 | |
| java["version_command"]="java -version 2>&1 | awk -F'\"' '/version/ {print \$2}'"
 | |
| java["required_version"]="11 16 17"
 | |
| 
 | |
| declare -A jq
 | |
| jq["name"]="jq"
 | |
| jq["version_command"]="jq --version | awk -F- '{print \$2}'"
 | |
| jq["required_version"]="any"
 | |
| 
 | |
| declare -A node
 | |
| node["name"]="Node"
 | |
| node["version_command"]="node --version"
 | |
| node["required_version"]="18"
 | |
| 
 | |
| declare -A yarn
 | |
| yarn["name"]="Yarn"
 | |
| yarn["version_command"]="yarn --version"
 | |
| yarn["required_version"]="1.22 1.23 1.24"
 | |
| 
 | |
| declare -A antlr
 | |
| antlr["name"]="ANTLR"
 | |
| antlr["version_command"]="antlr4 | head -n1 | awk 'NF>1{print \$NF}'"
 | |
| antlr["required_version"]="4.9"
 | |
| 
 | |
| 
 | |
| code=0
 | |
| 
 | |
| function print_error() {
 | |
|     >&2 echo "✗ ERROR: $1"
 | |
| }
 | |
| 
 | |
| check_command_existence() {
 | |
|     which "$1" >/dev/null 2>&1
 | |
|     res=$?
 | |
|     if [[ $res -ne 0 ]]; then
 | |
|       print_error "$command is not installed."
 | |
|       code=2
 | |
|     fi
 | |
|     echo $res
 | |
| }
 | |
| 
 | |
| check_version() {
 | |
|     local tool_name=$1
 | |
|     local current=$2
 | |
|     local required=$3
 | |
|     IFS=' ' read -r -a required_versions <<< "$required"
 | |
|     if [[ "$required" == "any" ]]; then
 | |
|         echo "✓ $tool_name version $current is supported."
 | |
|         return
 | |
|     fi
 | |
|     for v in "${required_versions[@]}"; do
 | |
|         if [[ "$current" =~ $v.* ]]; then
 | |
|             echo "✓ $tool_name version $version is supported."
 | |
|             return
 | |
|         fi
 | |
|     done
 | |
|     print_error "$tool_name version $version is not supported. Supported versions are: $required"
 | |
|     code=1
 | |
| }
 | |
| 
 | |
| declare -n dependency
 | |
| for dependency in python docker java maven jq node yarn antlr; do
 | |
|     command=$(echo "${dependency["version_command"]}" | awk '{print $1}')
 | |
|     if [[ $(check_command_existence "$command") -ne 0 ]]; then
 | |
|         continue
 | |
|     fi
 | |
|     tool_name=${dependency["name"]}
 | |
|     version=$(eval ${dependency["version_command"]})
 | |
|     required_version=${dependency["required_version"]}
 | |
|     check_version $tool_name "$version" "$required_version"
 | |
| done
 | |
| if [[ $code -eq 0 ]]; then
 | |
|     echo "✓ All prerequisites are met."
 | |
| else
 | |
|     print_error "Some prerequisites are not met."
 | |
| fi
 | |
| exit $code
 | 
