Sublime text2でtinkerのビルドを行う

今回、 bitbucket へブログをホスティングするにあたって、 Tinkerer を使ってreST形式でこの投稿を書いています。

その際最近話題の sublime text2 を使っています。 このsublime text2には Build System(英語) という物があって、 いわゆる make を簡単に実行する事が可能です。

Tinkererの場合も同じように出来るようにビルドシステムをカスタマイズしてみました。

tinkererの問題点

当初は以下のように指定すれば良いと考えていました。

{
    "cmd": ["tinker", "-b"],
    "selector":  "text.restructuredtext"
}

しかしながら、この方法だと編集したファイルの階層で tinker -b が実行されるため、 カレントディレクトリが見つからずエラーになります。

そもそも、tinkererのビルド自体は tinker -b で可能ですが、任意の rootとなるパス を指定する事が出来ません。 tinker -b をカレントディレクトリに conf.py がない状態で実行すると以下の酔うなエラーが発生します。

Tinkerer must be run from your blog root (directory containing ‘conf.py’)

Sublime text2のビルドシステムに追加

そこで簡単なスクリプトを設定して、実行するようにします。

まず、tinkerのビルドを実行するスクリプトを準備しておきます。

ビルドスクリプトを準備

tinkerがtinkerのルートで実行する必要があるので、3つだけ上の階層に上がって tinker -b するだけのスクリプトですが...。

#!/bin/bash

# TINKER_PROJECT_BASE/2012/10/11/content.rst
cd ../../../
/usr/local/bin/tinker -b

これを適当なフォルダにおいておきます。 自分は ~/st2/bin/ 以下に置いて実行権を設定しておきます

sublime text2のパスを修正

そのままの設定だと、SublimeText2からは ~/st2/bin``が参照できないので、 環境設定に ``build_env を定義して上記 ~/st2/bin にパスを通しておきます。

{
    "build_env":
        {
        "PATH": "~/st2/bin"
    }
}

ビルドスクリプトを設定

Tools => Build System => New Build System を選択します。

{
    "cmd": ["tinker-build.sh", "-b"],
    "selector":  "text.restructuredtext"
}

selector に関しては 参考サイト を参照してください。 あとは任意のタイミングで ctr+B で勝手にビルドされます。

以上です。