149 lines
3.7 KiB
Bash
Executable File
149 lines
3.7 KiB
Bash
Executable File
#!/bin/zsh
|
|
|
|
# Supported languages.
|
|
TYPES=("c", "cs", "java", "js", "python", "go")
|
|
|
|
# Catch case where there are too many arguments.
|
|
if [[ $# -gt 1 ]]; then
|
|
echo "Proper usage: run {file}"
|
|
echo " eg. run"
|
|
echo " eg. run main"
|
|
echo " eg. run --gradle"
|
|
echo " eg. run -h"
|
|
echo " eg. run --help"
|
|
|
|
exit
|
|
|
|
# Help page
|
|
elif [[ $1 == "-h" || $1 == "--help" ]]; then
|
|
echo "\nAbstracting away command line tools to compile and run code for various languages."
|
|
echo "User can use with or without an argument file, the filetype is not needed."
|
|
echo "With no arguments, 'run' will list available (and supported) files."
|
|
echo "Additionally, 'run' prompts for and passes command line arguments for a program.\n"
|
|
echo "Detects required tools to use based upon filetypes.\n"
|
|
echo "Usage:"
|
|
echo " run"
|
|
echo " run [filename]"
|
|
echo " eg. run main"
|
|
echo " run --gradle"
|
|
echo " run -h"
|
|
echo " run --help\n"
|
|
echo "Supported languages: $TYPES"
|
|
|
|
exit
|
|
|
|
# Default state, with a reminder of what files may be launched from based upon the currently supported languages.
|
|
elif [[ $# -eq 0 ]]; then
|
|
|
|
echo "Files that may be launched from:"
|
|
|
|
# List files available to launch from.
|
|
for f in *
|
|
do
|
|
TYPE=`echo $f | cut -d "." -f 2`
|
|
counter=0
|
|
|
|
# Only list supported filetypes.
|
|
if [[ ${TYPES[@]} =~ $TYPE ]]; then
|
|
counter=$((counter+1)) # Increment counter to indicate the number of results.
|
|
|
|
# Format: filename (file type)
|
|
echo `echo $f | cut -d "." -f 1` "("$TYPE")"
|
|
fi
|
|
done
|
|
echo $counter" available files.\n"
|
|
|
|
# Catch case where there are no available files to run and exit.
|
|
if [[ $counter -eq 0 ]]; then
|
|
echo "No available files to run. Exiting."
|
|
exit
|
|
fi
|
|
|
|
read "?Which file would you like to launch from: " TMP
|
|
|
|
# Locate file and assign variables associated with the file (name and filetype).
|
|
for f in *
|
|
do
|
|
FILE=`echo $f | cut -d "." -f 1`
|
|
if [[ $FILE == $TMP ]]; then
|
|
NAME=$TMP
|
|
TYPE=`echo $f | cut -d "." -f 2`
|
|
fi
|
|
done
|
|
|
|
# User has provided the file name.
|
|
elif [[ $# -eq 1 ]]; then
|
|
|
|
# Locate file and assign variables associated with the file (name and filetype).
|
|
for f in *
|
|
do
|
|
FILE=`echo $f | cut -d "." -f 1`
|
|
if [[ $FILE == $1 ]]; then
|
|
NAME=$FILE
|
|
TYPE=`echo $f | cut -d "." -f 2`
|
|
fi
|
|
done
|
|
fi
|
|
|
|
read "?Arguments: " ARGS
|
|
|
|
# Run C app.
|
|
if [[ $TYPE == "c" ]]; then
|
|
clear
|
|
echo "Compiling..."
|
|
gcc $NAME.c -lm
|
|
echo "Output..."
|
|
./a.out $ARGS
|
|
|
|
# Run C# app.
|
|
elif [[ $TYPE == "cs" ]]; then
|
|
clear
|
|
echo "Compiling..."
|
|
mcs -out:$NAME.exe $NAME.cs
|
|
echo "Output..."
|
|
mono $NAME.exe
|
|
|
|
# Run Java app.
|
|
elif [[ $TYPE == "java" ]]; then
|
|
clear
|
|
echo "Compiling..."
|
|
javac -cp $CP *.java
|
|
echo "Output...";
|
|
java -cp $CP $NAME $ARGS
|
|
rm *.class
|
|
|
|
|
|
# Run JavaScript app.
|
|
elif [[ $TYPE == "js" ]]; then
|
|
clear
|
|
echo "Output..."
|
|
node $NAME.js
|
|
|
|
# Run Python app.
|
|
elif [[ $TYPE == "py" ]]; then
|
|
clear
|
|
echo "Running..."
|
|
python $FILE.py
|
|
|
|
# Run Golang app.
|
|
elif [[ $TYPE == "go" ]]; then
|
|
clear
|
|
echo "Compiling..."
|
|
go build
|
|
echo "Output..."
|
|
./discordo #TODO: need to dynamically obtain the newly created object file to run and then delete
|
|
rm discordo
|
|
|
|
# Run app through Gradle
|
|
elif [[ $1 == "--gradle" ]]; then
|
|
clear;
|
|
echo "Output..."
|
|
./gradlew run
|
|
|
|
else
|
|
read "?Language is not supported. Create a GH issue (y/n, default y): " GH
|
|
if [[ $GH == "y" || $GH == "" ]]; then
|
|
echo "Need to implement issue reporting."
|
|
fi
|
|
fi
|