#!/bin/bash

#######################################

required_command="yapf unexpand"
code_directories="pina tests"

#######################################

usage() {
	echo
	echo -e "\tUsage: $0 [files]"
	echo
	echo -e "\tIf not files are specified, script formats all ".py" files"
	echo -e "\tin code directories ($code_directories); otherwise, formats"
	echo -e "\tall given files"
	echo
	echo -e "\tRequired command: $required_command"
	echo
	exit 0
}


[[ $1 == "-h" ]] && usage

# Test for required program
for comm in $required_command; do
	command -v $comm >/dev/null 2>&1 || {
		echo "I require $comm but it's not installed. Aborting." >&2; 
		exit 1
	}
done

# Find all python files in code directories
python_files=""
for dir in $code_directories; do
    python_files="$python_files $(find $dir -name '*.py')"
done
[[ $# != 0 ]] && python_files=$@


# Here the important part: yapf format the files.
for file in $python_files; do
	echo "Making beatiful $file..."
	[[ ! -f $file ]] && echo "$file does not exist; $0 -h for more info" && exit
	
	yapf --style='{
					based_on_style: pep8, 
				   	indent_width: 4,
					column_limit: 80
			  	  }' -i $file
done
