/* macli - Unofficial CLI-Based MyAnimeList Client Copyright © 2022 Vidhu Kant Sharma This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* viper.BindPFlag won't work if * multiple commands have the same * flags. so this is my hacky * way to do that stuff myself */ package util import ( "github.com/spf13/viper" "github.com/spf13/pflag" ) type SearchConfig struct { PromptLength int SearchLength int SearchOffset int SearchNSFW bool } // handles prompt-length, search-length, search-offset and search-nsfw func BindSearchConfig(flags *pflag.FlagSet) (SearchConfig, error) { var conf SearchConfig var err error if flags.Lookup("prompt-length").Changed { conf.PromptLength, err = flags.GetInt("prompt-length") if err != nil {return conf, err} } else { conf.PromptLength = viper.GetInt("searching.prompt_length") } if flags.Lookup("search-length").Changed { conf.SearchLength, err = flags.GetInt("search-length") if err != nil {return conf, err} } else { conf.SearchLength = viper.GetInt("searching.search_length") } if flags.Lookup("search-offset").Changed { conf.SearchOffset, err = flags.GetInt("search-offset") if err != nil {return conf, err} } else { conf.SearchOffset = viper.GetInt("searching.search_offset") } if flags.Lookup("search-nsfw").Changed { conf.SearchNSFW, err = flags.GetBool("search-nsfw") if err != nil {return conf, err} } else { conf.SearchNSFW = viper.GetBool("searching.search_nsfw") } return conf, nil }