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
+30
-31
No files matched your search
@@ -29,24 +29,6 @@ func commandGet() *cobra.Command {
|
|||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "get [config_key]",
|
Use: "get [config_key]",
|
||||||
Args: cobra.ExactArgs(1),
|
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
|
|
||||||
// },
|
|
||||||
Short: "Get a value from configuration",
|
Short: "Get a value from configuration",
|
||||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
||||||
slog.Debug("config.get.PersistentPreRun")
|
slog.Debug("config.get.PersistentPreRun")
|
||||||
|
|||||||
@@ -17,12 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"maps"
|
"maps"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
"go.yaml.in/yaml/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
const EnvPrefix string = "JOBSEARCH"
|
const EnvPrefix string = "JOBSEARCH"
|
||||||
@@ -112,3 +115,27 @@ func LoadToViper(conf JobSearchConfig) {
|
|||||||
viper.SetDefault(key, flatMap[key])
|
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
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
|
||||||
"go.yaml.in/yaml/v3"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Prints configuration to stdout in flat dotted format
|
// Prints configuration to stdout in flat dotted format
|
||||||
func (conf JobSearchConfig) PrintTerminal() {
|
func (conf JobSearchConfig) PrintTerminal() {
|
||||||
for k, v := range conf.Flatten() {
|
fmt.Print(conf.String() + "\n")
|
||||||
typ, _ := conf.TypeOf(k)
|
|
||||||
fmt.Print(k, " = ", v, " <", typ, ">\n")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints configuration to stdout as JSON
|
// Prints configuration to stdout as JSON
|
||||||
func (conf JobSearchConfig) PrintJson() {
|
func (conf JobSearchConfig) PrintJson() {
|
||||||
confMap := conf.Map()
|
fmt.Print(conf.JSON() + "\n")
|
||||||
jbytes, _ := json.MarshalIndent(confMap, "", " ")
|
|
||||||
fmt.Print(string(jbytes) + "\n")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints configuration to stdout as YAML
|
// Prints configuration to stdout as YAML
|
||||||
func (conf JobSearchConfig) PrintYaml() {
|
func (conf JobSearchConfig) PrintYaml() {
|
||||||
confMap := conf.Map()
|
fmt.Print(conf.YAML() + "\n")
|
||||||
jbytes, _ := yaml.Marshal(confMap)
|
|
||||||
fmt.Print(string(jbytes) + "\n")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints configuration to logrus log at debug, info (default) or error level
|
// Prints configuration to logrus log at debug, info (default) or error level
|
||||||
|
|||||||
Reference in new issue
Block a user