なっく日報

技術やら生活やらのメモ

Invokeを少し触ってみた

Invokeとは?

github.com

Python製のタスクランナーだそう。make, rake, gulpみたいな。

↓みたいにタスクを書いて、invoke clean buildみたいに実行できると。

from invoke import run, task

@task
def clean(docs=False, bytecode=False, extra=''):
    patterns = ['build']
    if docs:
        patterns.append('docs/_build')
    if bytecode:
        patterns.append('**/*.pyc')
    if extra:
        patterns.append(extra)
    for pattern in patterns:
        run("rm -rf %s" % pattern)

@task
def build(docs=False):
    run("python setup.py build")
    if docs:
        run("sphinx-build docs docs/_build")

どこで使われている?

Fabric(https://github.com/fabric/fabric/)で。

http://www.pyinvoke.org/faq.html#why-was-invoke-split-off-from-the-fabric-project

↑を読むと、Fabricが仕事し過ぎなため、ライブラリを分割した模様。

サンプルは?

非常にシンプルで直感的に使えるのですが、事例が少ない。。

日本語ではこちらのサイトくらい www.hexacosa.net

一番いいのはFabricの事例と、作者のタスク集みたいなのを見ること。

実戦で使ってみる?

ちょっと悩む。

makeとかrakeで何とかならんこともないし。

While fully usable, Invoke is still pre-1.0 software and has no backwards compatibility 

なので、API変更もあり得るし。

どうしてもPythonで全部統一したい人は使ってみたらよいのではないでしょうか・・・