84 lines
3.1 KiB
Go
84 lines
3.1 KiB
Go
package config
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func RegisterFlags(cmd *cobra.Command) {
|
|
flags := cmd.Flags()
|
|
|
|
// 基础配置
|
|
flags.StringP("config", "c", "", "config file path")
|
|
flags.StringP("lang", "l", "", "language (e.g., zh-Hans, en)")
|
|
flags.IntP("workers", "w", 0, "number of workers")
|
|
flags.Int("retry", 0, "retry times")
|
|
flags.Int("threads", 0, "number of threads")
|
|
flags.Bool("stream", false, "enable stream mode")
|
|
flags.Bool("no-clean-cache", false, "do not clean cache on exit")
|
|
flags.String("proxy", "", "proxy URL (http, https, socks5, socks5h)")
|
|
|
|
// Telegram 配置
|
|
flags.String("telegram-token", "", "telegram bot token")
|
|
flags.Int("telegram-app-id", 0, "telegram app id")
|
|
flags.String("telegram-app-hash", "", "telegram app hash")
|
|
flags.Int("telegram-rpc-retry", 0, "telegram rpc retry times")
|
|
flags.Bool("telegram-userbot-enable", false, "enable userbot")
|
|
flags.String("telegram-userbot-session", "", "userbot session path")
|
|
flags.Bool("telegram-proxy-enable", false, "enable telegram proxy")
|
|
flags.String("telegram-proxy-url", "", "telegram proxy URL")
|
|
|
|
// 数据库配置
|
|
flags.String("db-path", "", "database path")
|
|
flags.String("db-session", "", "session database path")
|
|
|
|
// 临时目录配置
|
|
flags.String("temp-base-path", "", "temp directory base path")
|
|
|
|
// Parser 配置
|
|
flags.Bool("parser-plugin-enable", false, "enable parser plugins")
|
|
flags.StringSlice("parser-plugin-dirs", nil, "parser plugin directories")
|
|
flags.String("parser-proxy", "", "parser proxy URL")
|
|
|
|
// 绑定到 viper
|
|
bindFlags(cmd)
|
|
}
|
|
|
|
func bindFlags(cmd *cobra.Command) {
|
|
flags := cmd.Flags()
|
|
|
|
viper.BindPFlag("lang", flags.Lookup("lang"))
|
|
viper.BindPFlag("workers", flags.Lookup("workers"))
|
|
viper.BindPFlag("retry", flags.Lookup("retry"))
|
|
viper.BindPFlag("threads", flags.Lookup("threads"))
|
|
viper.BindPFlag("stream", flags.Lookup("stream"))
|
|
viper.BindPFlag("no_clean_cache", flags.Lookup("no-clean-cache"))
|
|
viper.BindPFlag("proxy", flags.Lookup("proxy"))
|
|
|
|
// Telegram
|
|
viper.BindPFlag("telegram.token", flags.Lookup("telegram-token"))
|
|
viper.BindPFlag("telegram.app_id", flags.Lookup("telegram-app-id"))
|
|
viper.BindPFlag("telegram.app_hash", flags.Lookup("telegram-app-hash"))
|
|
viper.BindPFlag("telegram.rpc_retry", flags.Lookup("telegram-rpc-retry"))
|
|
viper.BindPFlag("telegram.userbot.enable", flags.Lookup("telegram-userbot-enable"))
|
|
viper.BindPFlag("telegram.userbot.session", flags.Lookup("telegram-userbot-session"))
|
|
viper.BindPFlag("telegram.proxy.enable", flags.Lookup("telegram-proxy-enable"))
|
|
viper.BindPFlag("telegram.proxy.url", flags.Lookup("telegram-proxy-url"))
|
|
|
|
// database
|
|
viper.BindPFlag("db.path", flags.Lookup("db-path"))
|
|
viper.BindPFlag("db.session", flags.Lookup("db-session"))
|
|
// 临时目录
|
|
viper.BindPFlag("temp.base_path", flags.Lookup("temp-base-path"))
|
|
|
|
// Parser
|
|
viper.BindPFlag("parser.plugin_enable", flags.Lookup("parser-plugin-enable"))
|
|
viper.BindPFlag("parser.plugin_dirs", flags.Lookup("parser-plugin-dirs"))
|
|
viper.BindPFlag("parser.proxy", flags.Lookup("parser-proxy"))
|
|
}
|
|
|
|
func GetConfigFile(cmd *cobra.Command) string {
|
|
configFile, _ := cmd.Flags().GetString("config")
|
|
return configFile
|
|
}
|