(cmd *cobra.Command)
| 83 | } |
| 84 | |
| 85 | func initViper(cmd *cobra.Command) (*viper.Viper, error) { |
| 86 | v := viper.New() |
| 87 | |
| 88 | // Get config file from flag |
| 89 | cfgFile, err := cmd.Flags().GetString("config") |
| 90 | if err != nil { |
| 91 | return nil, err |
| 92 | } |
| 93 | |
| 94 | // Configuration file |
| 95 | if cfgFile == "" { |
| 96 | home, err := homedir.Dir() |
| 97 | if err != nil { |
| 98 | return nil, err |
| 99 | } |
| 100 | v.AddConfigPath(".") |
| 101 | v.AddConfigPath(home) |
| 102 | v.AddConfigPath("/etc/filebrowser/") |
| 103 | v.SetConfigName(".filebrowser") |
| 104 | } else { |
| 105 | v.SetConfigFile(cfgFile) |
| 106 | } |
| 107 | |
| 108 | // Environment variables |
| 109 | v.SetEnvPrefix("FB") |
| 110 | v.AutomaticEnv() |
| 111 | v.SetEnvKeyReplacer(strings.NewReplacer(generateEnvKeyReplacements(cmd)...)) |
| 112 | |
| 113 | // Bind the flags |
| 114 | err = v.BindPFlags(cmd.Flags()) |
| 115 | if err != nil { |
| 116 | return nil, err |
| 117 | } |
| 118 | |
| 119 | // Read in configuration |
| 120 | if err := v.ReadInConfig(); err != nil { |
| 121 | |
| 122 | if errors.As(err, &viper.ConfigParseError{}) { |
| 123 | return nil, err |
| 124 | } |
| 125 | |
| 126 | log.Println("No config file used") |
| 127 | } else { |
| 128 | log.Printf("Using config file: %s", v.ConfigFileUsed()) |
| 129 | } |
| 130 | |
| 131 | // Return Viper |
| 132 | return v, nil |
| 133 | } |
| 134 | |
| 135 | type store struct { |
| 136 | *storage.Storage |
no test coverage detected