LoginSignup
0
0

More than 1 year has passed since last update.

フォルダを監視して更新があるとマージしてepubファイルを作るボイラープレート

Posted at

概要

フォルダを監視して更新があるとマージして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 を走らせることができるので、そちらを採用するかもしれないです。

とりあえずこのリポジトリは置いておきます。

使いたい方は使ってください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0