ソースを参照

Merge pull request #106 from zricethezav/exclude-fork

exclude fork
Zachary Rice 7 年 前
コミット
08498600d1
3 ファイル変更19 行追加2 行削除
  1. 4 0
      CHANGELOG.md
  2. 10 1
      gitleaks_test.go
  3. 5 1
      main.go

+ 4 - 0
CHANGELOG.md

@@ -1,6 +1,10 @@
 CHANGELOG
 =========
 
+1.9.0
+-----
+- exclude fork option
+
 1.8.0
 -----
 - whitelist repos

+ 10 - 1
gitleaks_test.go

@@ -279,11 +279,20 @@ func TestRun(t *testing.T) {
 			testOpts: Options{
 				GithubOrg: "gitleakstestorg",
 			},
-			description:    "test github org",
+			description:    "test github org, whitelist repo",
 			numLeaks:       0,
 			expectedErrMsg: "",
 			configPath:     path.Join(configsDir, "repo"),
 		},
+		{
+			testOpts: Options{
+				GithubOrg:    "gitleakstestorg",
+				ExcludeForks: true,
+			},
+			description:    "test github org, exclude forks",
+			numLeaks:       0,
+			expectedErrMsg: "",
+		},
 	}
 	g := goblin.Goblin(t)
 	for _, test := range tests {

+ 5 - 1
main.go

@@ -87,6 +87,7 @@ type Options struct {
 	SingleSearch  string `long:"single-search" description:"single regular expression to search for"`
 	ConfigPath    string `long:"config" description:"path to gitleaks config"`
 	SSHKey        string `long:"ssh-key" description:"path to ssh key"`
+	ExcludeForks  bool   `long:"exclude-forks" description:"exclude forks for organization/user audits"`
 	// TODO: IncludeMessages  string `long:"messages" description:"include commit messages in audit"`
 
 	// Output options
@@ -123,7 +124,7 @@ type gitDiff struct {
 }
 
 const defaultGithubURL = "https://api.github.com/"
-const version = "1.8.0"
+const version = "1.9.0"
 const errExit = 2
 const leakExit = 1
 const defaultConfig = `
@@ -715,6 +716,9 @@ func cloneGithubRepo(githubRepo *github.Repository) (*RepoDescriptor, error) {
 		repo *git.Repository
 		err  error
 	)
+	if opts.ExcludeForks && githubRepo.GetFork() {
+		return nil, fmt.Errorf("skipping %s, excluding forks", *githubRepo.Name)
+	}
 	for _, repoName := range whiteListRepos {
 		if repoName == *githubRepo.Name {
 			return nil, fmt.Errorf("skipping %s, whitelisted", repoName)