common.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/usr/bin/env bash
  2. ryanjson_abs_dir() {
  3. local inputPath="$1"
  4. (cd "$(dirname "${inputPath}")" && pwd)
  5. }
  6. ryanjson_repo_root_from_source() {
  7. local sourcePath="$1"
  8. local levelsUp="${2:-0}"
  9. local currentDir=""
  10. currentDir="$(ryanjson_abs_dir "${sourcePath}")"
  11. while (( levelsUp > 0 )); do
  12. currentDir="$(cd "${currentDir}/.." && pwd)"
  13. levelsUp=$((levelsUp - 1))
  14. done
  15. printf '%s\n' "${currentDir}"
  16. }
  17. ryanjson_print_banner_begin() {
  18. local title="$1"
  19. echo "===================================================="
  20. echo "${title}"
  21. }
  22. ryanjson_print_banner_kv() {
  23. local key="$1"
  24. local value="$2"
  25. echo " - ${key}=${value}"
  26. }
  27. ryanjson_print_banner_end() {
  28. echo "===================================================="
  29. }
  30. ryanjson_require_cmd() {
  31. local cmdName="$1"
  32. local hint="${2:-}"
  33. if ! command -v "${cmdName}" >/dev/null 2>&1; then
  34. echo "[错误] 缺少命令: ${cmdName}"
  35. if [[ -n "${hint}" ]]; then
  36. echo "[提示] ${hint}"
  37. fi
  38. return 1
  39. fi
  40. }
  41. ryanjson_prepare_clean_dir() {
  42. local dirPath="$1"
  43. rm -rf "${dirPath}"
  44. mkdir -p "${dirPath}"
  45. }
  46. ryanjson_run_xmake_config() {
  47. local forceClean="$1"
  48. local caseName="$2"
  49. if [[ "${forceClean}" == "1" ]]; then
  50. echo "[阶段] 正在执行 xmake 配置(clean 模式)..."
  51. if ! xmake f -c; then
  52. echo "[错误] xmake 配置失败:${caseName}"
  53. return 1
  54. fi
  55. else
  56. echo "[阶段] 正在执行 xmake 配置(增量模式)..."
  57. if ! xmake f; then
  58. echo "[错误] xmake 配置失败:${caseName}"
  59. return 1
  60. fi
  61. fi
  62. }
  63. ryanjson_run_xmake_build() {
  64. local targetName="$1"
  65. local caseName="$2"
  66. echo "[阶段] 正在执行 xmake 构建(target=${targetName})..."
  67. if ! xmake -b "${targetName}"; then
  68. echo "[错误] xmake 构建失败:${caseName}"
  69. return 1
  70. fi
  71. }