12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package generator
-
- import (
- "fmt"
- "os"
- "path/filepath"
-
- "github.com/spf13/viper"
- )
-
- // LanguageDefinition in the configuration file.
- type LanguageDefinition struct {
- Layout SectionOpts `mapstructure:"layout"`
- }
-
- // ConfigureOpts for generation
- func (d *LanguageDefinition) ConfigureOpts(opts *GenOpts) error {
- opts.Sections = d.Layout
- if opts.LanguageOpts == nil {
- opts.LanguageOpts = GoLangOpts()
- }
- return nil
- }
-
- // LanguageConfig structure that is obtained from parsing a config file
- type LanguageConfig map[string]LanguageDefinition
-
- // ReadConfig at the specified path, when no path is specified it will look into
- // the current directory and load a .swagger.{yml,json,hcl,toml,properties} file
- // Returns a viper config or an error
- func ReadConfig(fpath string) (*viper.Viper, error) {
- v := viper.New()
- if fpath != "" {
- if !fileExists(fpath, "") {
- return nil, fmt.Errorf("can't find file for %q", fpath)
- }
- file, err := os.Open(fpath)
- if err != nil {
- return nil, err
- }
- defer func() { _ = file.Close() }()
- ext := filepath.Ext(fpath)
- if len(ext) > 0 {
- ext = ext[1:]
- }
- v.SetConfigType(ext)
- if err := v.ReadConfig(file); err != nil {
- return nil, err
- }
- return v, nil
- }
-
- v.SetConfigName(".swagger")
- v.AddConfigPath(".")
- if err := v.ReadInConfig(); err != nil {
- if _, ok := err.(viper.UnsupportedConfigError); !ok && v.ConfigFileUsed() != "" {
- return nil, err
- }
- }
- return v, nil
- }
|