bibi publish

説明

Bibi CLIは Bibi というEPUBリーダーアプリケーションで作業するためのコマンドラインツールです。現在提供しているのは bibi publish コマンドのみです。

bibi publishはEPUBファイルをS3にアップロードし、Bibiでというで閲覧可能にするコマンドラインツールです。

機能

  • EPUBドキュメント内のファイルをAmazon S3上のBibiのbookshelfディレクトリーにアップロード

  • EPUB閲覧用のHTMLファイルを作成してS3にアップロード

使用例

% bibi publish moby-dick.epub
% bibi publish moby-dick.epub moby-dick-book
% bibi publish --bibi=s3://yourbucket/subdir/bibi moby-dick.epub moby-dick-book

前提条件

  • AWSアカウント

  • S3バケットにファイルをアップロード可能な環境

  • アクセス可能で静的ウェブサイトホスティングように設定されたS3バケット

  • AWS CLIとその設定

インストール

% gem install bibi-publish

概要

予行

bibi publishは --dry-run オプションをサポートしています。これはアップロード予定のファイルを表示はするが実際にはアップロードしないというオプションです。

% bibi publish --bibi=s3://yourbucket/subdir/bibi path/to/moby-dick.epub moby-dick-book --dry-run

与えられたバケットとパスへのアップロード

% bibi publish --bibi=s3://yourbucket/subdir/bibi path/to/moby-dick.epub

これは次のことを行います。

  • moby-dick.epub というEPUBファイル内のファイルを s3://yourbucket/subdir/bibi-bookshelf/moby-dick へアップロード

  • Bibiを使ってこのEPUBドキュメントを読むためのHTMLファイルを s3://yourbucket/subdir/bibi/moby-dick.html へアップロード

以下の点に注目してください。

  • bibi-bookshelf というbookshelfディレクトリーはbibi publishが自動的に決定する

  • moby-dick というbookshelfのサブディレクトリーは、 moby-dick.epub という与えられたEPUBファイルからbibi publishが自動的に決定する

Bibi bookshelf下のディレクトリー名の指定

% bibi publish --bibi=s3://yourbucket/subdir/bibi path/to/moby-dick.epub moby-dick-book

page-blanch-book という第二引数はS3上のサブディレクトリーとHTMLファイル名に使われます。つまり以下のようになります。

  • s3://yourbucket/subdir/bibi-bookshelf/moby-dick ではなく s3://yourbucket/subdir/bibi-bookshelf/moby-dick-book

  • s3://yourbucket/subdir/bibi/moby-dick.html ではなく s3://yourbucket/subdir/bibi/moby-dick-book.html

HTMLを生成しない

% bibi publish --bibi=s3://yourbucket/subdir/bibi --no-page path/to/moby-dick.epub moby-dick-book

コマンドに --no-page オプションを渡してください。

Bibiの通常のURIである https://s3.your-region.amazonaws.com/yourbucket/subdir/bibi/?book=moby-dick-book に行くことでEPUBを閲覧することはできます。

生成するHTMLへの任意のフラグメントの挿入

bibi publishは <head><body> の終わりに、それぞれ --head-end オプションと --body-end オプションで指定されたファイルからHTMLフラグメントを挿入します。

BibiのHTMLのhead要素に生成プログラムの名前を挿入したいとしましょう。

% cat ./generator.html
<meta name="generator" content="bibi publish">

--head-end オプションでこのファイルへのパスを指定します。

% bibi publish --bibi=s3://yourbucket/subdir/bibi --head-end=./generator.html path/to/moby-dick.epub

これでHTMLファイルにHTMLフラグメントが挿入されます。

% curl -s https://s3.your-region.amazonaws.com/yourbucket/subdir/bibi/moby-dick.html | rg -B3 -A3 '</head>'
            <meta name="generator" content="bibi publish">


        </head>


        <body data-bibi-book="moby-dick">

--body-end オプションは指定されたファイルのHTMLフラグメントをHTMLの </body> の直前に挿入します。

設定

~/.config/bibi/publish.toml というファイルで、TOML形式でbibi publishの設定をすることができます。 --bibi--bookshelf といった特定のオプションを毎回指定するのを避けるために特に有用です。

例えばこうです。

~/.config/bibi/publish.toml

# `default` table is used by default
[default]
bibi = "s3://yourbucket/subdir/bibi"
bookshelf = "s3://yourbucket/epubs"
page = true

これはコマンドラインオプションで --bibi=s3://yourbucket/subdir/bibi--bookshelf=s3://yourbucket/epubs--page を渡すのと同等です。

状況に応じて設定を切り替えたい場合は、別のテーブルを追加して --option オプションでそれを指定します。

~/.config/bibi/publish.toml

[production]
bibi = "s3://your-production-bucket/bibi"

[staging]
bibi = "s3://your-staging-bucket/bibi"
% bibi publish --profile=staging moby-dick.epub

現在サポートしているキーは bibibookshelfpagehead_endbody_end です。

AWSプロファイル

環境変数 AWS_PROFILE を使用してください。

% AWS_PROFILE=publicbibi bibi publish path/to/doc.epub

参考

  • Bibi はウェブブラウザーで動作する素晴らしいUIを持ったEPUBリーダーです。

  • AWS CLI を見てインストールしAWSプロフファイルの設定をしてください。bibi publishはこの設定を使用します。

著作権

Copyright (c) 2020 Kitaiti Makoto

詳細はCOPYINGをご覧ください。