#!/bin/bash . libremessages # "Primitive" git functions ########################################## in_git() { git rev-parse --git-dir &>/dev/null } gitdir() { git rev-parse --git-dir } gitroot() { git rev-parse --show-toplevel } gitbranch() { git rev-parse --abbrev-ref HEAD } have_file() { local file=$1 if in_git; then if [[ -f "$(gitroot)/$file" ]]; then return 0; fi fi return 1 } # Deal with being in a PBS package repository ######################## in_pbs-package() { have_file .pbs-package } ensure_in_pbs-package() { if ! in_pbs-package; then error "Not in a PBS package directory" exit 1 fi } pbs-package-root() { ensure_in_pbs-package gitroot } cdto_pbs-package-root() { ensure_in_pbs-package cd "$(gitroot)" } # Deal with being in a PBS repository ################################ in_pbs() ( if in_pbs-package; then cd "$(pbs-package-root)/.." fi have_file .pbs-root ) ensure_in_pbs() { if ! in_pbs; then error "Not in a PBS directory" exit 1 fi } pbs-root() { ensure_in_pbs ( if in_pbs-package; then cd "$(pbs-package-root)/.." fi gitroot ) } cdto_pbs-root() { ensure_in_pbs if in_pbs-package; then cd "$(pbs-package-root)/.." fi cd "$(gitroot)" }