summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-03-14 22:26:05 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-03-14 22:26:05 -0400
commit6d386c6cfe3d04a3188b9d05b7656ffec2a8f51f (patch)
tree96764b24c8cf130d25ddfbcea3adc1b2293f0fa5
parent7190864de465c3c3b015540ca45c9d9bccb5b790 (diff)
fixity fix
-rw-r--r--modules/blobs/Makefile.inc.mk4
-rw-r--r--modules/blobs/_shlib.sh.m46
-rw-r--r--modules/blobs/get.f.sh4
-rw-r--r--modules/blobs/put.d.sh (renamed from modules/blobs/commit.d.sh)10
-rw-r--r--modules/blobs/put.f.sh (renamed from modules/blobs/commit.f.sh)4
-rw-r--r--modules/blobs/put.l.sh (renamed from modules/blobs/commit.l.sh)6
-rw-r--r--modules/blobs/put.sh (renamed from modules/blobs/commit.sh)6
-rw-r--r--modules/blobs/tree.sh27
-rw-r--r--wrapper/inner.sh.m425
-rw-r--r--wrapper/runcmd.mk2
10 files changed, 57 insertions, 37 deletions
diff --git a/modules/blobs/Makefile.inc.mk b/modules/blobs/Makefile.inc.mk
index 484da13..2f91acd 100644
--- a/modules/blobs/Makefile.inc.mk
+++ b/modules/blobs/Makefile.inc.mk
@@ -1,5 +1,5 @@
-am_src_files += commit.d.sh commit.f.sh commit.l.sh commit.sh get.d.sh get.f.sh get.l.sh get.sh tree.sh init.sh
-am_out_files += commit.d commit.f commit.l commit get.d get.f get.l.sh get tree init
+am_src_files += put.d.sh put.f.sh put.l.sh put.sh get.d.sh get.f.sh get.l.sh get.sh tree.sh init.sh
+am_out_files += put.d put.f put.l put get.d get.f get.l.sh get tree init
am_src_files += _shlib.sh.m4
am_clean_files += _shlib.sh
diff --git a/modules/blobs/_shlib.sh.m4 b/modules/blobs/_shlib.sh.m4
index 567486f..b58a20d 100644
--- a/modules/blobs/_shlib.sh.m4
+++ b/modules/blobs/_shlib.sh.m4
@@ -35,13 +35,13 @@ usage() {
local form
local pfix1="$(_ 'Usage:')"
local pfix2="$(_ ' Or:')"
- local pfix="pfix1"
+ local pfix="$pfix1"
for form in "${usage[@]}"; do
- printf '%s %q %q %s\n' "$pfix" "$RVS" "$form"
+ printf '%s %q %q %s\n' "$pfix" "$RVS" "${0##*/}" "$form"
pfix="$pfix2"
done
- printf '%s\n' "$(_ "$desc")"
if [[ -n "$doc" ]] && [[ "$volume" != '-q' ]]; then
+ printf '%s\n' "$(_ "$desc")"
printf '\n\n%s\n' "$(_ "$doc")"
fi
}
diff --git a/modules/blobs/get.f.sh b/modules/blobs/get.f.sh
index fafb076..7cc49c6 100644
--- a/modules/blobs/get.f.sh
+++ b/modules/blobs/get.f.sh
@@ -19,7 +19,7 @@ license='AGPLv3+'
# along with this program. If not, see <http://www.gnu.org/licenses/>.
usage="ID FILENAME"
-doc="Unlike commit.f, FILENAME may be a character device such as
+doc="Unlike put.f, FILENAME may be a character device such as
/dev/stdout or /dev/fd/n."
. "${0%/*}/_shlib.sh"
@@ -29,7 +29,7 @@ main() {
name=$2
mkdir -p -- "$(dirname -- "$name")"
- < "$REPO/blobs/${id#*:}" gunzip > "$name"
+ < "$RVS_REPO/blobs/${id#*:}" gunzip > "$name"
}
main "$@"
diff --git a/modules/blobs/commit.d.sh b/modules/blobs/put.d.sh
index 458f98e..afd5e7d 100644
--- a/modules/blobs/commit.d.sh
+++ b/modules/blobs/put.d.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-name=blobs/commit.d
-desc='Add a directory to the repository'
+name=blobs/put.d
+desc='Put a directory into the repository'
copyright=('2009-2010, 2015-2016 Luke Shumaker')
license='AGPLv3+'
# This file is part of rvs.
@@ -34,12 +34,12 @@ main() {
if [[ "$RVS_REPO" -ef "$file" ]]; then
continue
fi
- id="$("$RVS" commit "$file" 2>/dev/null)"
- stat -c $'%a\t%u (%U)\t%g (%G)\t' -- "$file"
+ id="$("$RVS" blobs/put "$file")"
+ stat --printf $'%a\t%u (%U)\t%g (%G)\t' -- "$file"
printf $'%s\t%s\n' "$id" "$file"
done > "$tmpfile"
)
- "$RVS" commit.f "$tmpfile" 'd'
+ "$RVS" blobs/put.f "$tmpfile" 'd'
}
main "$@"
diff --git a/modules/blobs/commit.f.sh b/modules/blobs/put.f.sh
index 233f7bb..01b421a 100644
--- a/modules/blobs/commit.f.sh
+++ b/modules/blobs/put.f.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-name=blobs/commit.f
-desc='Add a plain file to the repository'
+name=blobs/put.f
+desc='Put a plain file into the repository'
copyright=('2009-2010, 2015-2016 Luke Shumaker')
license='AGPLv3+'
# This file is part of rvs.
diff --git a/modules/blobs/commit.l.sh b/modules/blobs/put.l.sh
index 54a2527..b3bc7e3 100644
--- a/modules/blobs/commit.l.sh
+++ b/modules/blobs/put.l.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-name=blobs/commit.l
-desc='Add a symbolic link to the repository'
+name=blobs/put.l
+desc='Put a symbolic link into the repository'
copyright=('2016 Luke Shumaker')
license='AGPLv3+'
# This file is part of rvs.
@@ -28,7 +28,7 @@ main() {
tmpfile="$(mktemp -t "${0##*/}.XXXXXXXXXX")"
trap 'rm -f -- "$tmpfile"' EXIT
readlink -n -- "$link" > "$tmpfile"
- "$RVS" commit.f "$tmpfile" 'l'
+ "$RVS" blobs/put.f "$tmpfile" 'l'
}
main "$@"
diff --git a/modules/blobs/commit.sh b/modules/blobs/put.sh
index 44a2465..c92f161 100644
--- a/modules/blobs/commit.sh
+++ b/modules/blobs/put.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-name=blobs/commit
-desc='Add files to the repository'
+name=blobs/put
+desc='Put files into the repository'
copyright=('2009-2010, 2015-2016 Luke Shumaker')
license='AGPLv3+'
# This file is part of rvs.
@@ -41,7 +41,7 @@ main() {
else
error 'File has unsupported file type: %s' "$file"
fi
- "$RVS" "commit.$type" "$file"
+ "$RVS" "blobs/put.$type" "$file"
done
}
diff --git a/modules/blobs/tree.sh b/modules/blobs/tree.sh
index f08db42..3953219 100644
--- a/modules/blobs/tree.sh
+++ b/modules/blobs/tree.sh
@@ -25,10 +25,10 @@ main() {
local id name prefix has_prefix last
case $# in
0) errusage;;
- 1) id=$1; name=.;;
- 2) id=$1; name=$2;; prefix=''; has_prefix=false;;
- 3) id=$1; name=$2;; prefix=$3; has_prefix=true;;
- 3) id=$1; name=$2;; prefix=$3; has_prefix=true; last=$4;;
+ 1) id=$1; name=. ; prefix=''; has_prefix=false; last='';;
+ 2) id=$1; name=$2; prefix=''; has_prefix=false; last='';;
+ 3) id=$1; name=$2; prefix=$3; has_prefix=true ; last='';;
+ 4) id=$1; name=$2; prefix=$3; has_prefix=true ; last=$4;;
*) errusage;;
esac
@@ -37,10 +37,12 @@ main() {
a='├── '
b='│   '
c='└── '
+ d='    '
else
a='|-- '
b='| '
c='`-- '
+ d=' '
fi
local pfix_self pfix_chld
@@ -48,25 +50,28 @@ main() {
pfix_self=''
pfix_chld=''
else
- pfix_self="$prefix$a"
- pfix_chld="$prefix$b"
- if [[ -n "$last" ]]; then
+ if [[ -z "$last" ]]; then
+ pfix_self="$prefix$a"
+ pfix_chld="$prefix$b"
+ else
pfix_self="$prefix$c"
+ pfix_chld="$prefix$d"
fi
fi
printf "%s$(_ '%s\t(%s)')\n" "$pfix_self" "$name" "$id"
if [[ "$id" == d:* ]]; then
local lastname
- lastname="$("$RVS" get.d "$id" /dev/stdout | sed -n '$/.*\t//p')"
+ lastname="$("$RVS" blobs/get.f "$id" /dev/stdout| sed -n $'$s/.*\t//p')"
local perm user group id name
+ IFS=$'\t'
while read -r perm user group id name; do
if [[ "$name" != "$lastname" ]]; then
- "$RVS" tree "$id" "$name" "$pfix_chld"
+ "$RVS" blobs/tree "$id" "$name" "$pfix_chld"
else
- "$RVS" tree "$id" "$name" "$pfix_chld" t
+ "$RVS" blobs/tree "$id" "$name" "$pfix_chld" t
fi
- done < <("$RVS" get.d "$id" /dev/stdout)
+ done < <("$RVS" blobs/get.f "$id" /dev/stdout)
fi
}
diff --git a/wrapper/inner.sh.m4 b/wrapper/inner.sh.m4
index 09c870d..bd67f02 100644
--- a/wrapper/inner.sh.m4
+++ b/wrapper/inner.sh.m4
@@ -64,17 +64,25 @@ errusage() {
}
_runcmd() {
- [[ $# -ge 1 ]] || errusage 1 'Usage: %q <command> [<args>]'
+ [[ $# -ge 1 ]] || errusage 1 'Usage: %q [<module>/]<command> [<args>]'
+ local mod=''
local cmd=$1; shift
local args_str=''
[[ $# -eq 0 ]] || printf -v args_str '%q ' "$@"
local exec_path="${!varname_EXEC_PATH:-$pkglibexecdir}"
+ if [[ "$cmd" == */* ]]; then
+ if ! [[ -f "${exec_path}/modules/$cmd" ]]; then
+ error 127 'Module/Command not found: %s' "$cmd"
+ fi
+ mod="${cmd%%/*}"
+ cmd="${cmd#*/}"
+ fi
shopt -s nullglob
local files=("${exec_path}"/modules/*/"$cmd")
if [[ ${#files[@]} -eq 0 ]]; then
- error 127 'Command not found: %s'"$cmd"
+ error 127 'Command not found: %s' "$cmd"
fi
files=("${files[@]#"${exec_path}/modules/"}")
@@ -90,15 +98,22 @@ _runcmd() {
local cwd
printf -v cwd '%q' "$PWD"
- make -j1 --no-print-directory --quiet \
+ make --no-print-directory --quiet \
-f "$exec_path/runcmd.mk" \
-C "$tmpdir/output" \
CWD="$cwd" \
- ARGS="$args_str" \
+ ARGS="${args_str//'$'/'$$'}" \
EXEC_PATH="$exec_path" \
TMPDIR="$tmpdir" \
-- "${files[@]}"
- exit $?
+ local r=$?
+ cd "$tmpdir/output"
+ if [[ -n "$mod" ]]; then
+ cat "$mod/$cmd"
+ else
+ grep -r ^ *
+ fi
+ return $r
}
_repo() {
diff --git a/wrapper/runcmd.mk b/wrapper/runcmd.mk
index 40e791e..407ffdc 100644
--- a/wrapper/runcmd.mk
+++ b/wrapper/runcmd.mk
@@ -11,6 +11,6 @@ export OUTPUT_DIR := $(realpath .)
$(MAKECMDGOALS): % : $(EXEC_PATH)/modules/%
mkdir -p -- '$(@D)'
- { (cd $(CWD) && '$<' $(ARGS)) | tee -- '$@' >&2; } 2>&1 | sed 's,^,$@:,' >&2
+ +(cd $(CWD) && '$<' $(ARGS)) > '$@'
include $(wildcard $(EXEC_PATH)/modules/*.mk)