summaryrefslogtreecommitdiff
path: root/modules/blobs/commit.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/blobs/commit.sh')
-rw-r--r--modules/blobs/commit.sh51
1 files changed, 30 insertions, 21 deletions
diff --git a/modules/blobs/commit.sh b/modules/blobs/commit.sh
index 01bc338..44a2465 100644
--- a/modules/blobs/commit.sh
+++ b/modules/blobs/commit.sh
@@ -1,7 +1,8 @@
#!/usr/bin/env bash
-# rvs blobs/commit - add a file to the repository
-# Copyright (C) 2009-2010, 2015-2016 Luke Shumaker
-#
+name=blobs/commit
+desc='Add files 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,23 +18,31 @@
# 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='[FILES...]'
-if [[ $# -lt 1 ]]; then
- set -- .
-fi
+usage=('[FILES...]')
+. "${0%/*}/_shlib.sh"
-for file in "$@"; do
- local type
- if test -L "$file"; then
- type=l
- elif test -f "$file"; then
- type=f
- elif test -d "$file"; then
- type=d
- else
- error 'Unsupported file type: %s' "$file"
+main() {
+ if [[ $# -lt 1 ]]; then
+ set -- .
fi
- "$RVS" "commit.$type" "$file"
-done
+
+ for file in "$@"; do
+ if ! stat -c '' -- "$file" &>/dev/null; then
+ error 'No such file or directory: %s' "$file"
+ fi
+
+ local type
+ if test -L "$file"; then
+ type=l
+ elif test -f "$file"; then
+ type=f
+ elif test -d "$file"; then
+ type=d
+ else
+ error 'File has unsupported file type: %s' "$file"
+ fi
+ "$RVS" "commit.$type" "$file"
+ done
+}
+
+main "$@"