112 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | ||
| 
 | ||
| #############################################################################################
 | ||
| # 用途: 初始化文档脚本
 | ||
| # 作者: 丁辉
 | ||
| # 编写时间: 2024-07-11
 | ||
| #############################################################################################
 | ||
| 
 | ||
| # 定义函数信息
 | ||
| RED='\033[0;31m'
 | ||
| NC='\033[0m'
 | ||
| GREEN='\033[32m'
 | ||
| YELLOW='\033[33m'
 | ||
| TIME="+%Y-%m-%d %H:%M:%S"
 | ||
| 
 | ||
| function SEND_INFO() {
 | ||
|     info=$1
 | ||
|     echo -e "${GREEN}$(date "$TIME") INFO: $info${NC}"
 | ||
| }
 | ||
| function SEND_WARN() {
 | ||
|     warn=$1
 | ||
|     echo -e "${YELLOW}$(date "$TIME") WARN: $warn${NC}"
 | ||
| }
 | ||
| function SEND_ERROR() {
 | ||
|     error=$1
 | ||
|     echo -e "${RED}$(date "$TIME") ERROR: $error${NC}"
 | ||
| }
 | ||
| 
 | ||
| # 整理文档
 | ||
| function Clean_File() {
 | ||
|     SEND_INFO "------------ 开始清理仓库内无关文件 ------------"
 | ||
|     SEND_INFO "------------ Git 文件清理 ------------"
 | ||
|     rm -rf .git
 | ||
|     rm -rf .gitignore
 | ||
|     rm -rf .drone.yml
 | ||
|     rm -rf ./README.md
 | ||
|     SEND_INFO "------------ 特殊文件/目录清理 ------------"
 | ||
|     find . -type f ! \( -name "*.md" -o -name "builder.sh" \) -exec rm {} +
 | ||
|     SEND_INFO "------------ 开始初始化文档 ------------"
 | ||
|     SEND_INFO "------------ README.md 文件初始化 ------------"
 | ||
|     # 清理第一行带有 * 号文件
 | ||
|     for i in $(find ./ -type f -name "*.md"); do
 | ||
|         if head -n 1 ${i} | grep -q '^*'; then
 | ||
|             rm ${i}
 | ||
|         fi
 | ||
|     done
 | ||
|     # 更改剩下的文件名称
 | ||
|     for i in $(find ./ -type f -name "README.md"); do
 | ||
|         path=$(echo $i | awk -F'/README.md' '{print $1}')
 | ||
|         name=$(sed -n '3p' $i | awk '{print $2}')
 | ||
|         mv $i ${path}/${name}.md
 | ||
|     done
 | ||
| }
 | ||
| 
 | ||
| # 初始化 MD 文件
 | ||
| function Init_Docs() {
 | ||
|     SEND_INFO "------------ 初始化文档正文 ------------"    
 | ||
|     for i in $(find ./ -type f -name "*.md" | sed 's|^./||'); do
 | ||
|         DNAME=$(echo $i | awk -F '/' '{print "Kubernetes-"$1}')
 | ||
|         MDNAME=$(echo $i | awk -F '/' '{print $(NF)}' | awk -F '.' '{print $1}')
 | ||
|     sed -i "1i---\n\
 | ||
| title:\n\
 | ||
| keywords: admin-template,vue,element,后台模板\n\
 | ||
| cover: /img/block.png\n\
 | ||
| sticky:\n\
 | ||
| banner:\n\
 | ||
|   type: img\n\
 | ||
|   bgurl: /img/demo.png\n\
 | ||
|   bannerText: \n\
 | ||
| author: Offends\n\
 | ||
| categories:\n\
 | ||
| toc: true\n\
 | ||
| single_column: true\n\
 | ||
| ---\n" $i
 | ||
|     sed -i "s#title:#title: $MDNAME#g" $i
 | ||
|     sed -i "s#categories:#categories: $DNAME#g" $i
 | ||
|     done
 | ||
| }
 | ||
| 
 | ||
| function Replace_Url() {
 | ||
|     SEND_INFO "------------ 开始替换 Gitee 链接为 Blog 链接 ------------"
 | ||
|     
 | ||
|     # 使用更精确的匹配模式,处理包含中文和其他特殊字符的URL
 | ||
|     grep -r 'https://gitee.com/offends/' --include="*.md" . | while read -r line; do
 | ||
|         file=$(echo "$line" | awk -F ':' '{print $1}')
 | ||
|         
 | ||
|         # 一次性完成所有替换操作
 | ||
|         sed -i '
 | ||
|             # 处理标准格式的Gitee链接
 | ||
|             s|https://gitee.com/offends/\([^/]*\)/blob/main/\(.*\)\.md|https://blog.offends.cn/\1/\2.html|g
 | ||
|             s|https://gitee.com/offends/\([^/]*\)/blob/main/\(.*\)\.md#\(.*\)|https://blog.offends.cn/\1/\2.html#\3|g
 | ||
|             
 | ||
|             # 额外处理可能遗漏的.md后缀
 | ||
|             s|\(https://blog.offends.cn/[^)]*\)\.md|\1.html|g
 | ||
|             s|\.md#|.html#|g
 | ||
|             s|\.md$|.html|g
 | ||
|             s|\.md)|.html)|g
 | ||
|         ' "$file"
 | ||
|     done
 | ||
|     
 | ||
|     SEND_INFO "------------ 替换完成 ------------"
 | ||
| }
 | ||
| 
 | ||
| function All() {
 | ||
|     SEND_INFO "开始构建......"
 | ||
|     Clean_File
 | ||
|     Init_Docs
 | ||
|     Replace_Url
 | ||
|     SEND_INFO "构建完成"
 | ||
| }
 | ||
| 
 | ||
| All |