#!/usr/bin/env bash
#
# 编译。只回答「代码能不能过」这一件事,不产出可分发的产物。
# 要产物请用 publish.sh。
#
# 用法:
#   ./scripts/build.sh            # Release(默认,与发布同配置)
#   ./scripts/build.sh --debug    # Debug
#
# 默认用 Release 而不是 Debug,是因为项目里存在按配置或属性生效的分支
# (csproj 中 wwwroot 转嵌入资源就只在 PublishSingleFile 时才发生),
# Debug 下编译通过并不代表能发布。日常就用发布那套配置编译,
# 问题能早一步暴露,而不是攒到发布时才一起冒出来。
#
# 编译结果落在各项目的 bin/ 下,不动 publish/,也不会清掉已有的发布产物。
# 想直接跑起来调试用 dotnet run 即可,不必先执行本脚本。
set -euo pipefail

# 从脚本自身位置推导项目根,这样从任何目录下调用都成立
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PROJECT="$ROOT/src/MMail.Client/MMail.Client.csproj"

CONFIGURATION="Release"

case "${1:-}" in
  --debug)
    CONFIGURATION="Debug"
    ;;
  "")
    ;;
  *)
    echo "用法:$0 [--debug]" >&2
    exit 1
    ;;
esac

if [[ ! -f "$PROJECT" ]]; then
  echo "错误:找不到项目文件 $PROJECT" >&2
  exit 1
fi

echo "==> 编译($CONFIGURATION):$PROJECT"

cd "$ROOT"
dotnet build "$PROJECT" --configuration "$CONFIGURATION" --nologo

echo ""
echo "==> 编译通过。"
echo "    要产出可分发的单文件,执行 ./scripts/publish.sh"