From e42d401d0f379a6c6ec541eaf05682973abf4bf9 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 18 Mar 2013 10:18:17 -0400 Subject: add a shlib, use .pbs-root and .pbs-package to identify directories --- pbs-plumb-shlib | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 pbs-plumb-shlib (limited to 'pbs-plumb-shlib') diff --git a/pbs-plumb-shlib b/pbs-plumb-shlib new file mode 100644 index 0000000..c51ddd0 --- /dev/null +++ b/pbs-plumb-shlib @@ -0,0 +1,84 @@ +#!/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 +} + +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)" +} -- cgit v1.2.3