之前已用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电子书