diff --git a/scripts/freset b/scripts/freset index 905be13..91e63d2 100755 --- a/scripts/freset +++ b/scripts/freset @@ -21,9 +21,14 @@ function usage() { echo -e " -h\t\tshow this help message and exit" } -while getopts ":h" opt +search_commits="" + +while getopts ":hc" opt do case "$opt" in + c) + search_commits="1" + ;; h) usage exit 0 @@ -36,11 +41,18 @@ do esac done -selected_files=$(/usr/bin/git --git-dir="${DOTBARE_DIR}" --work-tree="${DOTBARE_TREE}" diff --name-status --cached | \ - awk '{print "\033[32m" $1 " " $2}' | fzf --header='select files to unstage' --multi --preview "echo {} | awk '{print \$2}' | \ - xargs -I __ /usr/bin/git --git-dir=${DOTBARE_DIR} --work-tree=${DOTBARE_TREE} diff --staged --color=always ${DOTBARE_TREE}/__" | \ - awk -v home="${DOTBARE_TREE}" '{print home "/" $2}') -[[ -z "${selected_files}" ]] && exit 0 -while IFS= read -r line; do - /usr/bin/git --git-dir="${DOTBARE_DIR}" --work-tree="${DOTBARE_TREE}" reset HEAD "${line}" -done <<< "${selected_files}" +if [[ -n "${search_commits}" ]]; then + selected_commites=$(/usr/bin/git --git-dir="${DOTBARE_DIR}" --work-tree="${DOTBARE_TREE}" log --oneline --color=always --decorate=short | \ + fzf --header='select which commit to reset' --preview "echo {} | awk '{print \$1}' | \ + xargs -I __ /usr/bin/git --git-dir=${DOTBARE_DIR} --work-tree=${DOTBARE_TREE} show --color=always __") +else + selected_files=$(/usr/bin/git --git-dir="${DOTBARE_DIR}" --work-tree="${DOTBARE_TREE}" diff --name-status --cached | \ + awk '{print "\033[32m" $1 " " $2}' | fzf --header='select files to unstage' --multi --preview "echo {} | awk '{print \$2}' | \ + xargs -I __ /usr/bin/git --git-dir=${DOTBARE_DIR} --work-tree=${DOTBARE_TREE} diff --staged --color=always ${DOTBARE_TREE}/__" | \ + awk -v home="${DOTBARE_TREE}" '{print home "/" $2}') + [[ -z "${selected_files}" ]] && exit 0 + while IFS= read -r line; do + /usr/bin/git --git-dir="${DOTBARE_DIR}" --work-tree="${DOTBARE_TREE}" reset HEAD "${line}" 1>/dev/null + echo "${line} unstaged successfully" + done <<< "${selected_files}" +fi