シェルスクリプトでSphinxのビルドの前処理をする
bashのスクリプトで、Sphinx(ablog)のビルドの処理の際の前処理をしてみました。
環境はMacOSですが、Linuxでも同じだと思います。
目次
解決したい課題
ブログ用にablogというSphinxベースのシステムを使っています。このablogはアップデートした部分だけをHTMLに変換してくれるという便利なものなのですが、どういうわけか特定のページだけは既存のHTMLが存在すると更新をしてくれなくなります。
Finderでいちいちファイルを削除してからビルドしているのですが、面倒なのでスクリプトにしてしまいました。
どうせreStructuredTextをHTMLに変換するときにシェルを使いますし。
どう解決するか
単純にファイルを削除するだけですので、bashのシェルスクリプトにしてしまいます。
#!/bin/bash
set -Ceu
rm -v ./_website/all_post/index.html
ablog build
1行目はシバンといって、スクリプトを実行するシェルを指定します。
2行目はbashのオプションです。Cはリダイレクト時の上書きを防止します。eはエラーが発生したときにスクリプトを停止します。uは存在しない変数がある場合にエラーにします。
今回はリダイレクトも変数も使いませんのでCとかuは不要ですが、こういうのは習慣にしておいた方が良いので。
このテキストファイルをローカルのブログのドキュメントルートにmymake.shという名前で保存します。
そして、実行件を付与します。
$ cd ドキュメントルートのディレクトリ
$ chmod +x mymake.sh
で、実行します。
$ cd ドキュメントルートのディレクトリ
$ ./mymake.sh
./_website/all_post/index.html
Running Sphinx v1.7.5
loading translations [ja]... done
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [dirhtml]: targets for 1 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in Japanese (code: ja) ... done
dumping object inventory... done
build succeeded.
The HTML pages are in _website.
こんな感じでrmの実行後にablogのスクリプトが実行されます。
ちなみに、rmのファイル名の指定が間違っていたり、初回のビルド(ablog cleanしたとか)やFinderでファイルを削除していたなどでファイルが存在しない場合は、このようにエラーを出力して停止します。
$ ./mymake.sh
rm: ./_website/all_post/index.html: No such file or directory
これでいちいちFinderを開かなくてもよくなりました。
拡張子を打ち込むのも面倒
テキストエディタがファイルの拡張子をみてファイルの種類を判断する場合がありますので、ファイルの末尾には.shを付けておきたい。
でも、スクリプトを実行するときに拡張子まで入力するのは面倒くさい。
ということで、シンボリックリンクを貼りました。エイリアスでも良いです。
$ cd ドキュメントルートのディレクトリ
$ ln -s /Users/xxxx/ドキュメントルート/mymake.sh ./mymake
こうすると、./mymakeでシェルスクリプトが実行されます。
公開日
広告
作ってみたカテゴリの投稿
- PythonでFizzBuzz問題をやってみた
- PythonでPDFファイルのサムネイル画像を作る
- Pythonでオブジェクトを選択してクロップするツールを作ってみた
- Pythonでデータロガーのログから瞬断を抽出してみる
- Pythonで写真の中の線を抽出してみた
- Pythonで動画から静止部分を抜き出してみた
- Pythonで測定データのピーク値を検出してみる
- Pythonで複数のCSVデータを1つのファイルにまとめてみた
- PythonとExcelでフォルダの使用量を調べてみた
- Sphinx(ablog)の後処理をする
- WordPressのブログを静的サイトに書き換えてみました
- シェルスクリプトでSphinxのビルドの前処理をする
- 数式を中置記法から後置記法(逆ポーランド記法)に変換してみた