Как мне собирать зависимости от файлов Adobe Flex? - PullRequest
2 голосов
/ 15 мая 2010

Я ищу способ сбора файловых зависимостей из файлов Flex ActionScript и MXML. Я надеялся, что mxmlc сможет выплюнуть их (например, параметр -M в gcc), но список его параметров не имеет ничего общего. Я мог бы написать парсер, но предпочел бы не изобретать велосипед, если это уже было сделано, особенно учитывая два совершенно разных языка. В частности, импорт звезд и неявный импорт в упаковке может быть проблематичным.

Есть ли программа для меня?

Ответы [ 2 ]

0 голосов
/ 17 мая 2010

Опция -link-report в mxmlc создает файл, содержащий большую часть соответствующей информации, за исключением того, что он сообщает поддельные имена файлов для встроенных ресурсов и игнорирует включенные исходные файлы. Чтобы собрать все, у меня теперь есть следующее в моем make-файле:

.deps/%.d: .deps/%.xml
    # $@: $<
    grep '<script name=./' $< | cut -f2 -d'"' | cut -f1 -d'(' | cut -f1 -d'$$' | sort -u  | sed -e "s|^$$(pwd)/||" > .deps/$*.f
    grep '\.mxml$$' .deps/$*.f | xargs grep -H 'mx:Script source' | sed -s 's|/[^/]*.mxml:.*source="\([^"]*\)".*|/\1|;' > .deps/$*.i
    for path in $$(grep -h '\.\(mxml\|as\|css\)$$' .deps/$*.[fi] | xargs grep '\bEmbed([^.)]' | \
        sed "s@\\(\\w\\+\\)/.*Embed([^'\")]*['\"][./]*\\([^'\"]*\\)['\"] *[,)].*@\\1/*/\\2@"); \
        do find */src -path "$$path"; done | sort -u > .deps/$*.e
    cat .deps/$*.[fie] | sed -e "s|^|$(flashpath)$*.swf $@ : |" > $@

# This includes targets, so should not be before the first target defined here.
built := $(wildcard .deps/*.xml)
include $(built:xml=d)

Все команды mxmlc и compc в make-файле теперь имеют -link-report, генерирующий файл с соответствующим именем .xml в каталоге .deps. Мне по-прежнему приходится искать в файлах директивы Embed и Script, но сложная часть (определение того, какие классы включаются) была сделана для меня. Я мог бы использовать настоящий парсер для каждого шага, но grep, sed и cut работали достаточно хорошо для файлов, как указано.

0 голосов
/ 15 мая 2010

Я подозреваю, что, поскольку mxmlc довольно умен и корректно обрабатывает зависимости, немногим людям нужно будет самим определять зависимости, и поэтому инструмент может и не появиться.

Я полагаю, что синтаксический анализ операторов import был бы подходящим вариантом?

...