diff --git a/kicad-git-setup b/kicad-git-setup index 979805f9dcdfaf1b46569efd46eb3e6986116752..4db7bc1458975657e1651e08179a0c0ac04bcd33 100755 --- a/kicad-git-setup +++ b/kicad-git-setup @@ -2,29 +2,24 @@ shopt -s nullglob -kicad-sch-filter() { - cat $(realpath $(dirname $0)/kicad-sch-filter) -} - -kicad-pro-filter() { - cat $(realpath $(dirname $0)/kicad-pro-filter) -} - mkdir -p ~/.config/git for s in kicad-pro-filter kicad-sch-filter ; do - if ! declare -f -F $s > /dev/null ; then - echo "${s} not defined" - continue + FILTER=$(realpath $(dirname $0)/kicad-sch-filter) + if [ -L ~/.config/git/${s} ] ; then + if [ $(readlink ~/.config/git/${s}) != ${FILTER} ] ; then + echo REPLACE link + rm ~/.config/git/${s} + fi + elif [ -f ~/.config/git/${s} ] ; then + if diff -q <($s) <(cat ~/.config/git/${s}) ; then + echo REPLACE file + rm ~/.config/git/${s} + fi fi - if [ ! -f ~/.config/git/${s} ] ; then - echo "Creating ~/.config/git/${s}" - cat <($s) > ~/.config/git/${s} - chmod +x ~/.config/git/${s} - elif ! diff <($s) <(cat ~/.config/git/${s}) > /dev/null ; then - echo "Updating ~/.config/git/${s}" - cat <($s) > ~/.config/git/${s} - chmod +x ~/.config/git/${s} + if [ ! -L ~/.config/git/${s} ] ; then + ln -s $FILTER ~/.config/git/${s} fi + done SCHEMATICS=( *.sch ) @@ -52,7 +47,7 @@ for s in ${PROJECT[@]} ; do if [[ "$s" =~ (.*)\.pro ]] ; then BASE=${BASH_REMATCH[1]} # Autoroute files - # GITIGNORE+=( ${BASE}.bin ${BASE}.dsn ${BASE}.ses ) + GITIGNORE+=( ${BASE}.bin ${BASE}.dsn ${BASE}.ses ) # Other stuff GITIGNORE+=( ${BASE}-rescue.lib ) fi @@ -78,6 +73,7 @@ for a in "${GITATTRIBUTES[@]}" ; do echo "${a}" >> .gitattributes fi done + FILTER=( "filter.kicad-pro.clean ~/.config/git/kicad-pro-filter clean %f" ) FILTER+=( "filter.kicad-pro.smudge ~/.config/git/kicad-pro-filter smudge %f" ) FILTER+=( "filter.kicad-sch.clean ~/.config/git/kicad-sch-filter clean %f" )