Initial project

This commit is contained in:
Cody
2026-03-06 14:56:17 +08:00
parent 977b627b15
commit bf9e099747
1180 changed files with 50973 additions and 0 deletions

95
scripts/setup.sh Executable file
View File

@@ -0,0 +1,95 @@
#!/bin/bash
# 新机器环境初始化(只需执行一次)
#
# 用法:在项目根目录执行
# bash scripts/setup.sh
#
# 完成后重启终端(或 source ~/.zshrc使 PATH 全局生效。
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
PUB_CACHE_BIN="$HOME/.pub-cache/bin"
# 前置检查Flutter SDK 必须已安装
if ! command -v dart &> /dev/null; then
echo "Error: dart not found."
echo "Please install Flutter SDK first: https://docs.flutter.dev/get-started/install"
exit 1
fi
if ! command -v flutter &> /dev/null; then
echo "Error: flutter not found."
echo "Please install Flutter SDK first: https://docs.flutter.dev/get-started/install"
exit 1
fi
echo "=== customer-im-client 环境初始化 ==="
echo ""
# ---- Step 1: 安装全局工具 ----
echo "[1/6] 安装全局工具 (melos + mason_cli)..."
dart pub global activate melos
dart pub global activate mason_cli
echo ""
# ---- Step 2: 配置 PATH ----
echo "[2/6] 配置 PATH..."
if [[ "$SHELL" == */zsh ]]; then
SHELL_CONFIG="$HOME/.zshrc"
elif [[ "$SHELL" == */bash ]]; then
SHELL_CONFIG="$HOME/.bash_profile"
else
SHELL_CONFIG="$HOME/.profile"
fi
PATH_LINE='export PATH="$PATH":"$HOME/.pub-cache/bin"'
if ! grep -qF ".pub-cache/bin" "$SHELL_CONFIG" 2>/dev/null; then
echo "$PATH_LINE" >> "$SHELL_CONFIG"
echo " 写入 PATH 到 $SHELL_CONFIG"
else
echo " PATH 已配置,跳过"
fi
export PATH="$PATH:$PUB_CACHE_BIN" # 当前 session 立即生效
echo ""
# ---- Step 3: 安装项目依赖 ----
echo "[3/6] dart pub get..."
cd "$ROOT_DIR" && dart pub get
echo ""
# ---- Step 4: IDE 模块配置生成 ----
# 生成 .iml 和 .idea/modules.xmlIDE 靠这些文件识别各个包并显示 [melos_xxx] 标签。
# 这些文件在 .gitignore 中不入库,每台机器需要本地生成。
# 已有环境缺失标签时,单独执行 melos bootstrap 即可补全,无需重跑整个 setup。
echo "[4/6] melos bootstrap (生成 .iml + modules.xml)..."
cd "$ROOT_DIR" && "$PUB_CACHE_BIN/melos" bootstrap
echo ""
# ---- Step 4.5: 清理旧的 mason 缓存 ----
if [ -d "$ROOT_DIR/.mason" ]; then
echo " 清理旧 .mason 目录..."
rm -rf "$ROOT_DIR/.mason"
fi
if [ -f "$ROOT_DIR/mason-lock.json" ]; then
echo " 清理旧 mason-lock.json..."
rm -f "$ROOT_DIR/mason-lock.json"
fi
# ---- Step 5: 注册 mason bricks ----
echo "[5/6] mason get (注册本地 bricks)..."
cd "$ROOT_DIR" && "$PUB_CACHE_BIN/mason" get
echo ""
# ---- Step 6: 首次代码生成 ----
echo "[6/6] melos run gen (首次代码生成)..."
cd "$ROOT_DIR" && "$PUB_CACHE_BIN/melos" run gen
echo ""
# ---- 验证 ----
echo "=== 验证 ==="
echo -n "melos : " && "$PUB_CACHE_BIN/melos" --version
echo -n "mason : " && "$PUB_CACHE_BIN/mason" --version
echo ""
echo "=== 完成!重启终端(或执行 source ${SHELL_CONFIG})使 PATH 全局生效 ==="