83 lines
2.1 KiB
Bash
83 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# Piston entrypoint - installs languages on first run
|
|
|
|
LANGUAGES_INSTALLED_FLAG="/piston/packages/.languages_installed"
|
|
PPMAN="/piston_api/cli/index.js ppman"
|
|
|
|
install_lang() {
|
|
local pkg=$1
|
|
echo "Installing $pkg..."
|
|
$PPMAN install "$pkg" || echo "Warning: Failed to install $pkg"
|
|
}
|
|
|
|
install_languages() {
|
|
echo "=== Installing Competitive Programming Languages ==="
|
|
echo "This may take a while on first run..."
|
|
echo ""
|
|
|
|
# Core languages (most used in competitive programming)
|
|
echo ">>> Core Languages"
|
|
install_lang "python=3.12.0"
|
|
install_lang "gcc=10.2.0" # C/C++
|
|
install_lang "java=15.0.2"
|
|
install_lang "node=20.11.1" # JavaScript
|
|
|
|
# Systems programming
|
|
echo ">>> Systems Programming"
|
|
install_lang "go=1.16.2"
|
|
install_lang "rust=1.68.2"
|
|
|
|
# JVM languages
|
|
echo ">>> JVM Languages"
|
|
install_lang "kotlin=1.8.20"
|
|
install_lang "scala=3.2.2"
|
|
|
|
# .NET
|
|
echo ">>> .NET"
|
|
install_lang "dotnet=5.0.201" # C#
|
|
|
|
# Scripting
|
|
echo ">>> Scripting Languages"
|
|
install_lang "ruby=3.0.1"
|
|
install_lang "perl=5.36.0"
|
|
install_lang "php=8.2.3"
|
|
install_lang "lua=5.4.4"
|
|
|
|
# Functional
|
|
echo ">>> Functional Languages"
|
|
install_lang "haskell=9.0.1"
|
|
install_lang "ocaml=4.12.0"
|
|
install_lang "elixir=1.11.3"
|
|
install_lang "clojure=1.10.3"
|
|
install_lang "racket=8.3.0"
|
|
|
|
# Other competitive programming languages
|
|
echo ">>> Other Languages"
|
|
install_lang "pascal=3.2.2"
|
|
install_lang "fortran=10.2.0"
|
|
install_lang "swift=5.3.3"
|
|
install_lang "typescript=5.0.3"
|
|
install_lang "nim=1.6.2"
|
|
install_lang "zig=0.10.1"
|
|
install_lang "d=10.2.0"
|
|
install_lang "prolog=8.2.4"
|
|
|
|
# Low-level
|
|
echo ">>> Low-level"
|
|
install_lang "nasm=2.15.5"
|
|
install_lang "bash=5.1.0"
|
|
|
|
touch "$LANGUAGES_INSTALLED_FLAG"
|
|
echo ""
|
|
echo "=== Languages installation complete ==="
|
|
$PPMAN list
|
|
}
|
|
|
|
# Install languages only on first run
|
|
if [ ! -f "$LANGUAGES_INSTALLED_FLAG" ]; then
|
|
install_languages &
|
|
fi
|
|
|
|
# Start Piston API server (don't wait for languages to finish)
|
|
exec /piston_api/pkg/piston/piston_api
|