Sync config from arch
- hypr/apps.lua - hypr/autostart.lua - hypr/envs.lua - hypr/hyprland.lua - hypr/hyprsunset.conf - hypr/input.lua - hypr/looknfeel.lua - hypr/omasettings.lua - hypr/xdph.conf - omarchy/branding/about.txt - omarchy/branding/screensaver.txt - omarchy/extensions/omarchy-menu.jsonc - omarchy/hooks/battery-low.d/play-warning-sound.sample - omarchy/hooks/font-set.d/show-font-notification.sample - omarchy/hooks/post-boot.d/weather.sample - omarchy/hooks/post-update.d/install-voxtype.hook - omarchy/hooks/post-update.d/setup-agent.hook - omarchy/hooks/post-update.d/setup-fingerprint.hook - omarchy/hooks/post-update.d/show-update-notification.sample - omarchy/hooks/pre-refresh-pacman.d/add-custom-repo.sample - omarchy/hooks/theme-set.d/show-theme-notification.sample - omarchy/shell.json - omarchy/shell.toml - omarchy/theme.name - omarchy/themes/azure-glow/README.md - omarchy/themes/azure-glow/alacritty.toml - omarchy/themes/azure-glow/btop.theme - omarchy/themes/azure-glow/hyprland.conf - omarchy/themes/azure-glow/hyprlock.conf - omarchy/themes/azure-glow/icons.theme - … 269 more
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
TMP=$(mktemp -d)
|
||||
trap 'rm -rf -- "$TMP"' EXIT
|
||||
|
||||
PLUGINS="$TMP/plugins"
|
||||
SEED="$TMP/seed"
|
||||
REMOTE="$TMP/origin.git"
|
||||
mkdir -p -- "$PLUGINS"
|
||||
|
||||
git init --bare -q "$REMOTE"
|
||||
git -C "$REMOTE" symbolic-ref HEAD refs/heads/main
|
||||
git init -q -b main "$SEED"
|
||||
git -C "$SEED" config user.name "Omaplug Tests"
|
||||
git -C "$SEED" config user.email "omaplug-tests@example.invalid"
|
||||
printf '{"id":"fixture"}\n' > "$SEED/manifest.json"
|
||||
git -C "$SEED" add manifest.json
|
||||
git -C "$SEED" commit -qm "initial"
|
||||
git -C "$SEED" remote add origin "$REMOTE"
|
||||
# Fixture pushes must not inherit the user's global hooks. Those hooks may
|
||||
# intentionally reject non-GitHub remotes, while this test uses a local bare
|
||||
# repository by design.
|
||||
git -C "$SEED" -c core.hooksPath=/dev/null push -q -u origin main
|
||||
|
||||
# Keep one checkout at the initial commit. It becomes behind after the second
|
||||
# upstream commit, and a local commit on a copy of it creates a divergence.
|
||||
git clone -q "$REMOTE" "$PLUGINS/behind"
|
||||
git clone -q "$REMOTE" "$PLUGINS/diverged"
|
||||
|
||||
printf '{"id":"fixture","version":2}\n' > "$SEED/manifest.json"
|
||||
git -C "$SEED" add manifest.json
|
||||
git -C "$SEED" commit -qm "upstream update"
|
||||
git -C "$SEED" -c core.hooksPath=/dev/null push -q
|
||||
|
||||
git clone -q "$REMOTE" "$PLUGINS/current"
|
||||
git clone -q "$REMOTE" "$PLUGINS/dirty"
|
||||
git clone -q "$REMOTE" "$PLUGINS/ahead"
|
||||
git clone -q "$REMOTE" "$PLUGINS/fetch-error"
|
||||
git clone -q "$REMOTE" "$PLUGINS/detached"
|
||||
|
||||
printf '\n' >> "$PLUGINS/dirty/manifest.json"
|
||||
git -C "$PLUGINS/detached" checkout -q --detach
|
||||
|
||||
git -C "$PLUGINS/ahead" config user.name "Omaplug Tests"
|
||||
git -C "$PLUGINS/ahead" config user.email "omaplug-tests@example.invalid"
|
||||
printf '{"id":"fixture","version":3}\n' > "$PLUGINS/ahead/manifest.json"
|
||||
git -C "$PLUGINS/ahead" add manifest.json
|
||||
git -C "$PLUGINS/ahead" commit -qm "local commit"
|
||||
|
||||
git -C "$PLUGINS/diverged" config user.name "Omaplug Tests"
|
||||
git -C "$PLUGINS/diverged" config user.email "omaplug-tests@example.invalid"
|
||||
printf '{"id":"fixture","local":true}\n' > "$PLUGINS/diverged/manifest.json"
|
||||
git -C "$PLUGINS/diverged" add manifest.json
|
||||
git -C "$PLUGINS/diverged" commit -qm "divergent local commit"
|
||||
|
||||
git -C "$PLUGINS/fetch-error" remote set-url origin "$TMP/missing.git"
|
||||
|
||||
mkdir -p -- "$PLUGINS/plain" "$PLUGINS/no-origin"
|
||||
printf '{"id":"plain"}\n' > "$PLUGINS/plain/manifest.json"
|
||||
printf '{"id":"no-origin"}\n' > "$PLUGINS/no-origin/manifest.json"
|
||||
git init -q "$PLUGINS/no-origin"
|
||||
git -C "$PLUGINS/no-origin" config user.name "Omaplug Tests"
|
||||
git -C "$PLUGINS/no-origin" config user.email "omaplug-tests@example.invalid"
|
||||
git -C "$PLUGINS/no-origin" add manifest.json
|
||||
git -C "$PLUGINS/no-origin" commit -qm "local plugin"
|
||||
ln -s -- "$PLUGINS/current" "$PLUGINS/symlinked"
|
||||
|
||||
OUTPUT=$($ROOT/plugin-state.sh "$PLUGINS")
|
||||
|
||||
state_for() {
|
||||
local id="$1"
|
||||
awk -F '\t' -v id="$id" '$1 != "CHECK" && $2 == id { print $1 }' <<< "$OUTPUT"
|
||||
}
|
||||
|
||||
detail_for() {
|
||||
local id="$1"
|
||||
awk -F '\t' -v id="$id" '$1 != "CHECK" && $2 == id { print $4 }' <<< "$OUTPUT"
|
||||
}
|
||||
|
||||
assert_eq() {
|
||||
local expected="$1"
|
||||
local actual="$2"
|
||||
local label="$3"
|
||||
if [[ $actual != "$expected" ]]; then
|
||||
printf 'FAIL: %s: expected %q, got %q\n' "$label" "$expected" "$actual" >&2
|
||||
printf '%s\n' "$OUTPUT" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
assert_eq CURRENT "$(state_for current)" current
|
||||
assert_eq UPDATE "$(state_for behind)" behind
|
||||
assert_eq LOCAL_CHANGES "$(state_for dirty)" dirty
|
||||
assert_eq modified "$(detail_for dirty)" dirty-detail
|
||||
assert_eq LOCAL_CHANGES "$(state_for detached)" detached
|
||||
assert_eq detached "$(detail_for detached)" detached-detail
|
||||
assert_eq LOCAL_CHANGES "$(state_for ahead)" ahead
|
||||
assert_eq ahead "$(detail_for ahead)" ahead-detail
|
||||
assert_eq LOCAL_CHANGES "$(state_for diverged)" diverged
|
||||
assert_eq diverged "$(detail_for diverged)" diverged-detail
|
||||
assert_eq LOCAL "$(state_for plain)" plain
|
||||
assert_eq LOCAL "$(state_for no-origin)" no-origin
|
||||
assert_eq LOCAL "$(state_for symlinked)" symlinked
|
||||
assert_eq ERROR "$(state_for fetch-error)" fetch-error
|
||||
|
||||
current_url=$(awk -F '\t' '$1 == "CURRENT" && $2 == "current" { print $3 }' <<< "$OUTPUT")
|
||||
assert_eq "$REMOTE" "$current_url" origin-url-without-trailing-space
|
||||
|
||||
printf 'plugin-state-test: ok\n'
|
||||
Reference in New Issue
Block a user