221 lines
5.6 KiB
Bash
Executable File
221 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 專案管理工具
|
|
# 使用方法: ./drama project [命令]
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
PROJECTS_FILE="$PROJECT_DIR/PROJECTS.md"
|
|
PROJECTS_DATA_DIR="$PROJECT_DIR/projects"
|
|
|
|
# 顏色定義
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
PURPLE='\033[0;35m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
# 類型圖標和名稱函數 (Bash 3.2 兼容)
|
|
get_type_icon() {
|
|
case "$1" in
|
|
"FE") echo "🎨" ;;
|
|
"BE") echo "⚙️" ;;
|
|
"AI") echo "🤖" ;;
|
|
"MB") echo "📱" ;;
|
|
"DOC") echo "📚" ;;
|
|
"ENV") echo "🔧" ;;
|
|
"TEST") echo "🧪" ;;
|
|
*) echo "🔧" ;;
|
|
esac
|
|
}
|
|
|
|
get_type_name() {
|
|
case "$1" in
|
|
"FE") echo "前端開發" ;;
|
|
"BE") echo "後端開發" ;;
|
|
"AI") echo "AI整合" ;;
|
|
"MB") echo "移動端" ;;
|
|
"DOC") echo "文檔更新" ;;
|
|
"ENV") echo "環境配置" ;;
|
|
"TEST") echo "測試驗證" ;;
|
|
*) echo "環境配置" ;;
|
|
esac
|
|
}
|
|
|
|
# 狀態圖標函數
|
|
get_status_icon() {
|
|
case "$1" in
|
|
"pending") echo "⏳" ;;
|
|
"in-progress") echo "🔄" ;;
|
|
"completed") echo "✅" ;;
|
|
"blocked") echo "❌" ;;
|
|
"paused") echo "⏸️" ;;
|
|
*) echo "⏳" ;;
|
|
esac
|
|
}
|
|
|
|
# 確保必要文件和目錄存在
|
|
init_project_structure() {
|
|
if [[ ! -f "$PROJECTS_FILE" ]]; then
|
|
echo -e "${RED}❌ PROJECTS.md 不存在${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -d "$PROJECTS_DATA_DIR" ]]; then
|
|
mkdir -p "$PROJECTS_DATA_DIR"
|
|
fi
|
|
}
|
|
|
|
# 顯示項目列表
|
|
show_project_list() {
|
|
echo -e "${BLUE}📋 所有專案列表${NC}"
|
|
echo "=================================="
|
|
|
|
if [[ ! -f "$PROJECTS_FILE" ]]; then
|
|
echo -e "${RED}❌ 專案文件不存在${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# 從PROJECTS.md中提取項目信息
|
|
grep -E "^### " "$PROJECTS_FILE" | while read -r line; do
|
|
# 提取項目名稱和狀態
|
|
project_name=$(echo "$line" | sed 's/^### [^ ]* \(.*\) (.*$/\1/')
|
|
status_line=$(echo "$line" | grep -o '([^)]*)$' | tr -d '()')
|
|
|
|
if [[ -n "$project_name" ]]; then
|
|
echo -e " ${GREEN}📁 $project_name${NC} ($status_line)"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# 顯示項目狀態
|
|
show_project_status() {
|
|
local project_name="$1"
|
|
|
|
echo -e "${BLUE}📊 專案執行狀態${NC}"
|
|
echo "=================================="
|
|
|
|
if [[ -n "$project_name" ]]; then
|
|
echo -e "${PURPLE}專案: $project_name${NC}"
|
|
# TODO: 顯示特定項目的詳細狀態
|
|
else
|
|
# 顯示總體統計
|
|
echo -e "${GREEN}總體統計:${NC}"
|
|
echo " 📱 進行中專案: 1 個"
|
|
echo " ⏳ 待執行項目: 16 個"
|
|
echo " 🔄 進行中項目: 0 個"
|
|
echo " ✅ 已完成項目: 0 個"
|
|
fi
|
|
}
|
|
|
|
# 初始化新項目
|
|
init_new_project() {
|
|
local project_name="$1"
|
|
|
|
if [[ -z "$project_name" ]]; then
|
|
echo -e "${RED}❌ 請提供項目名稱${NC}"
|
|
echo "使用方法: ./drama project init \"項目名稱\""
|
|
return 1
|
|
fi
|
|
|
|
echo -e "${BLUE}🚀 初始化新專案: $project_name${NC}"
|
|
|
|
# 創建項目數據文件
|
|
local project_file="$PROJECTS_DATA_DIR/${project_name}.md"
|
|
if [[ -f "$project_file" ]]; then
|
|
echo -e "${YELLOW}⚠️ 專案 '$project_name' 已存在${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# 創建項目詳細文件
|
|
cat > "$project_file" << EOF
|
|
# $project_name
|
|
|
|
**創建日期**: $(date +"%Y-%m-%d")
|
|
**狀態**: 🔄 進行中
|
|
|
|
## 專案描述
|
|
請在此處添加專案的詳細描述...
|
|
|
|
## 執行階段
|
|
|
|
### 階段1: 待定義
|
|
- ⏳ \`ENV\` 待添加執行項目...
|
|
|
|
## 專案統計
|
|
- **總階段數**: 1
|
|
- **執行項目數**: 1
|
|
- **完成進度**: 0%
|
|
|
|
---
|
|
**最後更新**: $(date +"%Y-%m-%d")
|
|
EOF
|
|
|
|
echo -e "${GREEN}✅ 專案 '$project_name' 初始化完成${NC}"
|
|
echo " 📁 專案文件: $project_file"
|
|
echo " 💡 使用 ./dl phase add \"$project_name\" \"階段名稱\" 新增階段"
|
|
}
|
|
|
|
# 列出項目類型
|
|
show_project_types() {
|
|
echo -e "${BLUE}🏷️ 專案類型定義${NC}"
|
|
echo "=================================="
|
|
|
|
local types="FE BE AI MB DOC ENV TEST"
|
|
for type_code in $types; do
|
|
local icon=$(get_type_icon "$type_code")
|
|
local name=$(get_type_name "$type_code")
|
|
echo -e " ${icon} ${PURPLE}$type_code${NC} - $name"
|
|
done
|
|
|
|
echo ""
|
|
echo -e "${BLUE}使用範例:${NC}"
|
|
echo " ./dl phase add \"專案名\" \"階段名\" FE \"前端任務描述\""
|
|
}
|
|
|
|
# 顯示幫助
|
|
show_help() {
|
|
echo -e "${BLUE}🚀 專案管理工具使用指南${NC}"
|
|
echo "=================================="
|
|
echo ""
|
|
echo -e "${PURPLE}基本命令:${NC}"
|
|
echo " init [項目名稱] - 初始化新專案"
|
|
echo " list - 列出所有專案"
|
|
echo " status [項目名稱] - 查看執行狀態"
|
|
echo " types - 顯示專案類型定義"
|
|
echo ""
|
|
echo -e "${PURPLE}範例:${NC}"
|
|
echo " ./dl project init \"我的新專案\""
|
|
echo " ./dl project list"
|
|
echo " ./dl project status"
|
|
echo ""
|
|
echo -e "${BLUE}提示:${NC} 使用 ./dl phase 管理專案階段和執行項目"
|
|
}
|
|
|
|
# 主邏輯
|
|
init_project_structure
|
|
|
|
case "$1" in
|
|
"init")
|
|
init_new_project "$2"
|
|
;;
|
|
"list")
|
|
show_project_list
|
|
;;
|
|
"status")
|
|
show_project_status "$2"
|
|
;;
|
|
"types")
|
|
show_project_types
|
|
;;
|
|
"help"|"--help"|"-h"|"")
|
|
show_help
|
|
;;
|
|
*)
|
|
echo -e "${RED}❌ 未知命令: $1${NC}"
|
|
echo ""
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac |