【typst-rs】info.rs文件
Typst Info 命令代码解析这段代码是 Typst 编译器typst info命令的实现用于显示 Typst 环境信息包括版本、构建配置、运行时特性、字体配置、包配置和相关环境变量。主要数据结构Info 结构体structInfo{version:staticstr,// Typst 版本build:Build,// 构建信息features:Features,// 运行时特性fonts:Fonts,// 字体配置packages:Packages,// 包配置env:Environment,// 环境变量}Build 结构体structBuild{commit:Optionstaticstr,// Git commit hashplatform:Platform,// 目标平台settings:Settings,// 编译时设置}Platform 结构体structPlatform{os:staticstr,// 操作系统 (如 linux, windows, macos)arch:staticstr,// 架构 (如 x86_64, aarch64)}Settings 结构体structSettings{self_update:bool,// 是否启用 self-update 功能http_server:bool,// 是否启用 http-server 功能}核心函数info 函数主入口函数处理typst info命令pubfninfo(command:InfoCommand)-StrResult(){// 1. 获取环境变量letenvget_vars()?;// 2. 解析运行时特性letruntime_featuresparse_features(...)?;// 3. 解析字体路径letfont_pathsenv.typst_font_paths.split(:).filter(|s|!s.is_empty()).map(PathBuf::from).collect();// 4. 构建 Info 结构体letvalueInfo{...};// 5. 输出信息ifletSome(format)command.format{// 机器可读格式 (JSON/YAML)println!({serialized});}else{// 人类可读格式format_human_readable(value)?;}}get_vars 函数收集所有相关的环境变量fnget_vars()-StrResultEnvironment{fnget_var(key:staticstr)-StrResultOptionString{matchstd::env::var(key){Ok(val)Ok(Some(val)),Err(VarError::NotPresent)Ok(None),Err(VarError::NotUnicode(_)){// 处理非 UTF-8 变量值crate::print_error(...)?;Ok(None)}}}Ok(Environment{typst_cert:get_var(TYPST_CERT)?,typst_features:get_var(TYPST_FEATURES)?,// ... 其他变量})}parse_features 函数解析运行时特性字符串逗号分隔fnparse_features(feature_list:str)-StrResultFeatures{letmutfeaturesFeatures::default();forfeatureinfeature_list.split(,).filter(|s|!s.is_empty()){matchFeature::from_str(feature,true){Ok(Feature::Html)features.htmltrue,Ok(Feature::Bundle)features.bundletrue,Ok(Feature::A11yExtras)features.a11y_extrastrue,Err(_)crate::print_error(...)?,}}Ok(features)}格式化输出人类可读格式使用彩色终端输出fnformat_human_readable(value:Info)-io::Result(){letmutoutterminal::out();// 版本信息带颜色write_key(mutout,Version,None)?;write_value_simple(mutout,value.version,None)?;// 构建设置writeln!(out,Build settings)?;forfeatureinvalue.build.settings.compile_features(){feature.format(mutout,key_pad,Some(3))?;}// ... 其他部分}颜色方案键名: 青色 (Cyan)普通值: 绿色 (Green)特殊值(如unset,on,off): 蓝色 (Blue)收集的环境变量Typst 专用变量TYPST_CERT- TLS 证书TYPST_FEATURES- 运行时特性TYPST_FONT_PATHS- 自定义字体路径冒号分隔TYPST_IGNORE_SYSTEM_FONTS- 忽略系统字体TYPST_IGNORE_EMBEDDED_FONTS- 忽略嵌入字体TYPST_PACKAGE_PATH- 包路径TYPST_PACKAGE_CACHE_PATH- 包缓存路径TYPST_ROOT- Typst 根目录TYPST_UPDATE_BACKUP_PATH- 更新备份路径标准环境变量SOURCE_DATE_EPOCH- 可重现构建时间戳NO_COLOR- 禁用彩色输出HTTP_PROXY/HTTPS_PROXY/ALL_PROXY- 代理设置NO_PROXY- 代理排除列表Linux/Unix 专用变量XDG_CACHE_HOME- XDG 缓存目录XDG_DATA_HOME- XDG 数据目录FONTCONFIG_FILE- Fontconfig 配置OPENSSL_CONF- OpenSSL 配置输出示例人类可读格式Version 0.1.0 (abc1234, linux on x86_64) Build settings self-update on (Update Typst via typst update) http-server off (Serve HTML via typst watch) Features html off (Experimental HTML export) bundle off (Experimental bundle export) a11y-extras off (Experimental accessibility additions) Fonts Custom font paths - /usr/share/fonts - ~/.local/share/fonts System fonts on Embedded fonts off Packages Package path /home/user/.local/share/typst/packages Package cache path /home/user/.cache/typst/packages Environment variables TYPST_FEATURES html,bundle TYPST_FONT_PATHS /usr/share/fonts:/usr/local/share/fonts NO_COLOR unsetJSON 格式{version:0.1.0,build:{commit:abc1234,platform:{os:linux,arch:x86_64},settings:{self-update:true,http-server:false}},features:{html:false,bundle:false,a11y-extras:false}}关键特性跨平台支持: 通过条件编译处理不同操作系统的差异序列化支持: 使用serde支持 JSON/YAML 输出彩色输出: 终端显示时使用 ANSI 颜色错误处理: 优雅处理环境变量解析错误可扩展性: 易于添加新的配置项和环境变量
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2497688.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!