perl で swc ファイルを作るスクリプトを書いた
前回までの流れ
過去記事
perlをワンライナーで便利な使い方(compcを使う時に便利)
compc で swc ファイルを作る際に外部ライブラリ(swc)と共にビルドする方法
前回までの記事にもあるように地味にこれの行為は毎回するのめんどくさいんです。
わざわざコピペしたりファイル追加されたらめんどくさいこと、この上なし。
SDK でせずに Flex Builder 使えばいいじゃんと思うが。。。
それは全くその通りですw
あと、もーすぐ ASDebuger ってのを公開する予定。みなさんよろしくですw
スクリプト
compc.pl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/usr/bin/perl # Author: dealforest # Last Update: 2008-12-13 # Version: 0.01 use strict; use warnings; use File::Find::Rule; my $project = "ASDebuger"; my $lib_dir = "lib"; # 外部 swc を利用する場合は ./lib 以下にいれておけばおk my $output_dir = "."; # 生成した swc をおくところ my $package_dir = "net/dealforest"; #swc にする as ファイルのある場所 my $swc_name = "$project.swc"; # swc のファイル名 $swc_name = "$project-$ARGV[0].swc" if $ARGV[0]; my $files = join ' ', map { s{\.as$}{}; s{/}{\.}g; $_ } File::Find::Rule->file ->name('*.as') ->in($package_dir); `compc -output $output_dir/$swc_name -source-path . -compiler.library-path $lib_dir --include-classes $files`; |
ディレクトリ構成
[dealforest@mac] tree
.
|-- compc.pl
|-- lib
| |-- asreflect-1.00-rc1.swc
|-- net
`-- dealforest (<- $package_dir)
`-- ASDebuger
|-- Constant.as
|-- DebugerManager.as
|-- Logger.as
|-- PluginManager.as
|-- debugers
| |-- DebugerBase.as
| |-- FirebugDebuger.as
| |-- IDebuger.as
| |-- SimpleLogger.as
| `-- TraceDebuger.as
|-- plugin
|-- Dumper.as
|-- FlashPlayer.as
|-- IPlugin.as
|-- MemorySnapShot.as
`-- PluginBase.as
簡単な説明
これ完璧に自分の環境用なので、動かなくても保証しませんw
一応, File::Find::Rule を使ってるので OS 間の差異はないはず。
File::Find::Rule->file ->name('*.as') ->in($package_dir); # net/dealforest/ASDebuger/Constant.as ....
ここで net/dealforest 以下のファイルをとってきてます。
このままだと actionscirpt の名前空間と違うので変換します。
/ -> .
.as -> 削除
これを空白で文字連結をして --include-classes に渡しています。
内容自体はたいしたことしてません。
Find::File::Rule に関してはここがわかりやすいと思います。(CPAN)
おまけ
perl compc.pl #ASDebuger.swc ができる perl compc.pl 0.01 #ASDebuger-0.01.swc ができる
