まず、build_js.pyを作る。
print 'build_js is here!'まだ呼び出しが行われることを確認するだけなので、これだけにしておく。
で、setup.pyをいじる。
from distutils.dist import Distribution def xxx(self): print 'Distribution:has_js' return self.js and len(self.js) > 0 Distribution.has_js = xxx from distutils.command.build import build def yyy(self): print 'build:has_js' return self.distribution.has_js() build.has_js = yyy build.sub_commands.append( ('build_js', build.has_js),) from distutils.dist import Distribution orig = Distribution.__init__ def myinit(self, attrs): self.js = None orig(self, attrs) Distribution.__init__ = myinit def CompiledJS(*args, **attr): return ['hogehoge'] setup( ... js=CompiledJS('/var/www/static/notepad.c.js', ['./src/notepad.js'], ['/home/nori/lib/closure/'], '/home/nori/bin/closure/compiler.jar', ['ADVANCED_OPTIMIZATIONS'], ), ... )
すると実行されて
[nori@shinano]~/Desktop/study/JavaScript/closure-proj% python setup.py build running build build:has_js Distribution:has_js running build_js error: invalid command 'build_js'となる。あと一息。build_js.pyがloadされるように細工する必要がある。
クラスが変更されるのでbdistからbuildが呼び出された場合でも実行される。
[nori@shinano]~/Desktop/study/JavaScript/closure-proj% python setup.py bdist running bdist running bdist_dumb running build build:has_js Distribution:has_js running build_js error: invalid command 'build_js'
0 件のコメント:
コメントを投稿