#!/bin/bash filename=$1 debug=0 cpp_version="c++17" if [[ $filename == *.c ]]; then extension=".c" compiler="gcc" language="c" elif [[ $filename == *.cpp ]]; then extension=".cpp" compiler="g++" language="c++" elif [[ $filename == *.java ]]; then extension=".java" compiler="javac" language="java" elif [[ $filename == *.go ]]; then extension=".go" compiler="go run" language="go" elif [[ $filename == *.cs ]]; then extension=".cs" compiler="csc" language="csharp" elif [[ $filename == *.swift ]]; then extension=".swift" compiler="swift" language="swift" # add for python elif [[ $filename == *.py ]]; then extension=".py" compiler="python3" language="python" elif [[ $filename == *.js ]]; then extension=".js" compiler="node" language="javascript" elif [[ $filename == *.rs ]]; then extension=".rs" compiler="rustc" language="rust" else echo "Error: Unsupported file type" exit 1 fi if [ $language == "c++" ]; then if [[ $3 == c++* ]]; then version=${3#c++} if [[ $version == 17 || $version == 14 || $version == 11 || $version == 0x ]]; then cpp_version="c++$version" fi fi fi if [[ $2 == "--debug" ]]; then debug=1 fi if [ $debug -eq 1 ]; then if [ $language == "c++" ]; then echo "Compiling $filename with $compiler (C++ $cpp_version)..." else echo "Compiling $filename with $compiler..." fi fi if [ $language == "c" ]; then $compiler $filename -o ${filename%.*} elif [ $language == "c++" ]; then $compiler $filename -std=$cpp_version -o ${filename%.*} elif [ $language == "java" ]; then $compiler $filename elif [ $language == "go" ]; then $compiler $filename elif [ $language == "csharp" ]; then $compiler /out:${filename%.*}.exe $filename elif [ $language == "swift" ]; then $compiler $filename elif [ $language == "python" ]; then $compiler $filename elif [ $language == "javascript" ]; then $compiler $filename elif [ $language == "rust" ]; then $compiler $filename else echo "Error: Unsupported file type" exit 1 fi if [ $? -ne 0 ]; then echo "Compilation failed" exit 1 fi if [ $debug -eq 1 ]; then echo "Running ${filename%.*}..." fi if [ $language == "java" ]; then java ${filename%.*} elif [ $language == "go" ]; then $compiler $filename else ./${filename%.*} fi if [ $debug -eq 1 ]; then echo "Finished running ${filename%.*}" fi