4
0

protect.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package cmd
  2. import (
  3. "time"
  4. "github.com/spf13/cobra"
  5. "github.com/zricethezav/gitleaks/v8/logging"
  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. protectCmd.Flags().String("log-opts", "", "git log options")
  12. protectCmd.Flags().StringP("source", "s", ".", "path to source")
  13. rootCmd.AddCommand(protectCmd)
  14. }
  15. var protectCmd = &cobra.Command{
  16. Use: "protect",
  17. Short: "protect secrets in code",
  18. Run: runProtect,
  19. Hidden: true,
  20. }
  21. func runProtect(cmd *cobra.Command, args []string) {
  22. source, err := cmd.Flags().GetString("source")
  23. if err != nil {
  24. logging.Fatal().Err(err).Msg("could not get source")
  25. }
  26. initConfig(source)
  27. // setup config (aka, the thing that defines rules)
  28. cfg := Config(cmd)
  29. exitCode, _ := cmd.Flags().GetInt("exit-code")
  30. staged, _ := cmd.Flags().GetBool("staged")
  31. start := time.Now()
  32. detector := Detector(cmd, cfg, source)
  33. // start git scan
  34. var findings []report.Finding
  35. gitCmd, err := sources.NewGitDiffCmd(source, staged)
  36. if err != nil {
  37. logging.Fatal().Err(err).Msg("")
  38. }
  39. findings, err = detector.DetectGit(gitCmd)
  40. findingSummaryAndExit(detector, findings, exitCode, start, err)
  41. }