diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2016-07-26 04:41:53 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2016-07-26 04:41:53 +0300 |
commit | 359a519db94ad34e82d19adfe3d8eca830226017 (patch) | |
tree | d047a3db226e5c2eaebb742ad395290b8f7a3dec | |
parent | ignore `source` failures (diff) | |
download | linux-home-359a519db94ad34e82d19adfe3d8eca830226017.tar.gz linux-home-359a519db94ad34e82d19adfe3d8eca830226017.zip |
list_repo_*: add command line options
-rw-r--r-- | .bashrc_git | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/.bashrc_git b/.bashrc_git index 9de238b..57766fc 100644 --- a/.bashrc_git +++ b/.bashrc_git @@ -1,22 +1,66 @@ [ ! -z "${BASHRC_GIT+x}" ] && return || readonly BASHRC_GIT=1 -alias list_repo_files='git ls-files -z' +list_repo_files() ( + local -a cmd=(git ls-files) + + while [ "$#" -gt 0 ]; do + case "$1" in + -z|-0): + cmd+=(-z) + shift + ;; + + -h): + echo "usage: $FUNCNAME [-h] [-z|-0]" + return 0 + ;; + + *) + echo "$FUNCNAME: unrecognized parameter: $1" >&2 + return 1 + ;; + esac + done + + eval "${cmd[@]}" +) list_repo_dirs() ( set -o errexit - { printf '.\0' ; list_repo_files ; } \ + local terminator='\n' + + while [ "$#" -gt 0 ]; do + case "$1" in + -z|-0): + terminator='\000' + shift + ;; + + -h): + echo "usage: $FUNCNAME [-h] [-z|-0]" + return 0 + ;; + + *) + echo "$FUNCNAME: unrecognized parameter: $1" >&2 + return 1 + ;; + esac + done + + { printf '.\0' ; list_repo_files -z ; } \ | xargs -0 dirname -z \ - | sort -z \ - | uniq -z \ - | tail -z -n +2 + | sort -uz \ + | tail -z -n +2 \ + | tr '\000' "$terminator" ) tighten_repo_security() ( set -o errexit - list_repo_files | xargs -0 chmod 0600 - list_repo_dirs | xargs -0 chmod 0700 + list_repo_files -z | xargs -0 chmod 0600 + list_repo_dirs -z | xargs -0 chmod 0700 chmod 0700 .git ) @@ -30,7 +74,7 @@ backup_repo() ( if [ $# -eq 1 ]; then backup_dir="$1" elif [ $# -gt 1 ]; then - echo "$FUNCNAME: usage: $FUNCNAME [BACKUP_DIR]" >&2 + echo "usage: $FUNCNAME [BACKUP_DIR]" >&2 exit 1 fi |