При использовании git вы можете использовать драйвер фильтра для прозрачной (1) декомпиляции файлов SCPT, чтобы фиксировать только исходный код AppleScript (это называется «очистка» двоичного SCPT) и (2) перекомпилировать возвращаться к SCPT при извлечении (называемое «размывание» источника AppleScript).
Сначала добавьте следующий скрипт оболочки с именем git-ascr-filter
в /usr/local/bin
:
#!/bin/sh
if [ $# -ne 2 ]; then
echo "Usage: $0 --clean/--smudge FILE">&2
exit 1
else
if [ "$1" = "--clean" ]; then
osadecompile "$2" | sed 's/[[:space:]]*$//'
elif [ "$1" = "--smudge" ]; then
TMPFILE=`mktemp -t tempXXXXXX`
if [ $? -ne 0 ]; then
echo "Error: \`mktemp' failed to create a temporary file.">&2
exit 3
fi
if ! mv "$TMPFILE" "$TMPFILE.scpt" ; then
echo "Error: Failed to create a temporary SCPT file.">&2
rm "$TMPFILE"
exit 4
fi
TMPFILE="$TMPFILE.scpt"
# Compile the AppleScript source on stdin.
if ! osacompile -l AppleScript -o "$TMPFILE" ; then
rm "$TMPFILE"
exit 5
fi
cat "$TMPFILE" && rm "$TMPFILE"
else
echo "Error: Unknown mode '$1'">&2
exit 2
fi
fi
Убедитесь, что chmod a+x
скрипт.
Настройте фильтр «ascr», запустив:
git config filter.ascr.clean "git-ascr-filter --clean %f"
git config filter.ascr.smudge "git-ascr-filter --smudge %f"
Затем добавьте к .gitattributes
:
*.scpt filter=ascr
Теперь, когда вы вносите изменения в файл SCPT и git add
, декомпилированный источник AppleScript будет помещен вместо двоичного SCPT. Кроме того, всякий раз, когда вы извлекаете файл SCPT (который действительно хранится в хранилище в виде большого двоичного объекта AppleScript), файл SCPT воссоздается на диске.