diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-03-14 21:26:47 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-03-14 21:26:47 -0400 |
commit | 94cacc84d322429e70485dea49bb858f48aa26c8 (patch) | |
tree | 2d6a493697e8e1b6db655a3bccc0869251db8e97 /modules/blobs/commit.f.sh | |
parent | 634f61cc8b4e096853c61686ccd535fbd45e9158 (diff) |
stuff
Diffstat (limited to 'modules/blobs/commit.f.sh')
-rw-r--r-- | modules/blobs/commit.f.sh | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/modules/blobs/commit.f.sh b/modules/blobs/commit.f.sh index 098be9d..233f7bb 100644 --- a/modules/blobs/commit.f.sh +++ b/modules/blobs/commit.f.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash -# rvs blobs/commit.f - add a plain file to the repository -# Copyright (C) 2009-2010, 2015-2016 Luke Shumaker -# +name=blobs/commit.f +desc='Add a plain file to the repository' +copyright=('2009-2010, 2015-2016 Luke Shumaker') +license='AGPLv3+' # This file is part of rvs. # # This program is free software: you can redistribute it and/or modify @@ -17,21 +18,32 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -. "${0%/*}/_stdio.sh" - usage='FILENAME [TYPE]' -case $# in - 0) errusage;; - 1) infile=$1; type=f;; - 2) infile=$1; type=$2;; - *) errusage;; -esac +doc="Note that FILENAME must be a regular file; character devices such as +/dev/stdin or /dev/fd/n won't work." + +. "${0%/*}/_shlib.sh" + +main() { + case $# in + 0) errusage;; + 1) infile=$1; type=f;; + 2) infile=$1; type=$2;; + *) errusage;; + esac + + if ! [[ -f "$infile" ]]; then + error 'Not a regular file: %s' "$infile" + fi -hash="$(<"$file" sha1sum | cut -d ' ' -f1)" -outfile="$RVS_REPO/blobs/$hash" -if [ ! -f "$outfile" ]; then - mkdir -p -- "${outfile%/*}" - < "$infile" gzip -9 > "$outfile" -fi -printf '%s:%s\n' "$type" "$hash" + hash="$(<"$infile" sha1sum | cut -d ' ' -f1)" + outfile="$RVS_REPO/blobs/$hash" + if [ ! -f "$outfile" ]; then + mkdir -p -- "${outfile%/*}" + < "$infile" gzip -9 > "$outfile.tmp" + mv -T -- "$outfile.tmp" "$outfile" + fi + printf '%s:%s\n' "$type" "$hash" +} +main "$@" |