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

【已解决】给crifan的gitbook的template添加部署时更新github.io的README

部署 crifan 1581浏览 0评论
之前已实现crifan的gitbook的template
https://github.com/crifan/gitbook_template
可以自动
make deploy
发布内容到
crifan.com
https://crifan.github.io
中。现在有个需求是:
希望上传到github.io
之前,更新一下对应仓库
https://github.com/crifan/crifan.github.io
的readme
目前最新内容是:
希望是:
每次make deploy,都自动更新时间,以及把目录中没有的book,加过去
其中:现有哪些电子书
的列表顺序,按照bookName排序
现在去写python脚本,以及最后合并到
https://github.com/crifan/gitbook_template
中的
https://github.com/crifan/gitbook_template/blob/master/common/gitbook_makefile.mk
期间还涉及到:
makefile中调用python代码时
之前已经可以用
python xxx.py
调用,但是此处希望传入 本地的github.io的目录路径过去
不知道是否可以直接传入
去试试
另外,此处本地
/Users/limao/dev/crifan/crifan.github.io/README.md
内容是:
1
2
3
4
5
6
7
8
9
10
11
# Crifan的电子书大全
 
最后更新:`20190717`
。。。
 
  * 现有哪些电子书
    * [老少皆宜的运动:羽毛球](https://crifan.github.io/all_age_sports_badminton/website)
。。。
    * [有道云笔记和云协作使用总结](https://crifan.github.io/youdao_note_summary/website)
* 其他独立内容
。。。
看来待会需要去用正则去解析,再去逻辑判断,生成新列表,再去替换。
先去想办法看看解析传入参数:
【已解决】Python中解析命令行传入的参数
期间还涉及到:
【已解决】Makefile中如何嵌套使用ifeq条件判断逻辑
可以继续写代码处理README.md了。
写代码期间,发现暂时加到book的list时,无需排序,就加到最后就好:
还能区分出,哪些book先写的,哪些是后写的
不过此次发现此处的book的title,比如:移动网络演化史
没法直接获取到。
看来需要再去解析出来才行。。。
经过代码:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Author: Crifan Li
Update: 20200918
Function: Update crifan.github.io README.md
Note: should run this python file from single gitbook foler
      eg: /Users/crifan/dev/dev_root/gitbook/gitbook_src_root/books/gitbook_demo
"""
 
 
from datetime import datetime,timedelta
import os
import codecs
import json
import argparse
import re
 
 
################################################################################
# Global Config
################################################################################
 
 
ReadmeMdFilename = "README.md"
ReadmeCurrentJsonFilename = "README_current.json"
 
 
################################################################################
# Internal Function
################################################################################
 
 
def datetimeToStr(inputDatetime, format="%Y%m%d_%H%M%S"):
    """Convert datetime to string
 
 
    Args:
        inputDatetime (datetime): datetime value
    Returns:
        str
    Raises:
    Examples:
        datetime.datetime(2020, 4, 21, 15, 44, 13, 2000) -> '20200421_154413'
    """
    datetimeStr = inputDatetime.strftime(format=format)
    # print("inputDatetime=%s -> datetimeStr=%s" % (inputDatetime, datetimeStr)) # 2020-04-21 15:08:59.787623
    return datetimeStr
 
 
def getCurDatetimeStr(outputFormat="%Y%m%d_%H%M%S"):
    """
    get current datetime then format to string
 
 
    eg:
        20171111_220722
 
 
    :param outputFormat: datetime output format
    :return: current datetime formatted string
    """
    curDatetime = datetime.now() # 2017-11-11 22:07:22.705101
    # curDatetimeStr = curDatetime.strftime(format=outputFormat) #'20171111_220722'
    curDatetimeStr = datetimeToStr(curDatetime, format=outputFormat)
    return curDatetimeStr
 
 
def loadTextFromFile(fullFilename, fileEncoding="utf-8"):
    """load file text content from file"""
    with codecs.open(fullFilename, 'r', encoding=fileEncoding) as fp:
        allText = fp.read()
        # logging.debug("Complete load text from %s", fullFilename)
        return allText
 
 
def loadJsonFromFile(fullFilename, fileEncoding="utf-8"):
    """load and parse json dict from file"""
    with codecs.open(fullFilename, 'r', encoding=fileEncoding) as jsonFp:
        jsonDict = json.load(jsonFp)
        # logging.debug("Complete load json from %s", fullFilename)
        return jsonDict
 
 
def saveTextToFile(fullFilename, text, fileEncoding="utf-8"):
    """save text content into file"""
    with codecs.open(fullFilename, 'w', encoding=fileEncoding) as fp:
        fp.write(text)
        fp.close()
 
 
################################################################################
# Main Part
################################################################################
parser = argparse.ArgumentParser(description='Update crifan.github.io README.md')
parser.add_argument('--curBookRepoName', type=str, help='current gitbook repo name, eg: mobile_network_evolution_history')
# parser.add_argument('--curBookTitle', type=str, help='current gitbook title, eg: 移动网络演化史')
parser.add_argument('--localGithubIoPath', type=str, help='local github.io path')
 
 
args = parser.parse_args()
print("args=%s" % args)
curBookRepoName = args.curBookRepoName
print("curBookRepoName=%s" % curBookRepoName)
localGithubIoPath = args.localGithubIoPath
print("localGithubIoPath=%s" % localGithubIoPath)
 
 
readmeMdFullPath = os.path.join(localGithubIoPath, ReadmeMdFilename)
print("readmeMdFullPath=%s" % readmeMdFullPath)
curReadmeMdStr = loadTextFromFile(readmeMdFullPath)
print("curReadmeMdStr=%s" % curReadmeMdStr)
 
 
curDatetimeStr = getCurDatetimeStr("%Y%m%d")
# print("curDatetimeStr=%s" % curDatetimeStr)
newLastUpdateStr = "最后更新:`%s`" % curDatetimeStr
print("newLastUpdateStr=%s" % newLastUpdateStr)
newReamdMdStr = re.sub("最后更新:`(\d+)`", newLastUpdateStr, curReadmeMdStr)
print("newReamdMdStr=%s" % newReamdMdStr)
 
 
foundGitbookList = re.search("\* 现有哪些电子书\s(?P<curGitbookListMd>.+)\* 其他独立内容", newReamdMdStr, re.DOTALL)
print("foundGitbookList=%s" % foundGitbookList)
if foundGitbookList:
  curGitbookListMd = foundGitbookList.group("curGitbookListMd")
  print("curGitbookListMd=%s" % curGitbookListMd)
  # allBookList = re.finditer("\[(?P<bookTitle>[^\]+)\]\(https://crifan\.github\.io/(?P<bookRepoName>\w+)/website\)", curGitbookListMd)
  # allBookMatchList = re.finditer("\[(?P<bookTitle>[^]]+)\]", curGitbookListMd)
  allBookMatchList = re.finditer("\[(?P<bookTitle>[^]]+)\]\(https://crifan\.github\.io/(?P<bookRepoName>\w+)/website\)", curGitbookListMd)
  print("allBookMatchList=%s" % allBookMatchList)
  curBookDict = {}
  for curIdx, eachBookMatch in enumerate(allBookMatchList):
    # print("eachBookMatch=%s" % eachBookMatch)
    print("%s %s %s" % ("-"*10, curIdx, "-"*10))
    bookTitle = eachBookMatch.group("bookTitle")
    print("bookTitle=%s" % bookTitle)
    bookRepoName = eachBookMatch.group("bookRepoName")
    print("bookRepoName=%s" % bookRepoName)
    curBookDict[bookRepoName] = bookTitle
 
 
  print("curBookDict=%s" % curBookDict)
  if curBookRepoName in curBookDict.keys():
    print("%s already in current readme -> no need add, do nothing" % curBookRepoName)
  else:
    print("%s not in current readme -> need add it" % curBookRepoName)
    currPath = os.getcwd()
    print("currPath=%s" % currPath)
    readmeCurrentJsonFullPath = os.path.join(currPath, ReadmeCurrentJsonFilename)
    print("readmeCurrentJsonFullPath=%s" % readmeCurrentJsonFullPath)
    readmeCurrentJson = loadJsonFromFile(readmeCurrentJsonFullPath)
    print("readmeCurrentJson=%s" % readmeCurrentJson)
    curBookTitle = readmeCurrentJson["bookName"]
    print("curBookTitle=%s" % curBookTitle)
    curBookDict[curBookRepoName] = curBookTitle
    print("updated curBookDict=%s" % curBookDict)
    # generate new gitbook list md
    newSingleBookMdList = []
    for eachBookReoName, eachBookTitle in curBookDict.items():
      singleBookMd = "    * [%s](https://crifan.github.io/%s/website)" % (eachBookTitle, eachBookReoName)
      print("singleBookMd=%s" % singleBookMd)
      newSingleBookMdList.append(singleBookMd)
    print("newSingleBookMdList=%s" % newSingleBookMdList)
    newGitbookListMd = "\n".join(newSingleBookMdList)
    print("newGitbookListMd=%s" % newGitbookListMd)
    newGitbookListMd += "\n"
    newReamdMdStr = newReamdMdStr.replace(curGitbookListMd, newGitbookListMd)
    print("newReamdMdStr=%s" % newReamdMdStr)
 
 
saveTextToFile(readmeMdFullPath, newReamdMdStr)
print("Updated %s" % readmeMdFullPath)
调试可以更新成希望的内容:
即:
  • 更新了:最后更新日期
  • 对于新的gitbook的book
    • 如果已存在,则不更新
    • 如果不存在,则添加
      • 放到列表最后
关于readme的内容,详见:
https://github.com/crifan/crifan.github.io
https://github.com/crifan/crifan.github.io/blob/master/README.md
然后去真实的make deploy看看是否有问题
1
2
3
4
5
6
7
8
9
。。。
---------- 27 ----------
bookTitle=有道云笔记和云协作使用总结
bookRepoName=youdao_note_summary 
---------- 28 ----------
bookTitle=移动网络演化史
bookRepoName=mobile_network_evolution_history
curBookDict={'all_age_sports_badminton': '老少皆宜的运动:羽毛球', 'app_capture_package_tool_charles': 'app抓包利器:Charles', 'android_app_security_crack': '安卓应用的安全和破解', 'api_tool_postman': 'API开发利器:Postman', 'automobile_sales_summary': '汽车销售领域知识总结', 'best_editor_vscode': '史上最好用的编辑器:VSCode', 'common_logic_hardware_embedded': '硬件和嵌入式通用逻辑知识概念', 'crawl_your_data_spider_technology': '爬取你要的数据:爬虫技术', 'doc_format_markdown': '最流行的文档格式:Markdown', 'ebook_system_gitbook': '电子书制作利器:GitBook', 'gitbook_demo': 'Gitbook演示', 'good_automation_tool_makefile': '自动化利器:Makefile', 'http_restful_api': 'HTTP后台端:RESTful API接口设计', 'http_summary': 'HTTP知识总结', 'ic_chip_industry_chain_summary': '芯片产业链总结', 'improve_work_efficiency': '如何提高工作效率', 'mobile_app_summary': '移动端APP开发总结', 'program_code_style': '编程习惯和代码风格', 'program_common_logic': '计算机编程通用逻辑知识概念', 'python_spider_pyspider': 'Python爬虫框架:PySpider', 'resident_life_experience_summary': '居民生活经验总结', 'scientific_network_summary': '科学上网相关知识总结', 'selenium_summary': 'Selenium知识总结', 'smart_speaker_disassemble_summary': '智能音箱拆解总结', 'use_python_write_spider': '如何用Python写爬虫', 'work_job_summary': '工作和职业相关知识', 'xpath_summary': 'XPath知识总结', 'youdao_note_summary': '有道云笔记和云协作使用总结', 'mobile_network_evolution_history': '移动网络演化史'}
mobile_network_evolution_history already in current readme -> no need add, do nothing
是没问题的。
然后去更新到gitbook的template
https://github.com/crifan/gitbook_template
不过另外注意到,本地的GitHub.io的readme.md,竟然没有被push上传更新掉,改动还在。
自己手动去上传了:
待下次,github.io的readme.md被改动后,看看push是否能正常上传
难道是:python脚本还没执行完毕,就允许后续git命令了?
异步了?导致没有push掉改动?
想起来了,可能是刚才的,为了在线版本默认false,而改为了:
1
2
ENABLE_COMMIT_GITHUB_IO = false
# ENABLE_COMMIT_GITHUB_IO = true
导致此处实际上没用到commit
改为:
1
2
# ENABLE_COMMIT_GITHUB_IO = false
ENABLE_COMMIT_GITHUB_IO = true
再去试试另外一个book的make deploy,估计可以。
结果报错了:
1
2
3
4
5
6
7
8
9
10
11
12
13
localGithubIoPath=/Users/limao/dev/crifan/crifan.github.io
newLastUpdateStr=最后更新:`20200918`
multimedia_core_system_ims not in current readme -> need add it
Traceback (most recent call last):
  File "/Users/limao/dev/crifan/gitbook/gitbook_template/common/tools/update_crifan_github_io_readme.py", line 132, in <module>
    readmeCurrentJson = loadJsonFromFile(readmeCurrentJsonFullPath)
  File "/Users/limao/dev/crifan/gitbook/gitbook_template/common/tools/update_crifan_github_io_readme.py", line 68, in loadJsonFromFile
    with codecs.open(fullFilename, 'r', encoding=fileEncoding) as jsonFp:
  File "/Users/limao/.pyenv/versions/3.6.5/lib/python3.6/codecs.py", line 897, in open
    file = builtins.open(filename, mode, buffering)
FileNotFoundError: [Errno 2] No such file or directory: '/Users/limao/dev/crifan/crifan.github.io/README_current.json'
On branch master
Your branch is up to date with 'origin/master'.
找到原因了:
1
2
3
4
5
6
7
8
9
10
    rsync $(RSYNC_PARAMS) $(RELEASE_PATH) $(GITHUB_IO_PATH)
    cd $(GITHUB_IO_PATH) && \
    pwd && \
    ls -la && \
    git pull && \
    if [ $(ENABLE_UPDATE_GITHUB_IO_README) == true ]; then \
        python $(UPDATE_GITHUB_IO_README_FILE) --curBookRepoName $(BOOK_NAME) --localGithubIoPath $(GITHUB_IO_PATH); \
    else \
        echo "Ignored update README.md before commit $(BOOK_NAME) to github.io"; \
    fi; \
是运行python之前,后来又cd切换到github_io,目录了。。。
看log,感觉是对的了:
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
28
29
push modifed content to github.io
cd /Users/limao/dev/crifan/crifan.github.io && \
        pwd && \
        git status && \
        pwd && \
        git add rcs_tech_dev_summary/* && \
        pwd && \
        git status && \
        pwd && \
        git commit -m "1. update book rcs_tech_dev_summary" && \
        pwd && \
        git status && \
        pwd && \
        git push && \
        pwd && \
        cd /Users/limao/dev/crifan/gitbook/gitbook_template/books/rcs_tech_dev_summary && \
        pwd
/Users/limao/dev/crifan/crifan.github.io
On branch master
Your branch is up to date with 'origin/master'.
 
 
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
 
        modified:   README.md
        modified:   rcs_tech_dev_summary/epub/rcs_tech_dev_summary.epub
但是发现更新了的readme还是没add进去。。。
发现原来之前没有把readme加进去。。。
去加上:
1
2
    git add README.md && \
    git add $(BOOK_NAME)/* && \
再去试试,终于可以了
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
push modifed content to github.io
cd /Users/limao/dev/crifan/crifan.github.io && \
        pwd && \
        git status && \
        pwd && \
        git add README.md && \
        git add 5g_message_rcs_tech_summary/* && \
        pwd && \
        git status && \
        pwd && \
        git commit -m "1. update book 5g_message_rcs_tech_summary" && \
        pwd && \
        git status && \
        pwd && \
        git push && \
        pwd && \
        cd /Users/limao/dev/crifan/gitbook/gitbook_template/books/5g_message_rcs_tech_summary && \
        pwd
/Users/limao/dev/crifan/crifan.github.io
On branch master
Your branch is up to date with 'origin/master'.
 
 
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
 
        modified:   5g_message_rcs_tech_summary/epub/5g_message_rcs_tech_summary.epub
        modified:   5g_message_rcs_tech_summary/mobi/5g_message_rcs_tech_summary.mobi
        modified:   5g_message_rcs_tech_summary/pdf/5g_message_rcs_tech_summary.pdf
。。。
        modified:   5g_message_rcs_tech_summary/website/search_plus_index.json
        modified:   README.md
 
 
no changes added to commit (use "git add" and/or "git commit -a")
/Users/limao/dev/crifan/crifan.github.io
/Users/limao/dev/crifan/crifan.github.io
On branch master
Your branch is up to date with 'origin/master'.
 
 
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
 
        modified:   5g_message_rcs_tech_summary/epub/5g_message_rcs_tech_summary.epub
        modified:   5g_message_rcs_tech_summary/mobi/5g_message_rcs_tech_summary.mobi
        modified:   5g_message_rcs_tech_summary/pdf/5g_message_rcs_tech_summary.pdf
。。。
        modified:   5g_message_rcs_tech_summary/website/search_plus_index.json
        modified:   README.md
其中git commit去提交更新就有README.md了。
【总结】
最后相关commit部分内容是:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
## Commit generated files to github io
commit: all
    @echo ================================================================================
ifeq ($(ENABLE_COMMIT_GITHUB_IO), true)
    @echo Commit for $(BOOK_NAME)
    @echo pull github.io
    cd $(GITHUB_IO_PATH) && \
    pwd && \
    ls -la && \
    pwd && \
    git pull
    pwd
    @echo update readme.md of local github.io
    if [ $(ENABLE_UPDATE_GITHUB_IO_README) == true ]; then \
        python $(UPDATE_GITHUB_IO_README_FILE) --curBookRepoName $(BOOK_NAME) --localGithubIoPath $(GITHUB_IO_PATH); \
    else \
        echo "Ignored update README.md before commit $(BOOK_NAME) to github.io"; \
    fi;
    @echo copy current book all generated files to local github.io
    rsync $(RSYNC_PARAMS) $(RELEASE_PATH) $(GITHUB_IO_PATH)
    @echo push modifed content to github.io
    cd $(GITHUB_IO_PATH) && \
    pwd && \
    git status && \
    pwd && \
    git add README.md && \
    git add $(BOOK_NAME)/* && \
    pwd && \
    git status && \
    pwd && \
    git commit -m $(COMMIT_COMMENT) && \
    pwd && \
    git status && \
    pwd && \
    git push && \
    pwd && \
    cd $(CURRENT_DIR) && \
    pwd
else
    @echo Ignored commit $(BOOK_NAME) to github.io
endif
调用的代码是:
common/tools/update_crifan_github_io_readme.py
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Author: Crifan Li
Update: 20200918
Function: Update crifan.github.io README.md
Note: should run this python file from single gitbook foler
      eg: /Users/crifan/dev/dev_root/gitbook/gitbook_src_root/books/gitbook_demo
"""
 
 
from datetime import datetime,timedelta
import os
import codecs
import json
import argparse
import re
 
 
################################################################################
# Global Config
################################################################################
 
 
ReadmeMdFilename = "README.md"
ReadmeCurrentJsonFilename = "README_current.json"
 
 
################################################################################
# Internal Function
################################################################################
 
 
def datetimeToStr(inputDatetime, format="%Y%m%d_%H%M%S"):
    """Convert datetime to string
 
 
    Args:
        inputDatetime (datetime): datetime value
    Returns:
        str
    Raises:
    Examples:
        datetime.datetime(2020, 4, 21, 15, 44, 13, 2000) -> '20200421_154413'
    """
    datetimeStr = inputDatetime.strftime(format=format)
    # print("inputDatetime=%s -> datetimeStr=%s" % (inputDatetime, datetimeStr)) # 2020-04-21 15:08:59.787623
    return datetimeStr
 
 
def getCurDatetimeStr(outputFormat="%Y%m%d_%H%M%S"):
    """
    get current datetime then format to string
 
 
    eg:
        20171111_220722
 
 
    :param outputFormat: datetime output format
    :return: current datetime formatted string
    """
    curDatetime = datetime.now() # 2017-11-11 22:07:22.705101
    # curDatetimeStr = curDatetime.strftime(format=outputFormat) #'20171111_220722'
    curDatetimeStr = datetimeToStr(curDatetime, format=outputFormat)
    return curDatetimeStr
 
 
def loadTextFromFile(fullFilename, fileEncoding="utf-8"):
    """load file text content from file"""
    with codecs.open(fullFilename, 'r', encoding=fileEncoding) as fp:
        allText = fp.read()
        # logging.debug("Complete load text from %s", fullFilename)
        return allText
 
 
def loadJsonFromFile(fullFilename, fileEncoding="utf-8"):
    """load and parse json dict from file"""
    with codecs.open(fullFilename, 'r', encoding=fileEncoding) as jsonFp:
        jsonDict = json.load(jsonFp)
        # logging.debug("Complete load json from %s", fullFilename)
        return jsonDict
 
 
def saveTextToFile(fullFilename, text, fileEncoding="utf-8"):
    """save text content into file"""
    with codecs.open(fullFilename, 'w', encoding=fileEncoding) as fp:
        fp.write(text)
        fp.close()
 
 
################################################################################
# Main Part
################################################################################
parser = argparse.ArgumentParser(description='Update crifan.github.io README.md')
parser.add_argument('--curBookRepoName', type=str, help='current gitbook repo name, eg: mobile_network_evolution_history')
# parser.add_argument('--curBookTitle', type=str, help='current gitbook title, eg: 移动网络演化史')
parser.add_argument('--localGithubIoPath', type=str, help='local github.io path')
 
 
args = parser.parse_args()
# print("args=%s" % args)
curBookRepoName = args.curBookRepoName
print("curBookRepoName=%s" % curBookRepoName)
localGithubIoPath = args.localGithubIoPath
print("localGithubIoPath=%s" % localGithubIoPath)
 
 
readmeMdFullPath = os.path.join(localGithubIoPath, ReadmeMdFilename)
# print("readmeMdFullPath=%s" % readmeMdFullPath)
curReadmeMdStr = loadTextFromFile(readmeMdFullPath)
# print("curReadmeMdStr=%s" % curReadmeMdStr)
 
 
curDatetimeStr = getCurDatetimeStr("%Y%m%d")
# print("curDatetimeStr=%s" % curDatetimeStr)
newLastUpdateStr = "最后更新:`%s`" % curDatetimeStr
print("newLastUpdateStr=%s" % newLastUpdateStr)
newReamdMdStr = re.sub("最后更新:`(\d+)`", newLastUpdateStr, curReadmeMdStr)
# print("newReamdMdStr=%s" % newReamdMdStr)
 
 
foundGitbookList = re.search("\* 现有哪些电子书\s(?P<curGitbookListMd>.+)\* 其他独立内容", newReamdMdStr, re.DOTALL)
# print("foundGitbookList=%s" % foundGitbookList)
if foundGitbookList:
  curGitbookListMd = foundGitbookList.group("curGitbookListMd")
  # print("curGitbookListMd=%s" % curGitbookListMd)
  allBookMatchList = re.finditer("\[(?P<bookTitle>[^]]+)\]\(https://crifan\.github\.io/(?P<bookRepoName>\w+)/website\)", curGitbookListMd)
  # print("allBookMatchList=%s" % allBookMatchList)
  curBookDict = {}
  for curIdx, eachBookMatch in enumerate(allBookMatchList):
    # print("eachBookMatch=%s" % eachBookMatch)
    # print("%s %s %s" % ("-"*10, curIdx, "-"*10))
    bookTitle = eachBookMatch.group("bookTitle")
    # print("bookTitle=%s" % bookTitle)
    bookRepoName = eachBookMatch.group("bookRepoName")
    # print("bookRepoName=%s" % bookRepoName)
    curBookDict[bookRepoName] = bookTitle
 
 
  # print("curBookDict=%s" % curBookDict)
  if curBookRepoName in curBookDict.keys():
    print("%s already in current readme -> no need add, do nothing" % curBookRepoName)
  else:
    print("%s not in current readme -> need add it" % curBookRepoName)
    currPath = os.getcwd()
    # print("currPath=%s" % currPath)
    readmeCurrentJsonFullPath = os.path.join(currPath, ReadmeCurrentJsonFilename)
    # print("readmeCurrentJsonFullPath=%s" % readmeCurrentJsonFullPath)
    readmeCurrentJson = loadJsonFromFile(readmeCurrentJsonFullPath)
    # print("readmeCurrentJson=%s" % readmeCurrentJson)
    curBookTitle = readmeCurrentJson["bookName"]
    # print("curBookTitle=%s" % curBookTitle)
    curBookDict[curBookRepoName] = curBookTitle
    # print("updated curBookDict=%s" % curBookDict)
    # generate new gitbook list md
    newSingleBookMdList = []
    for eachBookReoName, eachBookTitle in curBookDict.items():
      singleBookMd = "    * [%s](https://crifan.github.io/%s/website)" % (eachBookTitle, eachBookReoName)
      # print("singleBookMd=%s" % singleBookMd)
      newSingleBookMdList.append(singleBookMd)
    # print("newSingleBookMdList=%s" % newSingleBookMdList)
    newGitbookListMd = "\n".join(newSingleBookMdList)
    # print("newGitbookListMd=%s" % newGitbookListMd)
    newGitbookListMd += "\n"
    newReamdMdStr = newReamdMdStr.replace(curGitbookListMd, newGitbookListMd)
    print("newReamdMdStr=%s" % newReamdMdStr)
 
 
saveTextToFile(readmeMdFullPath, newReamdMdStr)
print("Updated %s" % readmeMdFullPath)
更新代码,详见:
https://github.com/crifan/gitbook_template
的:
https://github.com/crifan/gitbook_template/blob/master/common/gitbook_makefile.mk

转载请注明:在路上 » 【已解决】给crifan的gitbook的template添加部署时更新github.io的README

发表我的评论
取消评论

表情

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
80 queries in 0.236 seconds, using 22.23MB memory