Files
wehub-resource-sync e0e362d700
Deploy Docs Pages / build (push) Waiting to run
Deploy Docs Pages / deploy (push) Blocked by required conditions
Real E2E Tests / Real E2E CI (push) Blocked by required conditions
SDK Tests / SDK CI (push) Blocked by required conditions
SDK Tests / changes (push) Successful in 2m29s
Real E2E Tests / changes (push) Successful in 2m29s
Real E2E Tests / Python E2E (docker bridge) (push) Waiting to run
Real E2E Tests / C# E2E (docker bridge) (push) Waiting to run
Real E2E Tests / Go E2E (docker bridge) (push) Waiting to run
Real E2E Tests / Java E2E (docker bridge) (push) Waiting to run
Real E2E Tests / JavaScript E2E (docker bridge) (push) Waiting to run
SDK Tests / Python SDK Tests (sandbox) (push) Waiting to run
SDK Tests / CLI Quality (push) Waiting to run
SDK Tests / CLI Tests (push) Waiting to run
SDK Tests / Python SDK Quality (code-interpreter) (push) Waiting to run
SDK Tests / Python SDK Quality (sandbox) (push) Waiting to run
SDK Tests / Python SDK Tests (code-interpreter) (push) Waiting to run
SDK Tests / JavaScript SDK Quality And Tests (code-interpreter) (push) Waiting to run
SDK Tests / JavaScript SDK Quality And Tests (sandbox) (push) Waiting to run
SDK Tests / Kotlin SDK Quality And Tests (sandbox) (push) Waiting to run
SDK Tests / Kotlin SDK Quality And Tests (code-interpreter) (push) Waiting to run
SDK Tests / C# SDK Quality And Tests (code-interpreter) (push) Waiting to run
SDK Tests / C# SDK Quality And Tests (sandbox) (push) Waiting to run
SDK Tests / Go SDK Quality And Tests (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:39:33 +08:00

173 lines
4.4 KiB
Bash

#!/bin/bash
# Copyright 2025 Alibaba Group Holding Ltd.
#
# 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.
# This script is used to switch versions of different languages in the OpenSandbox environment
# Usage: source /opt/code-interpreter/code-interpreter-env.sh <language> <version>
# Examples:
# source /opt/code-interpreter/code-interpreter-env.sh python 3.13
# source /opt/code-interpreter/code-interpreter-env.sh java 21
# source /opt/code-interpreter/code-interpreter-env.sh node 22
# source /opt/code-interpreter/code-interpreter-env.sh go 1.25
function usage() {
echo "Usage: source code-interpreter-env.sh <language> <version>"
echo "Supported languages: python, java, node, go"
}
DEFAULT_PY_VERSION=${DEFAULT_PY_VERSION:-3.13}
DEFAULT_JAVA_VERSION=${DEFAULT_JAVA_VERSION:-21}
DEFAULT_NODE_VERSION=${DEFAULT_NODE_VERSION:-22}
DEFAULT_GO_VERSION=${DEFAULT_GO_VERSION:-1.25}
append_env_if_needed() {
local key=$1
local value=$2
if [ -z "${EXECD_ENVS:-}" ]; then
return
fi
# Best-effort: ensure parent dir exists, ignore errors.
mkdir -p "$(dirname "$EXECD_ENVS")" 2>/dev/null || true
printf '%s=%s\n' "$key" "$value" >>"$EXECD_ENVS" 2>/dev/null || true
}
function switch_python() {
local version=$1
if [ -z "$version" ]; then
echo "Available Python versions:"
find /opt/python/versions -maxdepth 1 -name "cpython-*" -type d -printf "%f\n" | cut -d'-' -f2 | sort -V
return
fi
# Find matching version directory
local target_dir=$(find /opt/python/versions -maxdepth 1 -type d -name "cpython-${version}*" | sort -V | tail -n 1)
if [ -d "$target_dir" ]; then
export PATH="$target_dir/bin:$PATH"
append_env_if_needed PATH "$PATH"
echo "Switched to Python $(python3 --version)"
else
echo "Python version $version not found."
fi
}
function switch_java() {
local version=$1
if [ -z "$version" ]; then
echo "Available Java versions:"
ls /usr/lib/jvm/ | grep -E '^java-[0-9]+-openjdk' | cut -d'-' -f2 | sort -V | uniq
return
fi
# Match openjdk path
local java_home=""
if [ -d "/usr/lib/jvm/java-${version}-openjdk-amd64" ]; then
java_home="/usr/lib/jvm/java-${version}-openjdk-amd64"
elif [ -d "/usr/lib/jvm/java-${version}-openjdk-arm64" ]; then # ARM compatibility
java_home="/usr/lib/jvm/java-${version}-openjdk-arm64"
fi
if [ -n "$java_home" ]; then
export JAVA_HOME="$java_home"
export PATH="$JAVA_HOME/bin:$PATH"
append_env_if_needed JAVA_HOME "$JAVA_HOME"
append_env_if_needed PATH "$PATH"
echo "Switched to Java $version ($JAVA_HOME)"
else
echo "Java version $version not found."
fi
}
function switch_node() {
local version=$1
if [ -z "$version" ]; then
echo "Available Node versions:"
ls /opt/node/
return
fi
# Find matching version (e.g. v18 -> v18.x.x)
local target_dir=$(find /opt/node -maxdepth 1 -type d -name "v${version}*" | sort -V | tail -n 1)
if [ -d "$target_dir" ]; then
export PATH="$target_dir/bin:$PATH"
append_env_if_needed PATH "$PATH"
echo "Switched to Node $(node --version)"
else
echo "Node version $version not found."
fi
}
function switch_go() {
local version=$1
if [ -z "$version" ]; then
echo "Available Go versions:"
ls /opt/go/
return
fi
# Find matching version
local target_dir=$(find /opt/go -maxdepth 1 -type d -name "${version}*" | sort -V | tail -n 1)
if [ -d "$target_dir" ]; then
export GOROOT="$target_dir"
export PATH="$GOROOT/bin:$PATH"
append_env_if_needed GOROOT "$GOROOT"
append_env_if_needed PATH "$PATH"
echo "Switched to Go $(go version)"
else
echo "Go version $version not found."
fi
}
# Main logic
LANG=$1
VER=$2
if [ -z "$LANG" ]; then
usage
return
fi
case $LANG in
python)
if [ -z "$VER" ]; then
VER=$DEFAULT_PY_VERSION
fi
switch_python $VER
;;
java)
if [ -z "$VER" ]; then
VER=$DEFAULT_JAVA_VERSION
fi
switch_java $VER
;;
node)
if [ -z "$VER" ]; then
VER=$DEFAULT_NODE_VERSION
fi
switch_node $VER
;;
go)
if [ -z "$VER" ]; then
VER=$DEFAULT_GO_VERSION
fi
switch_go $VER
;;
*)
echo "Unsupported language: $LANG"
usage
;;
esac