| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package hosts
- import (
- "strings"
- "github.com/zricethezav/gitleaks/v5/manager"
- )
- const (
- _github int = iota + 1
- _gitlab
- )
- // Host is an interface used for defining external git hosting providers like github and gitlab.
- // TODO add bitbucket
- type Host interface {
- Scan()
- ScanPR()
- }
- // Run kicks off a host scan. This function accepts a manager and determines what host it should scan
- func Run(m *manager.Manager) error {
- var host Host
- var err error
- switch getHost(m.Opts.Host) {
- case _github:
- host, err = NewGithubClient(m)
- case _gitlab:
- host, err = NewGitlabClient(m)
- default:
- return nil
- }
- if err != nil {
- return err
- }
- if m.Opts.PullRequest != "" {
- host.ScanPR()
- } else {
- host.Scan()
- }
- return err
- }
- func getHost(host string) int {
- if strings.ToLower(host) == "github" {
- return _github
- } else if strings.ToLower(host) == "gitlab" {
- return _gitlab
- }
- return -1
- }
|