wip: oci image management
This commit is contained in:
56
internal/config/config.go
Normal file
56
internal/config/config.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Server ServerConfig `json:"server"`
|
||||
Storage StorageConfig `json:"storage"`
|
||||
}
|
||||
|
||||
type ServerConfig struct {
|
||||
Address string `json:"address"` // 监听地址,如 :8080
|
||||
Debug bool `json:"debug"` // 是否开启调试模式
|
||||
}
|
||||
|
||||
type StorageConfig struct {
|
||||
RootPath string `json:"root_path"` // 数据存储目录
|
||||
}
|
||||
|
||||
// LoadFromFlags 从命令行参数加载配置
|
||||
func LoadFromFlags(debug bool, address, dataDir string) (*Config, error) {
|
||||
cfg := &Config{
|
||||
Server: ServerConfig{
|
||||
Address: address,
|
||||
Debug: debug,
|
||||
},
|
||||
Storage: StorageConfig{
|
||||
RootPath: dataDir,
|
||||
},
|
||||
}
|
||||
|
||||
// 确保存储目录存在
|
||||
if err := os.MkdirAll(cfg.Storage.RootPath, 0755); err != nil {
|
||||
return nil, fmt.Errorf("failed to create data directory %s: %w", cfg.Storage.RootPath, err)
|
||||
}
|
||||
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
// Load 从环境变量加载配置(保留向后兼容)
|
||||
func Load() (*Config, error) {
|
||||
address := getEnv("ADDRESS", ":8080")
|
||||
dataDir := getEnv("DATA_DIR", "./storage")
|
||||
debug := getEnv("DEBUG", "false") == "true"
|
||||
|
||||
return LoadFromFlags(debug, address, dataDir)
|
||||
}
|
||||
|
||||
func getEnv(key, defaultValue string) string {
|
||||
if value := os.Getenv(key); value != "" {
|
||||
return value
|
||||
}
|
||||
return defaultValue
|
||||
}
|
||||
Reference in New Issue
Block a user