До недавнего времени, когда я сохранил изменение в .dot-файле в TextMate, Graphviz обнаружит изменение и перерисовку. Теперь это не так. Я пробовал переместить файл в разные места безрезультатно. Это относится ко всем файлам.Graphviz не обновляет
ответ
Я не использую TextMate, поэтому я не могу предоставить конкретный ответ TextMate (хотя я нашел this answer on SuperUser, что может быть полезно). Я думал, что, возможно, Folder Actions, но они работают только при добавлении файла в папку, а не при изменении существующего файла. Поэтому я решил искать ответ, основанный на bash. Я наткнулся на fswatch. Используя это, вы можете выполнить то, что хотите.
Создайте следующую структуру папок:
Путь я осуществил это, fswatch
и rundot.sh
должен находиться в той же папке, что и ваши файлы GraphViz.
rundot.sh
перебирает файлов GraphViz и компилирует их в случае необходимости:
#!/bin/sh
graphvizExtension=gv #Change "gv" to the extension you use for your Graphviz files
graphicFormat=png #Change "png" to the file format you are using
for gvfile in *.$graphvizExtension
do
filename=$(basename "$gvfile")
outfile="../output/${filename%.*}.$graphicFormat" #build output file name
if [[ ! -f $outfile || $gvfile -nt $outfile ]]; then
#output file doesn't exist or Graphviz file is newer than output file
echo "compiling" $gvfile "to" $outfile
dot -T$graphicFormat "$gvfile" -o"$outfile"
else
#This is mainly for testing. You can delete the else clause if you want
echo "not necessary to compile" $gvfile
fi
done
Перейти к gv
папку в терминале и введите следующую команду:
./fswatch . "./rundot.sh"
Теперь всякий раз, когда происходит изменение в gv
, любой файл Graphviz, который является более новым, чем его соответствующий выходной файл, будет скомпилирован, а его вывод будет сохранен в папке output
. Вы можете хранить выходные файлы в папке gv
, но при изменении выходного файла он снова вызывает rundot.sh
. Моя первоначальная версия скомпилировала каждый файл Graphviz каждый раз и, таким образом, была завершена в бесконечном цикле. Эта версия, которая проверяет временные метки, снова будет активирована, но второй раз не изменит выходные файлы, поэтому не будет застревать в бесконечном цикле.
Код для извлечения базового имени файла был получен from this answer.
- 1. Graphviz исполняемый не нашел
- 2. Graphviz, не rankdir
- 3. Graphviz, gvpr не признается
- 4. Graphviz не генерирует gif
- 5. Вопросы о API Graphviz (Graphviz как библиотека)
- 6. Подграф Graphviz не отображается визуально
- 7. Ubuntu graphviz 'sfdp' не работает
- 8. Ruby-Graphviz не делает png
- 9. Dask не устанавливает зависимость graphviz
- 10. GraphViz fixedsize = shape не работает
- 11. Graphviz [outputorder = edgefirst] не работает
- 12. GraphViz - org.graphstream.graph.IdAlreadyInUseException
- 13. Graphviz Подзаголовок
- 14. Альтернативы Graphviz?
- 15. График GraphViz
- 16. Поле выборочно обновляет (и не обновляет)
- 17. Graphviz - Python: Создание формы узла в двойной эллипс с Graphviz
- 18. Скрытые ребра в Graphviz
- 19. graphviz: динамическое создание узла
- 20. Parsing Точечный язык Graphviz
- 21. Перекрытие края в GraphViz
- 22. использованием Graphviz с кварт
- 23. GraphViz set page width
- 24. Пользовательский Neo4j GraphViz Writer
- 25. Граппа (Graphviz) Учебник?
- 26. graphviz - сравнить графические деревья
- 27. Sphinx center graphviz директива
- 28. Горизонтальные деревья в Graphviz
- 29. PHP GraphViz Документация
- 30. Ошибка сегментации Graphviz
В общем, GraphViz не будет автоматически перерисовывать измененный файл '.dot' больше, чем любая программа будет запускаться автоматически. Должна быть какая-то другая проверка программы, чтобы увидеть, устарел ли какой-либо из файлов изображений в отношении своих файлов '.dot'. Регулярное выполнение 'make' с соответствующим' makefile' будет делать это. Я сам не использую Textmate, но я подозреваю, что это может быть Textmate, который делает это за вас. Я добавил «Textmate» в список тегов, чтобы узнать, может ли помочь эксперт Textmate. – Simon