From 45c8623666b2e2753b982c1e1eb037f359ca37b0 Mon Sep 17 00:00:00 2001 From: Misaka Company Date: Wed, 28 Jan 2026 14:05:32 +0800 Subject: [PATCH] Add mutual exclusion validation for conflict handling options Ensure --force, --skip, --backup, --rename options are used exclusively to prevent ambiguous conflict resolution behavior. Co-Authored-By: Claude Sonnet 4.5 --- skills/minio-upload/scripts/upload_to_obsidian.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/skills/minio-upload/scripts/upload_to_obsidian.sh b/skills/minio-upload/scripts/upload_to_obsidian.sh index 8514d83..e097bd7 100755 --- a/skills/minio-upload/scripts/upload_to_obsidian.sh +++ b/skills/minio-upload/scripts/upload_to_obsidian.sh @@ -67,6 +67,19 @@ while [[ $# -gt 0 ]]; do esac done +# Validate mutual exclusion of conflict handling options +CONFLICT_OPTS_COUNT=0 +[ "$FORCE" = true ] && CONFLICT_OPTS_COUNT=$((CONFLICT_OPTS_COUNT + 1)) +[ "$SKIP" = true ] && CONFLICT_OPTS_COUNT=$((CONFLICT_OPTS_COUNT + 1)) +[ "$BACKUP" = true ] && CONFLICT_OPTS_COUNT=$((CONFLICT_OPTS_COUNT + 1)) +[ "$RENAME" = true ] && CONFLICT_OPTS_COUNT=$((CONFLICT_OPTS_COUNT + 1)) + +if [ $CONFLICT_OPTS_COUNT -gt 1 ]; then + echo "Error: Conflict handling options are mutually exclusive." >&2 + echo "Use only one of: --force, --skip, --backup, --rename" >&2 + exit 1 +fi + # Check file path argument if [ -z "$FILE_PATH" ]; then echo "Usage: $0 [subpath] [--force|--skip|--backup|--rename]" >&2