## Author: druckdev ## Created: 2020-09-13 ## ## Completely remove a git submodule. # Exit if not in git repo local toplevel="$(git rev-parse --show-toplevel)" || return # Exit if no arguements were given [[ $# -gt 0 ]] || return local separator="" for arg in "$@"; do printf "$separator" # argument relative from git toplevel local arg_from_git="${${arg:A}##$toplevel/}" # argument has to exist [[ -e "$arg" ]] || continue # argument has to exist in repo [[ -e "$toplevel/$arg_from_git" ]] || continue # has to be a submodule [[ -e "$toplevel/.git/modules/$arg_from_git" ]] || continue git submodule deinit -f "$arg" echo "command rm -rf \"$toplevel/.git/modules/$arg_from_git\"" command rm -rf "$toplevel/.git/modules/$arg_from_git" git rm -f "$arg" separator="\n" done # vim: ft=zsh