Config to string, JSON and YAML methods added and updated print methods to use new methods
This commit is contained in:
1 parent
e715024cbd
commit
a0fad30e99
3 files changed
+32
-33
No files matched your search
@@ -27,26 +27,8 @@ import (
|
||||
|
||||
func commandGet() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "get [config_key]",
|
||||
Args: cobra.ExactArgs(1),
|
||||
// Args: func(cmd *cobra.Command, args []string) error {
|
||||
// // Optionally run one of the validators provided by cobra
|
||||
// if err := cobra.ExactArgs(1)(cmd, args); err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// conf, ok := cli.ConfigFromContext(cmd.Context())
|
||||
// if !ok {
|
||||
// return errors.New("no configuration loaded")
|
||||
// }
|
||||
|
||||
// flatConf := config.FlattenConfig(conf)
|
||||
// if !util.HasKey(flatConf, args[0]) {
|
||||
// return fmt.Errorf("invalid config key specified: %s", args[0])
|
||||
// }
|
||||
|
||||
// return nil
|
||||
// },
|
||||
Use: "get [config_key]",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Short: "Get a value from configuration",
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
||||
slog.Debug("config.get.PersistentPreRun")
|
||||
|
||||
@@ -17,12 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"maps"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"go.yaml.in/yaml/v3"
|
||||
)
|
||||
|
||||
const EnvPrefix string = "JOBSEARCH"
|
||||
@@ -112,3 +115,27 @@ func LoadToViper(conf JobSearchConfig) {
|
||||
viper.SetDefault(key, flatMap[key])
|
||||
}
|
||||
}
|
||||
|
||||
// Converts configuration to a string in flat dotted format
|
||||
func (conf JobSearchConfig) String() string {
|
||||
var sb strings.Builder
|
||||
for k, v := range conf.Flatten() {
|
||||
typ, _ := conf.TypeOf(k)
|
||||
sb.WriteString(fmt.Sprint(k, " = ", v, " <", typ, ">"))
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
// Converts configuration to JSON
|
||||
func (conf JobSearchConfig) JSON() string {
|
||||
confMap := conf.Map()
|
||||
jbytes, _ := json.MarshalIndent(confMap, "", " ")
|
||||
return string(jbytes)
|
||||
}
|
||||
|
||||
// Converts configuration to YAML
|
||||
func (conf JobSearchConfig) YAML() string {
|
||||
confMap := conf.Map()
|
||||
ybytes, _ := yaml.Marshal(confMap)
|
||||
return string(ybytes)
|
||||
}
|
||||
@@ -17,33 +17,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
"go.yaml.in/yaml/v3"
|
||||
)
|
||||
|
||||
// Prints configuration to stdout in flat dotted format
|
||||
func (conf JobSearchConfig) PrintTerminal() {
|
||||
for k, v := range conf.Flatten() {
|
||||
typ, _ := conf.TypeOf(k)
|
||||
fmt.Print(k, " = ", v, " <", typ, ">\n")
|
||||
}
|
||||
fmt.Print(conf.String() + "\n")
|
||||
}
|
||||
|
||||
// Prints configuration to stdout as JSON
|
||||
func (conf JobSearchConfig) PrintJson() {
|
||||
confMap := conf.Map()
|
||||
jbytes, _ := json.MarshalIndent(confMap, "", " ")
|
||||
fmt.Print(string(jbytes) + "\n")
|
||||
fmt.Print(conf.JSON() + "\n")
|
||||
}
|
||||
|
||||
// Prints configuration to stdout as YAML
|
||||
func (conf JobSearchConfig) PrintYaml() {
|
||||
confMap := conf.Map()
|
||||
jbytes, _ := yaml.Marshal(confMap)
|
||||
fmt.Print(string(jbytes) + "\n")
|
||||
fmt.Print(conf.YAML() + "\n")
|
||||
}
|
||||
|
||||
// Prints configuration to logrus log at debug, info (default) or error level
|
||||
|
||||
Reference in new issue
Block a user