@@ -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 {
@@ -517,67 +518,70 @@ func (v *Provider) getPullRequest(ctx context.Context, runevent *info.Event) (*i
517518 return runevent , nil
518519}
519520
520- // GetFiles get a files from pull request .
521+ // GetFiles gets the files changed by a given event .
521522func (v * Provider ) GetFiles (ctx context.Context , runevent * info.Event ) (changedfiles.ChangedFiles , error ) {
522- if runevent .TriggerTarget == triggertype .PullRequest {
523- opt := & github.ListOptions {PerPage : v .PaginedNumber }
524- changedFiles := changedfiles.ChangedFiles {}
525- for {
526- repoCommit , resp , err := wrapAPI (v , "list_pull_request_files" , func () ([]* github.CommitFile , * github.Response , error ) {
527- return v .Client ().PullRequests .ListFiles (ctx , runevent .Organization , runevent .Repository , runevent .PullRequestNumber , opt )
523+ if v .changedFiles == nil {
524+ switch runevent .TriggerTarget {
525+ case triggertype .PullRequest :
526+ opt := & github.ListOptions {PerPage : v .PaginedNumber }
527+ changedFiles := changedfiles.ChangedFiles {}
528+ for {
529+ repoCommit , resp , err := wrapAPI (v , "list_pull_request_files" , func () ([]* github.CommitFile , * github.Response , error ) {
530+ return v .Client ().PullRequests .ListFiles (ctx , runevent .Organization , runevent .Repository , runevent .PullRequestNumber , opt )
531+ })
532+ if err != nil {
533+ return changedfiles.ChangedFiles {}, err
534+ }
535+ for j := range repoCommit {
536+ changedFiles .All = append (changedFiles .All , * repoCommit [j ].Filename )
537+ if * repoCommit [j ].Status == "added" {
538+ changedFiles .Added = append (changedFiles .Added , * repoCommit [j ].Filename )
539+ }
540+ if * repoCommit [j ].Status == "removed" {
541+ changedFiles .Deleted = append (changedFiles .Deleted , * repoCommit [j ].Filename )
542+ }
543+ if * repoCommit [j ].Status == "modified" {
544+ changedFiles .Modified = append (changedFiles .Modified , * repoCommit [j ].Filename )
545+ }
546+ if * repoCommit [j ].Status == "renamed" {
547+ changedFiles .Renamed = append (changedFiles .Renamed , * repoCommit [j ].Filename )
548+ }
549+ }
550+ if resp .NextPage == 0 {
551+ break
552+ }
553+ opt .Page = resp .NextPage
554+ }
555+ v .changedFiles = & changedFiles
556+ case triggertype .Push :
557+ changedFiles := changedfiles.ChangedFiles {}
558+ rC , _ , err := wrapAPI (v , "get_commit_files" , func () (* github.RepositoryCommit , * github.Response , error ) {
559+ return v .Client ().Repositories .GetCommit (ctx , runevent .Organization , runevent .Repository , runevent .SHA , & github.ListOptions {})
528560 })
529561 if err != nil {
530562 return changedfiles.ChangedFiles {}, err
531563 }
532- for j := range repoCommit {
533- changedFiles .All = append (changedFiles .All , * repoCommit [ j ].Filename )
534- if * repoCommit [ j ].Status == "added" {
535- changedFiles .Added = append (changedFiles .Added , * repoCommit [ j ].Filename )
564+ for i := range rC . Files {
565+ changedFiles .All = append (changedFiles .All , * rC . Files [ i ].Filename )
566+ if * rC . Files [ i ].Status == "added" {
567+ changedFiles .Added = append (changedFiles .Added , * rC . Files [ i ].Filename )
536568 }
537- if * repoCommit [ j ].Status == "removed" {
538- changedFiles .Deleted = append (changedFiles .Deleted , * repoCommit [ j ].Filename )
569+ if * rC . Files [ i ].Status == "removed" {
570+ changedFiles .Deleted = append (changedFiles .Deleted , * rC . Files [ i ].Filename )
539571 }
540- if * repoCommit [ j ].Status == "modified" {
541- changedFiles .Modified = append (changedFiles .Modified , * repoCommit [ j ].Filename )
572+ if * rC . Files [ i ].Status == "modified" {
573+ changedFiles .Modified = append (changedFiles .Modified , * rC . Files [ i ].Filename )
542574 }
543- if * repoCommit [ j ].Status == "renamed" {
544- changedFiles .Renamed = append (changedFiles .Renamed , * repoCommit [ j ].Filename )
575+ if * rC . Files [ i ].Status == "renamed" {
576+ changedFiles .Renamed = append (changedFiles .Renamed , * rC . Files [ i ].Filename )
545577 }
546578 }
547- if resp .NextPage == 0 {
548- break
549- }
550- opt .Page = resp .NextPage
551- }
552- return changedFiles , nil
553- }
554-
555- if runevent .TriggerTarget == "push" {
556- changedFiles := changedfiles.ChangedFiles {}
557- rC , _ , err := wrapAPI (v , "get_commit_files" , func () (* github.RepositoryCommit , * github.Response , error ) {
558- return v .Client ().Repositories .GetCommit (ctx , runevent .Organization , runevent .Repository , runevent .SHA , & github.ListOptions {})
559- })
560- if err != nil {
561- return changedfiles.ChangedFiles {}, err
562- }
563- for i := range rC .Files {
564- changedFiles .All = append (changedFiles .All , * rC .Files [i ].Filename )
565- if * rC .Files [i ].Status == "added" {
566- changedFiles .Added = append (changedFiles .Added , * rC .Files [i ].Filename )
567- }
568- if * rC .Files [i ].Status == "removed" {
569- changedFiles .Deleted = append (changedFiles .Deleted , * rC .Files [i ].Filename )
570- }
571- if * rC .Files [i ].Status == "modified" {
572- changedFiles .Modified = append (changedFiles .Modified , * rC .Files [i ].Filename )
573- }
574- if * rC .Files [i ].Status == "renamed" {
575- changedFiles .Renamed = append (changedFiles .Renamed , * rC .Files [i ].Filename )
576- }
579+ v .changedFiles = & changedFiles
580+ default :
581+ v .changedFiles = & changedfiles.ChangedFiles {}
577582 }
578- return changedFiles , nil
579583 }
580- return changedfiles. ChangedFiles {} , nil
584+ return * v . changedFiles , nil
581585}
582586
583587// getObject Get an object from a repository.
0 commit comments