* Add plugin cloning via menu * Split plugin commands by action * Keep plugin enablement in action commands * Remove unused plugin edit command * Simplify plugin rescan arguments * Assume Omarchy shell is running for plugin commands * Remove plugin compatibility dispatcher * Flatten plugin clone command * Keep only shared plugin helpers * Remove plugin rescan wrapper * Keep plugin commands self-contained * Simplify plugin clone lifecycle
59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
#!/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" <<JSON
|
|
{
|
|
"schemaVersion": 1,
|
|
"id": "$id",
|
|
"name": "$name",
|
|
"version": "1.0.0",
|
|
"kinds": ["bar-widget"],
|
|
"entryPoints": { "barWidget": "Widget.qml" },
|
|
"barWidget": {
|
|
"displayName": "$name",
|
|
"category": "Test",
|
|
"allowMultiple": false
|
|
}
|
|
}
|
|
JSON
|
|
printf 'import QtQuick\nItem {}\n' >"$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"
|