feat: Inital commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
GCPProjectID string `mapstructure:"gcp_project_id"`
|
||||
Telegram struct {
|
||||
Token string `mapstructure:"token"`
|
||||
ChatIDs []int64 `mapstructure:"chat_ids"`
|
||||
} `mapstructure:"telegram"`
|
||||
}
|
||||
|
||||
func Load() (Config, error) {
|
||||
viper.SetConfigName("config")
|
||||
viper.SetConfigType("yaml")
|
||||
viper.AddConfigPath(".")
|
||||
|
||||
viper.SetEnvPrefix("CRAWLER")
|
||||
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||
viper.AutomaticEnv()
|
||||
|
||||
var cfg Config
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
// If the error is that the file wasn't found, that's okay. Log it and continue.
|
||||
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
||||
log.Println("ℹ️ No 'config.yaml' file found. Relying on environment variables or flags.")
|
||||
} else {
|
||||
// For any other error (e.g., malformed YAML), return the error.
|
||||
return cfg, err
|
||||
}
|
||||
}
|
||||
|
||||
if err := viper.Unmarshal(&cfg); err != nil {
|
||||
return cfg, err
|
||||
}
|
||||
return cfg, nil
|
||||
}
|
||||
Reference in New Issue
Block a user