compile.sh - Rewritten and added small features

Ability to compile single or multiple files and checking compiler version.
For more information and examples
See https://forums.alliedmods.net/showthread.php?t=325181
This commit is contained in:
CrXane 2020-06-18 23:42:43 -04:00 committed by GitHub
parent ed1ab00faf
commit 8fb9543fd6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,18 +7,125 @@
#
# This file is part of AMX Mod X.
# new code contributed by \malex\
#####################
# GENERAL FUNCTIONS #
#####################
test -e compiled || mkdir compiled
rm -f temp.txt
# Quit script
quit_script () {
if (( $# != 0 )); then
echo "$@"; fi
for sourcefile in *.sma
do
amxxfile="`echo $sourcefile | sed -e 's/\.sma$/.amxx/'`"
echo -n "Compiling $sourcefile ..."
./amxxpc $sourcefile -ocompiled/$amxxfile >> temp.txt
echo "Exiting..."
exit 1
}
# Checks if folder exists
exists () {
test -e $1
}
#####################
# ARGUMENT CHECKING #
#####################
# Checks if exists any argument
check_for_arguments () {
if [ $# != 0 ]; then
return 0; # Argument exist
else return 1; fi # Argument doesn't exist
}
# Check if argument is a command
check_for_commands () {
if [[ $1 == -* && $1 != *.* ]]; then
return 0; # Argument is command
else return 1; fi # Argument is file
}
#####################
# COMMAND FUNCTIONS #
#####################
# HELP
__help () {
echo " Usage:"
echo "--help (-h) : This menu"
echo -e "--version (-v) : AMX MOD X Compiler version\n"
echo "To compile all source files in the directory"
echo " execute the script without any parameters"
echo "To compile specific or multiple source files"
echo " execute the script with parameters set as source files' name"
echo " e.g ./compile.sh admin.sma admincmd.sma adminchat.sma"
}
# VERSION
__version () {
if exists amxxpc; then
./amxxpc -q | head -n 3
else quit_script "amxxpc does not exists"; fi
}
# Execute command
execute_command () {
case "$1" in
"--help" | "-h" ) __help ;;
"--version" | "-v" ) __version ;;
*)
echo " $1 is not a valid command"
echo " Type \"$0 --help\" to see more information"
esac
}
#####################
# COMPILE SOURCE #
#####################
# Compile source file
compile_source_file () {
amxxfile="`echo $1 | sed -e 's/\.sma$/.amxx/'`"
echo -n "Compiling $1 ..."
./amxxpc $1 -ocompiled/$amxxfile >> temp.txt
echo "done"
done
}
less temp.txt
rm temp.txt
#####################
# MAIN FUNCTION #
#####################
# Main function
main () {
if check_for_arguments "$@"; then
for arg in "$@"; do
if check_for_commands $arg; then
execute_command $arg
exit
else
test -e amxxpc || quit_script "amxxpc does not exists"
if [[ $arg == *.sma ]]; then
test -e temp.txt && rm -f temp.txt
test -e compiled || mkdir compiled
compile_source_file $arg
less temp.txt && rm temp.txt
else
echo " $arg not a valid file"
echo " Type \"$0 --help\" to see more information"
fi
fi
done
else
test -e compiled || mkdir compiled
test -e amxxpc || quit_script "amxxpc does not exists"
test -e temp.txt && rm -f temp.txt
for sourcefile in *.sma; do
compile_source_file $sourcefile
done
less temp.txt && rm temp.txt
fi
}
#####################
# EXECUTE MAIN FUNC #
#####################
main "$@"
#####################