1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! Application base directory resolution.
//!
//! 解析应用基准目录(`app_base`):appsettings.json 所在目录。
//! 框架的配置加载、SPA 静态资源定位均基于此目录,确保部署后从部署目录
//! 而非源码目录读取资源。
//!
//! 优先级:
//! 0. **环境变量 `RUST_WEBX_APP_BASE`**:显式指定基准目录(测试 / 容器挂载场景)。
//! 1. **exe 同级目录**:若 exe 所在目录存在 `appsettings.json`,视为部署目录
//! (`cargo build --release` 后由发布脚本产出的布局,从任意 cwd 启动均生效)。
//! 2. **cwd 同级目录**:若当前工作目录存在 `appsettings.json`,视为基准目录
//! (从部署目录启动 exe 的常见场景)。
//! 3. **cwd 向上遍历**:在 cwd 的各祖先的子目录中查找含 `appsettings.json`
//! 的目录(`cargo run` 从 workspace 根启动时定位 member crate 目录)。
//! 4. **回退 cwd**:以上均未命中时返回当前工作目录,由调用方按相对路径处理。
use ;
/// 判断给定目录是否为「应用基准目录」(存在 `appsettings.json`)。
///
/// `appsettings.json` 是框架配套配置文件的标志,存在即视为基准目录。
/// 不依赖 `wwwroot/`,因为并非所有应用都启用 SPA。
/// 解析应用基准目录。优先级见模块文档。