113 lines
2.8 KiB
Bash
Executable File
113 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Font2SVG 静态资源部署脚本
|
||
# 用于将图标和 logo 上传到 fonts.biboer.cn 服务器
|
||
|
||
set -e # 遇到错误立即退出
|
||
|
||
# ===== 配置区域 =====
|
||
SERVER="gavin@fonts.biboer.cn"
|
||
REMOTE_DIR="/home/gavin/font2svg"
|
||
LOCAL_ASSETS_DIR="assets"
|
||
|
||
# 颜色输出
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m'
|
||
|
||
# ===== 函数定义 =====
|
||
log_info() {
|
||
echo -e "${GREEN}[INFO]${NC} $1"
|
||
}
|
||
|
||
log_warn() {
|
||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
check_files() {
|
||
log_info "检查本地文件..."
|
||
|
||
if [ ! -d "$LOCAL_ASSETS_DIR/icons" ]; then
|
||
log_error "图标目录不存在: $LOCAL_ASSETS_DIR/icons"
|
||
exit 1
|
||
fi
|
||
|
||
SVG_COUNT=$(find "$LOCAL_ASSETS_DIR/icons" -name "*.svg" | wc -l | tr -d ' ')
|
||
PNG_COUNT=$(find "$LOCAL_ASSETS_DIR/icons" -name "*.png" | wc -l | tr -d ' ')
|
||
log_info "发现 $SVG_COUNT 个 SVG 图标, $PNG_COUNT 个 PNG 图标"
|
||
}
|
||
|
||
create_remote_dirs() {
|
||
log_info "创建远程目录..."
|
||
ssh $SERVER "mkdir -p $REMOTE_DIR/assets/icons"
|
||
}
|
||
|
||
upload_assets() {
|
||
log_info "上传静态资源到 $SERVER..."
|
||
|
||
# 上传图标(SVG 和 PNG)
|
||
rsync -avz --progress \
|
||
--include="*.svg" \
|
||
--include="*.png" \
|
||
--include="*/" \
|
||
--exclude="*" \
|
||
"$LOCAL_ASSETS_DIR/" "$SERVER:$REMOTE_DIR/assets/"
|
||
|
||
log_info "静态资源上传完成"
|
||
}
|
||
|
||
set_permissions() {
|
||
log_info "设置文件权限..."
|
||
ssh $SERVER "chmod -R 755 $REMOTE_DIR/assets"
|
||
log_info "权限设置完成"
|
||
}
|
||
|
||
verify_deployment() {
|
||
log_info "验证部署..."
|
||
|
||
# 检查目录是否存在
|
||
if ssh $SERVER "[ -d $REMOTE_DIR/assets/icons ]"; then
|
||
log_info "✓ assets/icons 目录存在"
|
||
else
|
||
log_error "✗ assets/icons 目录不存在"
|
||
exit 1
|
||
fi
|
||
|
||
# 统计远程文件数量
|
||
REMOTE_SVG_COUNT=$(ssh $SERVER "find $REMOTE_DIR/assets/icons -name '*.svg' | wc -l" | tr -d ' ')
|
||
REMOTE_PNG_COUNT=$(ssh $SERVER "find $REMOTE_DIR/assets/icons -name '*.png' | wc -l" | tr -d ' ')
|
||
log_info "远程服务器上有 $REMOTE_SVG_COUNT 个 SVG, $REMOTE_PNG_COUNT 个 PNG"
|
||
}
|
||
|
||
show_urls() {
|
||
log_info "=========================================="
|
||
log_info "部署完成!资源 URL 示例:"
|
||
log_info " Logo: https://fonts.biboer.cn/assets/webicon.png"
|
||
log_info " 图标: https://fonts.biboer.cn/assets/icons/[图标名].svg"
|
||
log_info "=========================================="
|
||
}
|
||
|
||
# ===== 主流程 =====
|
||
main() {
|
||
log_info "开始部署 Font2SVG 静态资源..."
|
||
echo ""
|
||
|
||
check_files
|
||
create_remote_dirs
|
||
upload_assets
|
||
set_permissions
|
||
verify_deployment
|
||
|
||
echo ""
|
||
show_urls
|
||
log_info "部署完成!"
|
||
}
|
||
|
||
# 运行主流程
|
||
main
|