代码之家  ›  专栏  ›  技术社区  ›  eswald

我应该如何从AdobeFlex文件收集依赖项?

  •  2
  • eswald  · 技术社区  · 16 年前

    我正在寻找一种从flex actionscript和mxml文件收集文件依赖项的方法。我希望MXML可以把它们吐出来(比如GCC的-M选项),但它的选项列表似乎没有任何相关的内容。我可以编写一个解析器,但是如果已经完成了,我宁愿不重新设计轮子,特别是考虑到涉及的两种非常不同的语言。特别是,星型导入和包内隐式导入可能很麻烦。

    有没有程序可以帮我做这个?

    2 回复  |  直到 15 年前
        1
  •  0
  •   coolnalu    16 年前

    我怀疑,由于MXMLC非常聪明并且正确地处理依赖关系,很少有人需要自己找出依赖关系,因此该工具可能还没有出现。

    我想分析import语句是可行的方法吗?

        2
  •  0
  •   eswald    15 年前

    mxmlc的-link report选项生成一个包含大多数适当信息的文件,但它报告嵌入资产的假文件名,并忽略包含的源文件。为了收集所有信息,我现在在makefile中有以下内容:

    .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)
    

    makefile中的所有mxmlc和compc命令现在都有-link报告,在.deps目录中生成一个适当命名的.xml文件。我仍然需要搜索嵌入指令和脚本指令的文件,但最困难的部分(确定要包含哪些类)已经为我完成了。我可以为每一步使用一个真正的解析器,但是grep、sed和cut对于给定的文件来说已经足够好了。

    推荐文章