@@ -56,6 +56,7 @@ type Provider struct {
5656 userType string // The type of user i.e bot or not
5757 skippedRun
5858 triggerEvent string
59+ changedFiles * changedfiles.ChangedFiles
5960}
6061
6162type skippedRun struct {
@@ -500,67 +501,70 @@ func (v *Provider) getPullRequest(ctx context.Context, runevent *info.Event) (*i
500501 return runevent , nil
501502}
502503
503- // GetFiles get a files from pull request .
504+ // GetFiles gets the files changed by a given event .
504505func (v * Provider ) GetFiles (ctx context.Context , runevent * info.Event ) (changedfiles.ChangedFiles , error ) {
505- if runevent .TriggerTarget == triggertype .PullRequest {
506- opt := & github.ListOptions {PerPage : v .PaginedNumber }
507- changedFiles := changedfiles.ChangedFiles {}
508- for {
509- repoCommit , resp , err := wrapAPI (v , "list_pull_request_files" , func () ([]* github.CommitFile , * github.Response , error ) {
510- return v .Client ().PullRequests .ListFiles (ctx , runevent .Organization , runevent .Repository , runevent .PullRequestNumber , opt )
506+ if v .changedFiles == nil {
507+ switch runevent .TriggerTarget {
508+ case triggertype .PullRequest :
509+ opt := & github.ListOptions {PerPage : v .PaginedNumber }
510+ changedFiles := changedfiles.ChangedFiles {}
511+ for {
512+ repoCommit , resp , err := wrapAPI (v , "list_pull_request_files" , func () ([]* github.CommitFile , * github.Response , error ) {
513+ return v .Client ().PullRequests .ListFiles (ctx , runevent .Organization , runevent .Repository , runevent .PullRequestNumber , opt )
514+ })
515+ if err != nil {
516+ return changedfiles.ChangedFiles {}, err
517+ }
518+ for j := range repoCommit {
519+ changedFiles .All = append (changedFiles .All , * repoCommit [j ].Filename )
520+ if * repoCommit [j ].Status == "added" {
521+ changedFiles .Added = append (changedFiles .Added , * repoCommit [j ].Filename )
522+ }
523+ if * repoCommit [j ].Status == "removed" {
524+ changedFiles .Deleted = append (changedFiles .Deleted , * repoCommit [j ].Filename )
525+ }
526+ if * repoCommit [j ].Status == "modified" {
527+ changedFiles .Modified = append (changedFiles .Modified , * repoCommit [j ].Filename )
528+ }
529+ if * repoCommit [j ].Status == "renamed" {
530+ changedFiles .Renamed = append (changedFiles .Renamed , * repoCommit [j ].Filename )
531+ }
532+ }
533+ if resp .NextPage == 0 {
534+ break
535+ }
536+ opt .Page = resp .NextPage
537+ }
538+ v .changedFiles = & changedFiles
539+ case triggertype .Push :
540+ changedFiles := changedfiles.ChangedFiles {}
541+ rC , _ , err := wrapAPI (v , "get_commit_files" , func () (* github.RepositoryCommit , * github.Response , error ) {
542+ return v .Client ().Repositories .GetCommit (ctx , runevent .Organization , runevent .Repository , runevent .SHA , & github.ListOptions {})
511543 })
512544 if err != nil {
513545 return changedfiles.ChangedFiles {}, err
514546 }
515- for j := range repoCommit {
516- changedFiles .All = append (changedFiles .All , * repoCommit [ j ].Filename )
517- if * repoCommit [ j ].Status == "added" {
518- changedFiles .Added = append (changedFiles .Added , * repoCommit [ j ].Filename )
547+ for i := range rC . Files {
548+ changedFiles .All = append (changedFiles .All , * rC . Files [ i ].Filename )
549+ if * rC . Files [ i ].Status == "added" {
550+ changedFiles .Added = append (changedFiles .Added , * rC . Files [ i ].Filename )
519551 }
520- if * repoCommit [ j ].Status == "removed" {
521- changedFiles .Deleted = append (changedFiles .Deleted , * repoCommit [ j ].Filename )
552+ if * rC . Files [ i ].Status == "removed" {
553+ changedFiles .Deleted = append (changedFiles .Deleted , * rC . Files [ i ].Filename )
522554 }
523- if * repoCommit [ j ].Status == "modified" {
524- changedFiles .Modified = append (changedFiles .Modified , * repoCommit [ j ].Filename )
555+ if * rC . Files [ i ].Status == "modified" {
556+ changedFiles .Modified = append (changedFiles .Modified , * rC . Files [ i ].Filename )
525557 }
526- if * repoCommit [ j ].Status == "renamed" {
527- changedFiles .Renamed = append (changedFiles .Renamed , * repoCommit [ j ].Filename )
558+ if * rC . Files [ i ].Status == "renamed" {
559+ changedFiles .Renamed = append (changedFiles .Renamed , * rC . Files [ i ].Filename )
528560 }
529561 }
530- if resp .NextPage == 0 {
531- break
532- }
533- opt .Page = resp .NextPage
534- }
535- return changedFiles , nil
536- }
537-
538- if runevent .TriggerTarget == "push" {
539- changedFiles := changedfiles.ChangedFiles {}
540- rC , _ , err := wrapAPI (v , "get_commit_files" , func () (* github.RepositoryCommit , * github.Response , error ) {
541- return v .Client ().Repositories .GetCommit (ctx , runevent .Organization , runevent .Repository , runevent .SHA , & github.ListOptions {})
542- })
543- if err != nil {
544- return changedfiles.ChangedFiles {}, err
545- }
546- for i := range rC .Files {
547- changedFiles .All = append (changedFiles .All , * rC .Files [i ].Filename )
548- if * rC .Files [i ].Status == "added" {
549- changedFiles .Added = append (changedFiles .Added , * rC .Files [i ].Filename )
550- }
551- if * rC .Files [i ].Status == "removed" {
552- changedFiles .Deleted = append (changedFiles .Deleted , * rC .Files [i ].Filename )
553- }
554- if * rC .Files [i ].Status == "modified" {
555- changedFiles .Modified = append (changedFiles .Modified , * rC .Files [i ].Filename )
556- }
557- if * rC .Files [i ].Status == "renamed" {
558- changedFiles .Renamed = append (changedFiles .Renamed , * rC .Files [i ].Filename )
559- }
562+ v .changedFiles = & changedFiles
563+ default :
564+ v .changedFiles = & changedfiles.ChangedFiles {}
560565 }
561- return changedFiles , nil
562566 }
563- return changedfiles. ChangedFiles {} , nil
567+ return * v . changedFiles , nil
564568}
565569
566570// getObject Get an object from a repository.
0 commit comments