#!/usr/bin/env bash

# Accepts no arguments
# Returns git-add'ed files as a list of filenames separated by a newline character
cachedFiles() {
    git diff --cached --name-only --diff-filter=ACM "*.js" "*.jsx" "*.ts" "*.tsx" "*.md" "*.css"
}

# Accepts a single argument which is the name of a file tracked by git
# Returns a string which is the content of the file as stored in the git index
staged() {
    git show :"$1"
}

# Accepts a single string argument made of multiple file names separated by a newline
# Returns an array of files that prettier wants to lint
ugly() {
    local acc=""
    local IFS=$'\n'
    for jsfile in $1; do
        diff <(staged "$jsfile") <(staged "$jsfile" | "$(npm bin)/prettier" --stdin-filepath "$jsfile") >/dev/null || acc="$jsfile"$'\n'"$acc"
    done
    echo "$acc"
}

noisy() {
    local acc=()
    for jsfile in "$@"; do
        if [ "$(git diff --cached "$jsfile" | grep '^+.*console.log' -c)" -gt '0' ] ; then
            acc+=("jsfile")
        fi
    done
    echo ${acc[@]}
}
