Lib/scripts/install_connector_generator_plugin.sh
2026-06-21 20:50:05 +03:00

71 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
LIB_ROOT="$(cd -- "$SCRIPT_DIR/.." && pwd)"
PLUGIN_SRC="$LIB_ROOT/plugins/connector-generator/connector_generator_plugin"
FORCE=0
for arg in "$@"; do
case "$arg" in
--force)
FORCE=1
;;
-h|--help)
echo "Usage: $0 [--force]"
echo
echo "Install Connector Generator plugin as a symlink into KiCad user plugins."
echo " --force replace existing connector_generator_plugin symlink/directory"
exit 0
;;
*)
echo "Unknown argument: $arg" >&2
exit 2
;;
esac
done
if [[ ! -d "$PLUGIN_SRC" ]]; then
echo "Connector Generator plugin source not found: $PLUGIN_SRC" >&2
exit 1
fi
version=""
if command -v kicad-cli >/dev/null 2>&1; then
version="$(
kicad-cli version 2>/dev/null \
| awk 'match($0, /[0-9]+\.[0-9]+/) { print substr($0, RSTART, RLENGTH); exit }'
)"
fi
if [[ -z "$version" ]]; then
version="10.0"
fi
PLUGIN_DIR="${KICAD_PLUGIN_DIR:-$HOME/.local/share/kicad/$version/scripting/plugins}"
PLUGIN_DEST="$PLUGIN_DIR/connector_generator_plugin"
mkdir -p "$PLUGIN_DIR"
if [[ -e "$PLUGIN_DEST" || -L "$PLUGIN_DEST" ]]; then
current="$(readlink -f "$PLUGIN_DEST" 2>/dev/null || true)"
source_real="$(readlink -f "$PLUGIN_SRC")"
if [[ "$current" != "$source_real" ]]; then
if [[ "$FORCE" != "1" ]]; then
echo "Destination already exists and is not this plugin:" >&2
echo " $PLUGIN_DEST" >&2
echo "Use --force to replace it or set KICAD_PLUGIN_DIR." >&2
exit 1
fi
rm -rf "$PLUGIN_DEST"
ln -s "$PLUGIN_SRC" "$PLUGIN_DEST"
fi
else
ln -s "$PLUGIN_SRC" "$PLUGIN_DEST"
fi
echo "Connector Generator plugin installed:"
echo " $PLUGIN_DEST -> $PLUGIN_SRC"
echo
echo "Restart KiCad, then open:"
echo " PCB Editor -> Tools -> External Plugins -> Generate Connector Symbols"