// SPDX-FileCopyrightText: 2022 Risk.Ident GmbH <contact@riskident.com>
//
// SPDX-License-Identifier: GPL-3.0-or-later
//
// 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 <http://www.gnu.org/licenses/>.

package cmd

import (
	"os"

	"github.com/spf13/cobra"
	"gopkg.in/yaml.v3"
)

var configFlags = struct {
	noRedacting bool
}{}

// configCmd represents the config command
var configCmd = &cobra.Command{
	Use:   "config",
	Short: "Prints the parsed config",
	RunE: func(cmd *cobra.Command, args []string) error {
		enc := yaml.NewEncoder(os.Stdout)
		enc.SetIndent(2)
		defer enc.Close()

		printableCfg := cfg
		if !configFlags.noRedacting {
			printableCfg = printableCfg.Censored()
		}

		return enc.Encode(printableCfg)
	},
}

func init() {
	rootCmd.AddCommand(configCmd)

	configCmd.Flags().BoolVar(&configFlags.noRedacting, "no-redacting", false, "Show secret fields, instead of redacting tokens and private keys.")
}
