Documentation
¶
Overview ¶
Package app 提供构建程序的简便方法
NOTE: app 并不是必须的,只是为用户提供了一种简便的方式构建程序, 相对地也会有诸多限制,如果觉得不适用,可以自行调用 server.New。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewOptionsOf ¶ added in v0.48.0
func NewOptionsOf[T any](files *serialization.Files, f fs.FS, filename string) (*server.Options, *T, error)
NewOptionsOf 从配置文件初始化 server.Options 实例
files 指定从文件到对象的转换方法,同时用于配置文件和翻译内容; filename 用于指定项目的配置文件,根据扩展由 serialization.Files 负责在 f 查找文件加载;
T 表示用户自定义的数据项,该数据来自配置文件中的 user 字段。 如果实现了 ConfigSanitizer 接口,则在加载后进行自检;
NOTE: 并不是所有的 server.Options 字段都是可序列化的,部分字段,比如 RouterOptions 需要用户在返回的对象上,自行作修改,当然这些本身有默认值,不修改也可以正常使用。
Types ¶
type AppOf ¶ added in v0.48.0
type AppOf[T any] struct { Name string // 程序名称 Version string // 程序版本 // 在运行服务之前对 Server 的额外操作 // // 比如添加模块等。不可以为空。 Init func(s *server.Server, user *T, action string) error // 在初始化 Server 之前对 Options 的二次处理 // // 可以为空。 Options func(*server.Options) // 命令行输出信息的通道 // // 默认为 os.Stdout。 Out io.Writer // 配置文件的加载器 // // 为空则会给定一个能解析 .xml、.yaml、.yml 和 .json 文件的默认对象。 // 该值可能会被 Options 操作所覆盖。 Files *serialization.Files // 配置文件的文件名 // // 仅是文件名,相对的路径由命令行 -f 指定。 // 如果为空,则直接采用 &Options{} 初始化 Server 对象。 ConfigFilename string // 本地化的相关操作接口 // // 如果为空,则会被初始化一个空对象,该值可能会被 Options 操作所覆盖。 Catalog *catalog.Builder // 触发退出的信号 // // 为空(nil 或是 []) 表示没有。 Signals []os.Signal // 通过信号触发退出时的等待时间 SignalTimeout time.Duration // contains filtered or unexported fields }
AppOf 提供一种简单的命令行生成方式
生成的命令行带以下几个参数:
- v 显示版本号;
- h 显示帮助信息;
- f 指定当前程序可读取的文件系统,这最终会转换成 Server.FS;
- a 执行的动作,该值会传递给 Init,由用户根据 a 决定初始化方式;
- s 以服务的形式运行;
本地化信息采用当前用户的默认语言, 由 github.com/issue9/localeutil.DetectUserLanguageTag 决定。 如果想让 AppOf 支持本地化操作,最起码需要向 Catalog 注册命令行参数的本地化信息:
-v show version -h show help -f set file system -a action -s run as server
对于 AppOf 的初始化错误产生的 panic 信息是不支持本地的。
// 本地化命令行的帮助信息
builder := catalog.NewBuilder()
builder.SetString("show help", "显示帮助信息")
builder.SetString("show version", "显示版本信息")
cmd := &app.AppOf[struct{}]{
Name: "app",
Version: "1.0.0",
Init: func(s *Server) error {...},
Catalog: builder,
}
cmd.Exec()
T 表示的是配置文件中的用户自定义数据类型,如果不需要可以设置为 struct{}。
type ConfigError ¶ added in v0.48.0
type ConfigError struct {
Path string // 配置文件的路径
Field string // 字段名
Message any // 错误信息
Value any // 字段的原始值
}
ConfigError 表示配置内容字段错误
func (*ConfigError) Error ¶ added in v0.48.0
func (err *ConfigError) Error() string
func (*ConfigError) LocaleString ¶ added in v0.48.0
func (err *ConfigError) LocaleString(p *message.Printer) string
type ConfigSanitizer ¶ added in v0.48.0
type ConfigSanitizer interface {
SanitizeConfig() *ConfigError
}
ConfigSanitizer 对配置文件的数据验证和修正接口