Sfoglia il codice sorgente

repoDescriptor->repoInfo

zach rice 6 anni fa
parent
commit
c2143c5843
9 ha cambiato i file con 23 aggiunte e 28 eliminazioni
  1. 1 1
      main.go
  2. 1 1
      src/config.go
  3. 0 1
      src/config_test.go
  4. 3 6
      src/core.go
  5. 2 2
      src/github.go
  6. 2 2
      src/gitlab.go
  7. 3 4
      src/options.go
  8. 8 8
      src/repo.go
  9. 3 3
      src/utils.go

+ 1 - 1
main.go

@@ -3,5 +3,5 @@ package main
 import "github.com/zricethezav/gitleaks/src"
 
 func main() {
-	gitleaks.Run()
+	gitleaks.Run(gitleaks.ParseOpts())
 }

+ 1 - 1
src/config.go

@@ -177,7 +177,7 @@ func (config *Config) updateEntropyRanges(entropyLimitStr []string) error {
 
 // externalConfig will attempt to load a pinned ".gitleaks.toml" configuration file
 // from a remote or local repo. Use the --repo-config option to trigger this.
-func (config *Config) updateFromRepo(repo *RepoDescriptor) error {
+func (config *Config) updateFromRepo(repo *RepoInfo) error {
 	var tomlConfig TomlConfig
 	wt, err := repo.repository.Worktree()
 	if err != nil {

+ 0 - 1
src/config_test.go

@@ -1 +0,0 @@
-package gitleaks

+ 3 - 6
src/core.go

@@ -57,15 +57,12 @@ func init() {
 }
 
 // Run is the entry point for gitleaks
-func Run() {
+func Run(optsL *Options) {
 	var (
 		leaks []Leak
 		err   error
 	)
-	opts, err = setupOpts()
-	if err != nil {
-		log.Fatal(err)
-	}
+	opts = optsL
 	config, err = newConfig()
 	if err != nil {
 		log.Fatal(err)
@@ -84,7 +81,7 @@ func Run() {
 
 	// start audits
 	if opts.Repo != "" || opts.RepoPath != "" {
-		repoD, err := newRepoD()
+		repoD, err := newRepoInfo()
 		if err != nil {
 			goto postAudit
 		}

+ 2 - 2
src/github.go

@@ -188,7 +188,7 @@ func auditGithubRepos() ([]Leak, error) {
 
 // cloneGithubRepo clones a repo from the url parsed from a github repo. The repo
 // will be cloned to disk if --disk is set.
-func cloneGithubRepo(githubRepo *github.Repository) (*RepoDescriptor, error) {
+func cloneGithubRepo(githubRepo *github.Repository) (*RepoInfo, error) {
 	var (
 		repo *git.Repository
 		err  error
@@ -249,7 +249,7 @@ func cloneGithubRepo(githubRepo *github.Repository) (*RepoDescriptor, error) {
 	if err != nil {
 		return nil, err
 	}
-	return &RepoDescriptor{
+	return &RepoInfo{
 		repository: repo,
 		name:       *githubRepo.Name,
 	}, nil

+ 2 - 2
src/gitlab.go

@@ -121,7 +121,7 @@ func createGitlabTempDir() (string, error) {
 	return ownerDir, nil
 }
 
-func cloneGitlabRepo(tempDir string, p *gitlab.Project) (*RepoDescriptor, error) {
+func cloneGitlabRepo(tempDir string, p *gitlab.Project) (*RepoInfo, error) {
 	var (
 		repo *git.Repository
 		err  error
@@ -157,7 +157,7 @@ func cloneGitlabRepo(tempDir string, p *gitlab.Project) (*RepoDescriptor, error)
 		return nil, err
 	}
 
-	return &RepoDescriptor{
+	return &RepoInfo{
 		repository: repo,
 		name:       p.Name,
 	}, nil

+ 3 - 4
src/options.go

@@ -56,7 +56,7 @@ type Options struct {
 	SampleConfig bool   `long:"sample-config" description:"prints a sample config file"`
 }
 
-func setupOpts() (*Options, error) {
+func ParseOpts() (*Options) {
 	var opts Options
 	parser := flags.NewParser(&opts, flags.Default)
 	_, err := parser.Parse()
@@ -86,10 +86,9 @@ func setupOpts() (*Options, error) {
 
 	err = opts.guard()
 	if err != nil {
-		return nil, err
+		log.Fatal(err)
 	}
-	return &opts, err
-
+	return &opts
 }
 
 // optsGuard prevents invalid options

+ 8 - 8
src/repo.go

@@ -17,8 +17,8 @@ import (
 	"gopkg.in/src-d/go-git.v4/storage/memory"
 )
 
-// RepoDescriptor contains a src-d git repository and other data about the repo
-type RepoDescriptor struct {
+// RepoInfo contains a src-d git repository and other data about the repo
+type RepoInfo struct {
 	path       string
 	url        string
 	name       string
@@ -26,20 +26,20 @@ type RepoDescriptor struct {
 	err        error
 }
 
-func newRepoD() (*RepoDescriptor, error) {
+func newRepoInfo() (*RepoInfo, error) {
 	for _, re := range config.WhiteList.repos {
 		if re.FindString(opts.Repo) != "" {
 			return nil, fmt.Errorf("skipping %s, whitelisted", opts.Repo)
 		}
 	}
-	return &RepoDescriptor{
+	return &RepoInfo{
 		path: opts.RepoPath,
 		url:  opts.Repo,
 		name: filepath.Base(opts.Repo),
 	}, nil
 }
 
-func (repoD *RepoDescriptor) clone() error {
+func (repoD *RepoInfo) clone() error {
 	var (
 		err  error
 		repo *git.Repository
@@ -57,7 +57,7 @@ func (repoD *RepoDescriptor) clone() error {
 				Auth:     config.sshAuth,
 			})
 		} else {
-			// non-private
+			// public
 			repo, err = git.PlainClone(cloneTarget, false, &git.CloneOptions{
 				URL:      opts.Repo,
 				Progress: os.Stdout,
@@ -87,7 +87,7 @@ func (repoD *RepoDescriptor) clone() error {
 	return err
 }
 
-func (repoD *RepoDescriptor) audit() ([]Leak, error) {
+func (repoD *RepoInfo) audit() ([]Leak, error) {
 	var (
 		err   error
 		leaks []Leak
@@ -128,7 +128,7 @@ func (repoD *RepoDescriptor) audit() ([]Leak, error) {
 
 // auditGitReference beings the audit for a git reference. This function will
 // traverse the git reference and audit each line of each diff.
-func (repoD *RepoDescriptor) auditRef(ref *plumbing.Reference) []Leak {
+func (repoD *RepoInfo) auditRef(ref *plumbing.Reference) []Leak {
 	var (
 		err         error
 		repoName    string

+ 3 - 3
src/utils.go

@@ -154,10 +154,10 @@ func addLeak(leaks []Leak, line string, offender string, leakType string, diff g
 
 // discoverRepos walks all the children of `path`. If a child directory
 // contain a .git subdirectory then that repo will be added to the list of repos returned
-func discoverRepos(ownerPath string) ([]*RepoDescriptor, error) {
+func discoverRepos(ownerPath string) ([]*RepoInfo, error) {
 	var (
 		err    error
-		repoDs []*RepoDescriptor
+		repoDs []*RepoInfo
 	)
 	files, err := ioutil.ReadDir(ownerPath)
 	if err != nil {
@@ -166,7 +166,7 @@ func discoverRepos(ownerPath string) ([]*RepoDescriptor, error) {
 	for _, f := range files {
 		repoPath := path.Join(ownerPath, f.Name())
 		if f.IsDir() && containsGit(repoPath) {
-			repoDs = append(repoDs, &RepoDescriptor{
+			repoDs = append(repoDs, &RepoInfo{
 				name: f.Name(),
 				path: repoPath,
 			})