Skip to content
Snippets Groups Projects
Commit 2309790b authored by Richard Hartmann's avatar Richard Hartmann
Browse files

Add more error handling

parent e3ee7bd1
Branches
Tags
No related merge requests found
...@@ -13,5 +13,9 @@ ...@@ -13,5 +13,9 @@
* 53: Could not move file * 53: Could not move file
* 54: Directory exists * 54: Directory exists
* 55: File exists * 55: File exists
* 56:
* 57: Could not write to file
* 57: Could not delete directory
* 59: Could not delete file
* 99: Error code reserved for actions that should never happen * 99: Error code reserved for actions that should never happen
...@@ -68,8 +68,7 @@ clone() { ...@@ -68,8 +68,7 @@ clone() {
} }
delete() { delete() {
old_dir="$PWD" cd "$HOME" || fatal "could not enter '$HOME'" 11
cd "$HOME"
use use
info "This operation WILL DETROY DATA!" info "This operation WILL DETROY DATA!"
files=$(git ls-files) files=$(git ls-files)
...@@ -84,8 +83,7 @@ To continue, type \"Yes, do as I say\"" ...@@ -84,8 +83,7 @@ To continue, type \"Yes, do as I say\""
for file in $files; do for file in $files; do
rm -f $file || info "could not delete '$file', continuing with deletion" rm -f $file || info "could not delete '$file', continuing with deletion"
done done
rmdir "$GIT_DIR" || info "could not delete '$GIT_DIR'" rmdir "$GIT_DIR" || error "could not delete '$GIT_DIR'"
cd "$old_dir"
} }
enter() { enter() {
...@@ -100,7 +98,7 @@ git_dir_exists() { ...@@ -100,7 +98,7 @@ git_dir_exists() {
init() { init() {
[ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10 [ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10
export GIT_WORK_TREE="$HOME" export GIT_WORK_TREE="$HOME"
mkdir -p "$GIT_WORK_TREE" mkdir -p "$GIT_WORK_TREE" || fatal "could not create '$GIT_WORK_TREE'" 50
cd "$GIT_WORK_TREE" || fatal "could not enter '$GIT_WORK_TREE'" 11 cd "$GIT_WORK_TREE" || fatal "could not enter '$GIT_WORK_TREE'" 11
git init git init
setup setup
...@@ -126,7 +124,7 @@ run() { ...@@ -126,7 +124,7 @@ run() {
seed_gitignore() { seed_gitignore() {
use use
cd "$HOME" cd "$HOME" || fatal "could not enter '$HOME'" 11
gitignores=$(for file in $(git ls-files); do gitignores=$(for file in $(git ls-files); do
while true; do while true; do
echo $file; new="${file%/*}" echo $file; new="${file%/*}"
...@@ -135,14 +133,15 @@ seed_gitignore() { ...@@ -135,14 +133,15 @@ seed_gitignore() {
done; done;
done | sort -u) done | sort -u)
tempfile=$(mktemp) || fatal "could not create tempfile" 51 tempfile=$(mktemp) || fatal "could not create tempfile" 51
echo '*' > "$tempfile" echo '*' > "$tempfile" || fatal "could not write to '$tempfile'" 57
for gitignore in $gitignores; do for gitignore in $gitignores; do
echo "$gitignore" | sed 's/^/!/' >> "$tempfile" echo "$gitignore" | sed 's/^/!/' >> "$tempfile" || fatal "could not write to '$tempfile'" 57
[ -d "$gitignore" ] && echo "$gitignore/*" | sed 's/^/!/'>> "$tempfile" [ -d "$gitignore" ] && echo "$gitignore/*" | sed 's/^/!/'>> "$tempfile" || fatal "could not write to '$tempfile'" 57
done done
diff -N "$tempfile" "$HOME/.gitignore.d/$VCSH_REPO_NAME" > /dev/null && if [ diff -N "$tempfile" "$HOME/.gitignore.d/$VCSH_REPO_NAME" > /dev/null ]; then
rm -f "$tempfile" && rm -f "$tempfile" || error "could not delete '$tempfile'"
exit exit
fi
if [ -e "$HOME/.gitignore.d/$VCSH_REPO_NAME" ]; then if [ -e "$HOME/.gitignore.d/$VCSH_REPO_NAME" ]; then
info "'$HOME/.gitignore.d/$VCSH_REPO_NAME' differs from new data, moving it to '$HOME/.gitignore.d/$VCSH_REPO_NAME.bak'" info "'$HOME/.gitignore.d/$VCSH_REPO_NAME' differs from new data, moving it to '$HOME/.gitignore.d/$VCSH_REPO_NAME.bak'"
mv -f "$HOME/.gitignore.d/$VCSH_REPO_NAME" "$HOME/.gitignore.d/$VCSH_REPO_NAME.bak" || mv -f "$HOME/.gitignore.d/$VCSH_REPO_NAME" "$HOME/.gitignore.d/$VCSH_REPO_NAME.bak" ||
...@@ -157,7 +156,7 @@ setup() { ...@@ -157,7 +156,7 @@ setup() {
git config core.worktree "$GIT_WORK_TREE" git config core.worktree "$GIT_WORK_TREE"
git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME" git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
git config vcsh.vcsh 'true' git config vcsh.vcsh 'true'
touch "$HOME/.gitignore.d/$VCSH_REPO_NAME" touch "$HOME/.gitignore.d/$VCSH_REPO_NAME" || error "could not touch '$HOME/.gitignore.d/$VCSH_REPO_NAME'"
git add "$HOME/.gitignore.d/$VCSH_REPO_NAME" git add "$HOME/.gitignore.d/$VCSH_REPO_NAME"
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment