function get_os() { un=$(uname) if [[ "$un" = "Linux" ]] ; then echo -n "linux" return 0 fi if [[ "$un" = "Darwin" ]] ; then echo -n "osx" return 0 fi } OPERATING_SYSTEM=$(get_os) # For a given file, return its corresponding project root. function project_root() { pushd $(dirname "$1") 2>&1 > /dev/null out=$(git rev-parse --show-toplevel) ret="$?" popd 2>&1 > /dev/null if [[ "$ret" != "0" ]] ; then echo -n "" return 1 fi echo -n "$out" return 0 } # When run from a dir with would-format configured, return # would-format's own directory wf_root() { arg=$(pwd)/bin/would-reformat.sh pr=$(project_root $arg) link="$pr/bin/would-reformat.sh" original0=$(resolve_symlink "$link") original=$(normalize_dir_of_file $original0) out="$original" echo "$out" return 0 } # FIXME: Make this bail if it fails function normalize_dir_of_file() { out0=$(readlink -m "$1") out=$(dirname "$out0") echo -n "$out" return 0 } function resolve_symlink() { if [[ "$OPERATING_SYSTEM" = "osx" ]] ; then out=$(readlink "$1") else out=$(readlink -f "$1") fi echo "$out" } function custom_formatter() { root="$1" file_type="$2" maybe="$root/.would-reformat/$file_type" if [[ -f "$maybe" ]] ; then echo "$maybe" return fi echo "use-default" } # FIXME: This needs to be made customizable function sniff_file_type() { ff=$1 shift file_type= if [[ $ff == *.py ]]; then file_type="python" elif [[ $ff == *.js ]]; then file_type="javascript" elif [[ $ff == *.ts ]]; then file_type="typescript" elif [[ $ff == *.vue ]]; then file_type="vue" elif [[ $ff == *.css ]]; then file_type="css" elif [[ $ff == *.php ]]; then file_type="php" elif [[ $ff == *.html ]]; then file_type="html" elif [[ $ff == *.jsx ]]; then file_type="jsx" elif [[ $ff == *.tsx ]]; then file_type="tsx" elif [[ $ff == *.css ]] ; then file_type="css" elif [[ $ff == *.scss ]] ; then file_type="scss" elif [[ $ff = *.sh ]]; then file_type="sh" elif [[ $ff = *.go ]] ; then file_type="golang" elif [[ $ff = *.dart ]] ; then file_type="dart" fi echo $file_type } function wrflog() { echo "$@" >> /tmp/wrflog }