最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】批量编译和发布gitbook电子书

gitbook crifan 4721浏览 0评论

之前已用Makefile实现gitbook的单个book的编译,调试,发布等操作。

现在已有几十本gitbook:

希望写个脚本能实现所有gitbook的批量的发布,用于批量更新。

比如最近给gitbook中加了GA的广告,所以希望所有的gitbook都加上。

目前暂时决定还是用Makefile

对于多个批量执行多个目录中的makefile

之前的docbook已实现类似效果了:

/Users/crifan/dev/dev_root/docbook/docbook/books/Makefile

那去参考写法,去弄个类似的东西过来

期间

makefile for in

How to write loop in a Makefile? – Stack Overflow

bash – simple loop over files in some directory makefile – Stack Overflow

最后用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Author: Crifan Li
# Function: Batch make for all gitbooks
# Version: 20190716
#
# [Note]
# 1. this makefile should be located in
# /Users/crifan/dev/dev_root/gitbook/gitbook_src_root/common
 
SUB_BOOKS=$(shell ls ../books)
BOOKS_SRC_ROOT=$(shell cd ../books && pwd)
 
# Batch make for all gitbooks
help debug_dir init sync_content clean_all website pdf epub mobi all upload commit deploy:
    @echo "Current path="`pwd`;
    @echo "LS_OUTPUT="$(SUB_BOOKS);
    @echo "BOOKS_SRC_ROOT="$(BOOKS_SRC_ROOT);
    @for each_item in $(SUB_BOOKS); \
    do \
        if [ -d $(BOOKS_SRC_ROOT)/$$each_item ]; then \
            cd $(BOOKS_SRC_ROOT)/$$each_item; \
            echo `pwd`; \
            if [ -f Makefile ]; then \
                make $@ || exit "$$?"; \
            fi; \
            cd ..; \
        fi; \
    done;

然后可以实现:

一键

make all

生成所有的book的本地release目录的内容

继续去试试其他命令,比如:

make deploy

也是可以的。

抽空需要的话再去加:支持忽略某些book。

转载请注明:在路上 » 【已解决】批量编译和发布gitbook电子书

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.392 seconds, using 22.28MB memory