#!/bin/bash

#These are from the Mininet coding style
P8IGN=E251,E201,E302,E202,E126,E127,E203,E226,W391

# help text function
help ()
{
    echo "Usage: codecheck [FILE]... [OPTION]..."
    echo "Simple script that runs some python code check tools on a file or folder"
    echo "Note that for now, options must come after the file/folder path"
    echo -e "\nOptions include:"
    echo -e "   --fix\tRun the automatic style scripts on a file and save the output to FILE.fixed"
    echo -e "   --reason\tShow a short snippit for each PEP8 violation"
    echo -e "   --help\tDisplays this help text and exits"
}


if [ -z "$1" ] || [[ "$1" =~ --* ]]; then
    help
elif [ "$2" = "--fix" ]; then
    file=$1.fixed
    echo "Fixing PEP8 errors. WARNING: This may be harmful to your code."
    echo "For safety, the new code is written to $file"
    #autopep8 -a -a $1
    autopep8 -a -a $1 --ignore=E501 | $(dirname "${BASH_SOURCE}")/unpep8 > $file
    autopep8 --in-place -a -a $file --ignore=$P8IGN
elif [ -z "$2" ] || [ "$2" = "--reason" ]; then
    echo "Running pyflakes..."
    #Pyflakes is a source checker. It doesn't run the code so it is safer than other programs
    #ignoring some errors due to TestON
    pyflakes $1 | grep -v "undefined name 'main'" | grep -v "undefined name 'utilities'"
    echo "Running pylint..."
    #Pylint is a static code checker
    #ignoring some errors due to TestON
    pylint -E --rcfile=$(dirname "${BASH_SOURCE}")/.pylint $1 | grep -v "Undefined variable 'main'" | grep -v "Undefined variable 'utilities'"

    echo "Running PEP8..."
    #PEP8 is a the most common python coding style standard
    if [ -z "$2"]; then
        pep8 --repeat --show-source --ignore=$P8IGN $1
    else
        pep8 --repeat --show-source --show-pep8 --ignore=$P8IGN $1
    fi
else
    help
fi



