概要
フォルダを監視して更新があるとマージしてepubファイルを作るボイラープレートです。
長文というかepubファイルを作る環境を整えたかったので作ってみました。
コマンド部分をいじることでpdfやwordなどにも応用可能です。
場所
https://github.com/mi-ki-ri/writing-repository-boilerplate-python
使い方
上記リポジトリをDownload ZIPします。
(この方法がおすすめです。フォークなどもできるかとは思いますが)
フォルダをリネームします。
フォルダ内で、
$ brew install pandoc
$ python3 -m venv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
$ sh app.sh
をそれぞれ実行します。
(Mac版です。Winではpandocのインストール方法が違うと思われます)
srcフォルダ内にあるmdファイルを書き換えます。
すると自動的に更新を検知して、distフォルダにepubが現れるはずです。
cover.pngを上書きすることでカバーを、CSSを追記することでスタイルを変えることができます。
しくみ
sh
主となるのはapp.shです。
中には長いコマンドが入っています。
watchmedo shell-command -W --recursive --pattern '*.md' --command 'cat src/*.md > dist/master.md && pandoc -f markdown -t epub3 dist/master.md --css ./style.css -o dist/epub.epub --epub-cover-image=cover.png' src
watchmedo がフォルダ監視を司っているコマンドで、 watchman をインストールするとついてきます。
最後の src のところで監視するフォルダを指定しています。
--command の部分が更新のたびに走るスクリプトで、今回は長いコマンドを書きました。
その部分
cat src/*.md > dist/master.md && pandoc -f markdown -t epub3 dist/master.md --css ./style.css -o dist/epub.epub --epub-cover-image=cover.png
の前半はマージの処理で、src内のmdファイルをdist内の master.md に上書き書き込みしています。
後半はpandocにより、マークダウンからepub3へと変換をかけています。
venv
先ほどの
$ brew install pandoc
$ python3 -m venv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
$ sh app.sh
の多くをしめていたのはpythonの命令です。
これは何をしているのかというと、仮想環境を作っています。
. venv/bin/activate
を実行した場合、この仮想環境でpythonやpipが実行されることになります。
その後 pip install -r requrements.txt
により watchman をインストールしています。
watchman をインストールすると watchmedo が使えるようになります。
感想
セーブするたびに更新処理が走るのはちょっとやりすぎかなあという気もしました。
おそらく Github Actions で pandoc を走らせることができるので、そちらを採用するかもしれないです。
とりあえずこのリポジトリは置いておきます。
使いたい方は使ってください。