XEnv

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2025 License: MIT Imports: 10 Imported by: 1

README

XEnv

Release Reference Report DeepWiki Discord

XEnv 提供了应用程序的环境管理,支持多平台识别、路径管理、命令行参数解析和环境变量求值等功能。

功能特性

  • 参数解析:支持多种参数形式和缓存管理
  • 环境配置:支持应用类型、运行模式、版本等环境配置
  • 变量求值:支持 ${Environment.Key} 格式的环境变量引用和求值
  • 路径管理:提供本地路径和资产路径的统一管理

使用手册

1. 命令行参数
1.1 参数解析
// 命令行:./app --config=dev.json --port 8080
config := XEnv.GetArg("config")    // 返回 "dev.json"
port := XEnv.GetArg("port")        // 返回 "8080"

// 获取所有参数
args := XEnv.GetArgs()             // 返回参数 map
2. 环境配置
2.1 应用类型
// 获取应用类型和运行模式
appType := XEnv.App()             // 返回 Server/Client
appMode := XEnv.Mode()            // 返回 Dev/Test/Staging/Prod
version := XEnv.Version()         // 返回应用版本
2.2 项目信息
// 获取项目相关信息
solution := XEnv.Solution()        // 返回解决方案名称
project := XEnv.Project()         // 返回项目名称
product := XEnv.Product()         // 返回产品名称
channel := XEnv.Channel()         // 返回渠道名称
3. 变量求值
3.1 内置变量
// 获取应用信息
app := XEnv.Instance().Eval("${Environment.App}")              // 获取应用类型
mode := XEnv.Instance().Eval("${Environment.Mode}")            // 获取运行模式
platform := XEnv.Instance().Eval("${Environment.Platform}")    // 获取运行平台

// 获取路径信息
localPath := XEnv.Instance().Eval("${Environment.LocalPath}")  // 获取本地路径
assetPath := XEnv.Instance().Eval("${Environment.AssetPath}")  // 获取资产路径
3.2 参数引用
// 获取命令行参数
config := XEnv.Instance().Eval("${Environment.config}")        // 获取 --config 的值

// 获取系统环境变量
path := XEnv.Instance().Eval("${Environment.PATH}")           // 获取系统 PATH 变量
3.3 特殊处理
// 嵌套变量
value := XEnv.Instance().Eval("${EnvEnvironment.${Environment.KEY}}")    // 返回 "(Nested)"

// 循环引用
value := XEnv.Instance().Eval("${Environment.A${Environment.B}}")     // 返回 "(Recursive)"

// 未知变量
value := XEnv.Instance().Eval("${Environment.UNKNOWN}")       // 返回 "(Unknown)"
4. 路径管理
4.1 本地路径
// 获取本地数据路径(自动创建目录)
localPath := XEnv.LocalPath()     // 返回规范化的本地路径
4.2 资产路径
// 获取资产文件路径
assetPath := XEnv.AssetPath()     // 返回规范化的资产路径

常见问题

1. 命令行参数格式有什么要求?

命令行参数支持两种格式:

  1. --key=value 格式:参数名和值通过等号连接
  2. --key value 格式:参数名和值通过空格分隔

示例:

./app --config=dev.json --port 8080 --debug=true
2. 变量求值有哪些注意事项?
  1. 变量引用格式:使用 ${Environment.Key} 格式
  2. 变量优先级:内置变量 > 命令行参数 > 系统环境变量
  3. 特殊情况:
    • 嵌套变量:返回 (Nested) 后缀
    • 循环引用:返回 (Recursive) 后缀
    • 未知变量:返回 (Unknown) 后缀
3. 路径管理有什么注意事项?
  1. 本地数据路径:

    • 自动创建目录(权限:0755)
    • 默认路径:Local
  2. 资产文件路径:

    • 默认路径:Assets
    • 不会自动创建目录
  3. 通用特性:

    • 自动转换为绝对路径
    • 统一使用斜杠(/)作为分隔符
    • 支持命令行参数指定:
      ./app --LocalPath=/data/local --AssetPath=/data/assets
      

更多问题,请查阅问题反馈

项目信息

Documentation

Overview

XEnv 提供了应用程序的环境管理,支持多平台识别、路径管理、命令行参数解析和环境变量求值等功能。

功能特性

  • 命令行参数:支持 --key=value 和 --key value 格式的命令行参数解析
  • 环境配置:支持应用类型、运行模式、版本等环境配置
  • 变量求值:支持 ${Environment.Key} 格式的环境变量引用和求值
  • 路径管理:提供本地路径和资产路径的统一管理

使用手册

1. 命令行参数

1.1 参数解析

// 命令行:./app --config=dev.json --port 8080
config := XEnv.GetArg("config")    // 返回 "dev.json"
port := XEnv.GetArg("port")        // 返回 "8080"

// 获取所有参数
args := XEnv.GetArgs()             // 返回参数 map

2. 环境配置

2.1 应用类型

// 获取应用类型和运行模式
appType := XEnv.App()             // 返回 Server/Client
appMode := XEnv.Mode()            // 返回 Dev/Test/Staging/Prod
version := XEnv.Version()         // 返回应用版本

2.2 项目信息

// 获取项目相关信息
solution := XEnv.Solution()        // 返回解决方案名称
project := XEnv.Project()         // 返回项目名称
product := XEnv.Product()         // 返回产品名称
channel := XEnv.Channel()         // 返回渠道名称

3. 变量求值

3.1 内置变量

// 获取应用信息
app := XEnv.Instance().Eval("${Environment.App}")              // 获取应用类型
mode := XEnv.Instance().Eval("${Environment.Mode}")            // 获取运行模式
platform := XEnv.Instance().Eval("${Environment.Platform}")    // 获取运行平台

// 获取路径信息
localPath := XEnv.Instance().Eval("${Environment.LocalPath}")  // 获取本地路径
assetPath := XEnv.Instance().Eval("${Environment.AssetPath}")  // 获取资产路径

3.2 参数引用

// 获取命令行参数
config := XEnv.Instance().Eval("${Environment.config}")        // 获取 --config 的值

// 获取系统环境变量
path := XEnv.Instance().Eval("${Environment.PATH}")           // 获取系统 PATH 变量

3.3 特殊处理

// 嵌套变量
value := XEnv.Instance().Eval("${Environment.${Environment.KEY}}")    // 返回 "(Nested)"

// 循环引用
value := XEnv.Instance().Eval("${Environment.A${Environment.B}}")     // 返回 "(Recursive)"

// 未知变量
value := XEnv.Instance().Eval("${Environment.UNKNOWN}")       // 返回 "(Unknown)"

4. 路径管理

4.1 本地路径

// 获取本地数据路径(自动创建目录)
localPath := XEnv.LocalPath()     // 返回规范化的本地路径

4.2 资产路径

// 获取资产文件路径
assetPath := XEnv.AssetPath()     // 返回规范化的资产路径

更多信息请参考模块文档。

Index

Constants

View Source
const (
	// ModeUnknown 表示未知的运行模式。
	ModeUnknown = "Unknown"
	// ModeDev 表示开发环境。
	ModeDev = "Dev"
	// ModeTest 表示测试环境。
	ModeTest = "Test"
	// ModeStaging 表示预发布环境。
	ModeStaging = "Staging"
	// ModeProd 表示生产环境。
	ModeProd = "Prod"
)
View Source
const (
	// AppUnknown 表示未知的应用类型。
	AppUnknown = "Unknown"
	// AppServer 表示服务器应用。
	AppServer = "Server"
	// AppClient 表示客户端应用。
	AppClient = "Client"
)
View Source
const (
	// PlatformUnknown 表示未知的运行平台。
	PlatformUnknown = "Unknown"
	// PlatformWindows 表示 Windows 平台。
	PlatformWindows = "Windows"
	// PlatformLinux 表示 Linux 平台。
	PlatformLinux = "Linux"
	// PlatformOSX 表示 macOS 平台。
	PlatformOSX = "OSX"
	// PlatformAndroid 表示 Android 平台。
	PlatformAndroid = "Android"
	// PlatformiOS 表示 iOS 平台。
	PlatformiOS = "iOS"
	// PlatformBrowser 表示浏览器平台。
	PlatformBrowser = "Browser"
)
View Source
const (
	// PreferencesApp 应用类型的配置键。
	PreferencesApp = "XEnv/App"
	// PreferencesAppDefault 应用类型的默认值。
	PreferencesAppDefault = AppServer
	// PreferencesMode 运行模式的配置键。
	PreferencesMode = "XEnv/Mode"
	// PreferencesModeDefault 运行模式的默认值。
	PreferencesModeDefault = ModeDev
	// PreferencesSolution 解决方案的配置键。
	PreferencesSolution = "XEnv/Solution"
	// PreferencesSolutionDefault 解决方案的默认值。
	PreferencesSolutionDefault = "Unknown"
	// PreferencesProject 项目的配置键。
	PreferencesProject = "XEnv/Project"
	// PreferencesProjectDefault 项目的默认值。
	PreferencesProjectDefault = "Unknown"
	// PreferencesProduct 产品的配置键。
	PreferencesProduct = "XEnv/Product"
	// PreferencesProductDefault 产品的默认值。
	PreferencesProductDefault = "Unknown"
	// PreferencesChannel 渠道的配置键。
	PreferencesChannel = "XEnv/Channel"
	// PreferencesChannelDefault 渠道的默认值。
	PreferencesChannelDefault = "Default"
	// PreferencesVersion 版本的配置键。
	PreferencesVersion = "XEnv/Version"
	// PreferencesVersionDefault 版本的默认值。
	PreferencesVersionDefault = "0.0.0"
	// PreferencesAuthor 作者的配置键。
	PreferencesAuthor = "XEnv/Author"
	// PreferencesSecret 密钥的配置键。
	PreferencesSecret = "XEnv/Secret"
	// PreferencesRemote 远端配置的配置键。
	PreferencesRemote = "XEnv/Remote"
	// PreferencesRemoteDefault 远端配置的默认值。
	PreferencesRemoteDefault = "" /* 137-byte string literal not displayed */
)

Variables

View Source
var (
	// PreferencessAuthorDefault 作者的默认值。
	// 默认使用当前系统用户名。
	PreferencessAuthorDefault = func() string {
		data, err := user.Current()
		if err != nil {
			return "Unknown"
		}
		username := data.Username

		if i := strings.LastIndex(username, "\\"); i >= 0 {
			return username[i+1:]
		}

		if i := strings.LastIndex(username, "/"); i >= 0 {
			return username[i+1:]
		}
		return username
	}()

	// PreferencesSecretDefault 密钥的默认值。
	// 默认生成 8 位随机字符串。
	PreferencesSecretDefault = XString.Random("N")[:8]
)

Functions

func App

func App() string

App 返回应用类型。

func AssetPath

func AssetPath() string

AssetPath 返回资产文件存储路径。 该路径用于存储应用程序的资产文件(如图片、配置等)。 路径特点:

  • 自动转换为绝对路径
  • 统一使用斜杠(/)作为分隔符

返回值:

  • string:规范化后的资产文件路径

如果路径无效,将会触发 panic。

func Author

func Author() string

Author 返回作者名称。

func Channel

func Channel() string

Channel 返回渠道名称。

func GetArg

func GetArg(key string) string

GetArg 获取命令行参数值。 参数 key 是要查找的参数名。 格式:--key=value 或 --key value,例如:--config=dev.json 或 --config dev.json 如果参数不存在,返回空字符串。

func GetArgs

func GetArgs() map[string]string

GetArgs 获取所有命令行参数作为键值对映射。 格式:--key1=value1 --key2 value2 返回参数名到参数值的映射。 该函数是线程安全的,确保参数只被解析一次。

func Instance added in v1.1.0

func Instance() *environment

Instance 是全局的环境变量管理器单例。

func LocalPath

func LocalPath() string

LocalPath 返回本地数据存储路径。 该路径用于存储应用程序的本地数据文件。 路径特点:

  • 自动转换为绝对路径
  • 统一使用斜杠(/)作为分隔符
  • 自动创建目录(权限:0755)

返回值:

  • string:规范化后的本地数据路径

如果路径无效或无法创建目录,将会触发 panic。

func Mode

func Mode() string

Mode 返回应用模式。

func Platform

func Platform() string

Platform 返回运行平台。

func Product

func Product() string

Product 返回产品名称。

func Project

func Project() string

Project 返回项目名称。

func Remote

func Remote() string

Remote 返回远端配置。

func Secret

func Secret() string

Secret 返回应用密钥。

func Solution

func Solution() string

Solution 返回解决方案。

func Version

func Version() string

Version 返回版本名称。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL