71 lines
1.9 KiB
Bash
Executable file
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"
|