protect.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package cmd
  2. import (
  3. "time"
  4. "github.com/rs/zerolog/log"
  5. "github.com/spf13/cobra"
  6. "github.com/zricethezav/gitleaks/v8/report"
  7. "github.com/zricethezav/gitleaks/v8/sources"
  8. )
  9. func init() {
  10. protectCmd.Flags().Bool("staged", false, "detect secrets in a --staged state")
  11. rootCmd.AddCommand(protectCmd)
  12. }
  13. var protectCmd = &cobra.Command{
  14. Use: "protect",
  15. Short: "protect secrets in code",
  16. Run: runProtect,
  17. }
  18. func runProtect(cmd *cobra.Command, args []string) {
  19. initConfig()
  20. var err error
  21. // setup config (aka, the thing that defines rules)
  22. cfg := Config(cmd)
  23. exitCode, _ := cmd.Flags().GetInt("exit-code")
  24. staged, _ := cmd.Flags().GetBool("staged")
  25. source, err := cmd.Flags().GetString("source")
  26. if err != nil {
  27. log.Fatal().Err(err).Msg("")
  28. }
  29. start := time.Now()
  30. detector := Detector(cmd, cfg, source)
  31. // start git scan
  32. var findings []report.Finding
  33. gitCmd, err := sources.NewGitDiffCmd(source, staged)
  34. if err != nil {
  35. log.Fatal().Err(err).Msg("")
  36. }
  37. findings, err = detector.DetectGit(gitCmd)
  38. findingSummaryAndExit(findings, cmd, cfg, exitCode, start, err)
  39. }