#!/bin/bash set -euo pipefail source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh" TMPDIR=$(mktemp -d) trap 'rm -rf "$TMPDIR"' EXIT write_plugin() { local dir="$1" local id="$2" local name="$3" mkdir -p "$dir" cat >"$dir/manifest.json" <"$dir/Widget.qml" } stub_dir="$TMPDIR/stubs" mkdir -p "$stub_dir" cat >"$stub_dir/omarchy-shell" <<'STUB' #!/bin/bash exit 0 STUB chmod +x "$stub_dir/omarchy-shell" test_home="$TMPDIR/home" write_plugin "$test_home/.config/omarchy/plugins/different-folder" "acme.same" "Installed" incoming="$TMPDIR/incoming" write_plugin "$incoming" "acme.same" "Incoming" git -C "$incoming" init -q git -C "$incoming" add . git -C "$incoming" -c user.name=Test -c user.email=test@example.com commit -qm "Initial" output=$(HOME="$test_home" OMARCHY_PATH="$ROOT" PATH="$stub_dir:$ROOT/bin:$PATH" \ omarchy-plugin-add "$incoming" --yes 2>&1) && fail "plugin add accepts an id already installed under another directory" "$output" grep -qF "plugin id 'acme.same' is already used by" <<<"$output" || fail "plugin add explains the installed id collision" "$output" [[ ! -e $test_home/.config/omarchy/plugins/acme.same ]] || fail "plugin add leaves a target behind after refusing a duplicate id" pass "plugin add refuses an installed manifest id regardless of directory name"