[PATCH 4/6] cogito-gnu-progs: parameterize cogito
Patch cogito so that the utilities 'cp' 'stat' 'xargs' and 'date' are configurable. Cogito requires the gnu versions of these tools, and on some BSD derived systems, the gnu versions of these tools have a different name.
Signed-off-by: Bryan Larsen <bryan.larsen@gmail.com>
---
cg-Xlib | 15 ++++++++++-----
cg-Xnormid | 2 +-
cg-add | 2 +-
cg-commit | 4 ++--
cg-diff | 4 ++--
cg-init | 4 ++--
cg-patch | 2 +-
cg-pull | 2 +-
8 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/cg-Xlib b/cg-Xlib
--- a/cg-Xlib
+++ b/cg-Xlib
@@ -6,6 +6,11 @@
# This file provides a library containing common code shared with all the
# Cogito programs.
+DATE=date
+CP=cp
+XARGS=xargs
+STAT=stat
+
_cg_cmd=${0##*/}
_git=${GIT_DIR:-.git}
@@ -70,9 +75,9 @@ showdate () {
secs=$(($secs + $tzhours * 3600 + $tzmins * 60))
[ "$format" ] || format="+%a, %d %b %Y %H:%M:%S $2"
if [ "$has_gnudate" ]; then
- LANG=C date -ud "1970-01-01 UTC + $secs sec" "$format"
+ LANG=C ${DATE} -ud "1970-01-01 UTC + $secs sec" "$format"
else
- LANG=C date -u -r $secs "$format"
+ LANG=C ${DATE} -u -r $secs "$format"
fi
}
@@ -104,7 +109,7 @@ tree_timewarp () {
[ "$no_head_update" ] || echo "$branch" > $_git/HEAD
# Kill gone files
- git-diff-tree -z -r $base $branch | xargs -0 bash -c '
+ git-diff-tree -z -r $base $branch | ${XARGS} -0 bash -c '
while [ "$1" ]; do
header="$1"; shift
file="$1"; shift
@@ -234,5 +239,5 @@ fi
export BROKEN_MKTEMP=1
del=$($(which mktemp) -t 2>/dev/null) && { rm $del; export BROKEN_MKTEMP=; }
-has_stat=$(which stat 2>/dev/null)
-has_gnudate=$(date -Rud "1970-01-01 UTC" 2>/dev/null)
+has_stat=$(which ${STAT} 2>/dev/null)
+has_gnudate=$(${DATE} -Rud "1970-01-01 UTC" 2>/dev/null)
diff --git a/cg-Xnormid b/cg-Xnormid
--- a/cg-Xnormid
+++ b/cg-Xnormid
@@ -50,7 +50,7 @@ fi
valid=; [ ${#id} -eq 40 ] && [ "$(git-rev-parse --revs-only "$id")" ] && valid=1
if ([ "$id" ] && [ "$id" != " " ]) && [ ! "$valid" ]; then
- reqsecs=$(date --date="$id" +'%s' 2>/dev/null)
+ reqsecs=$(${DATE} --date="$id" +'%s' 2>/dev/null)
if [ "$reqsecs" ]; then
id=$(git-rev-list --min-age=$reqsecs --max-count=1 HEAD)
diff --git a/cg-add b/cg-add
--- a/cg-add
+++ b/cg-add
@@ -43,6 +43,6 @@ find "${ARGS[@]}" -type f -print0 > $TMP
}
cat $TMPFILE | tr '\0' '\n' | sed 's/^/Adding file /'
-cat $TMPFILE | xargs -0r git-update-cache --add ${infoonly} --
+cat $TMPFILE | ${XARGS} -0r git-update-cache --add ${infoonly} --
rm $TMPFILE
diff --git a/cg-commit b/cg-commit
--- a/cg-commit
+++ b/cg-commit
@@ -168,7 +168,7 @@ written=
if [ "$merging" ]; then
echo -n 'Merge with ' >>$LOGMSG
[ "$msgs" ] && echo -n 'Merge with '
- [ -s $_git/merging-sym ] || cp $_git/merging $_git/merging-sym
+ [ -s $_git/merging-sym ] || ${CP} $_git/merging $_git/merging-sym
for sym in $(cat $_git/merging-sym); do
uri=$(cat $_git/branches/$sym)
[ "$uri" ] || uri="$sym"
@@ -229,7 +229,7 @@ fi
echo "CG: -----------------------------------------------------------------------" >>$LOGMSG
echo "CG: vim: textwidth=75" >>$LOGMSG
-cp $LOGMSG $LOGMSG2
+${CP} $LOGMSG $LOGMSG2
if tty -s; then
if ! [ "$msgs" ] || [ "$forceeditor" ]; then
${EDITOR:-vi} $LOGMSG2
diff --git a/cg-diff b/cg-diff
--- a/cg-diff
+++ b/cg-diff
@@ -155,7 +155,7 @@ if [ "$id2" = " " ]; then
# FIXME: Update ret based on what did we match. And take "$@"
# to account after all.
ret=
- cat $filter | xargs git-diff-cache -r -p $tree | colorize | pager
+ cat $filter | ${XARGS} git-diff-cache -r -p $tree | colorize | pager
rm $filter
@@ -169,7 +169,7 @@ id2=$(tree-id "$id2") || exit 1
[ "$id1" = "$id2" ] && die "trying to diff $id1 against itself"
-cat $filter | xargs git-diff-tree -r -p $id1 $id2 | colorize | pager
+cat $filter | ${XARGS} git-diff-tree -r -p $id1 $id2 | colorize | pager
rm $filter
exit 0
diff --git a/cg-init b/cg-init
--- a/cg-init
+++ b/cg-init
@@ -47,7 +47,7 @@ if [ "$uri" ]; then
echo "$uri" >$_git/branches/origin
cg-pull origin || die "pull failed"
- cp $_git/refs/heads/origin $_git/refs/heads/master
+ ${CP} $_git/refs/heads/origin $_git/refs/heads/master
git-read-tree HEAD
git-checkout-cache -a
git-update-cache --refresh
@@ -55,7 +55,7 @@ if [ "$uri" ]; then
echo "Cloned (origin $uri available as branch \"origin\")"
else
git-read-tree # Seed the dircache
- find * \( -type f -o -type l \) -print0 | xargs -0r cg-add ${infoonly}
+ find * \( -type f -o -type l \) -print0 | ${XARGS} -0r cg-add ${infoonly}
cg-commit -C -m"Initial commit" -E ${infoonly}
fi
diff --git a/cg-patch b/cg-patch
--- a/cg-patch
+++ b/cg-patch
@@ -129,7 +129,7 @@ wait
touchfiles="$(git-ls-files --deleted | join -v 2 $gonefile -)"
[ "$touchfiles" ] && touch $touchfiles
-cat $todo | xargs -0 bash -c '
+cat $todo | ${XARGS} -0 bash -c '
while [ "$1" ]; do
op="$1"; shift;
case "$op" in
diff --git a/cg-pull b/cg-pull
--- a/cg-pull
+++ b/cg-pull
@@ -233,7 +233,7 @@ fetch_local () {
dest="$2"
[ "$cut_last" ] && dest=${dest%/*}
- cp $cp_flags_l "$src" "$dest"
+ ${CP} $cp_flags_l "$src" "$dest"
}
pull_local () {