最新消息:20210917 已从crifan.com换到crifan.org

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

gitbook crifan 3949浏览 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

最后用:

# 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,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

    95 queries in 0.190 seconds, using 23.41MB memory