Skip to content

Commit 5721e12

Browse files
committed
Move generated files list out of .go and into .txt
1 parent 8c828ff commit 5721e12

File tree

3 files changed

+89
-24
lines changed

3 files changed

+89
-24
lines changed

mungegithub/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ RUN apt-get install -y -qq ca-certificates
1919
ADD mungegithub /mungegithub
2020
ADD blunderbuss.yml /blunderbuss.yml
2121
ADD path-label.txt /path-label.txt
22+
ADD generated-files.txt /generated-files.txt
2223
ADD run.sh /run.sh
2324
RUN chmod a+x /run.sh
2425
CMD /run.sh

mungegithub/generated-files.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# File is of the format [TYPE] [NAME]
2+
# Where type can be path, prefix, or paths-from-repo
3+
#
4+
# Files which match these things will not be counted when determining
5+
# the size of a given PR
6+
7+
path pkg/api/v1/deep_copy_generated.go
8+
path pkg/api/deep_copy_generated.go
9+
path pkg/expapi/v1/deep_copy_generated.go
10+
path pkg/expapi/deep_copy_generated.go
11+
path pkg/api/v1/conversion_generated.go
12+
path pkg/expapi/v1/conversion_generated.go
13+
path api/swagger-spec/resourceListing.json
14+
path api/swagger-spec/version.json
15+
path api/swagger-spec/api.json
16+
path api/swagger-spec/v1.json
17+
18+
prefix Godeps/
19+
20+
paths-from-repo .generated_docs

mungegithub/pulls/size.go

Lines changed: 68 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ limitations under the License.
1717
package pulls
1818

1919
import (
20+
"bufio"
2021
"fmt"
22+
"os"
2123
"strings"
2224

2325
github_util "k8s.io/contrib/github"
@@ -30,7 +32,9 @@ import (
3032
)
3133

3234
type PRSizeMunger struct {
33-
genFiles *sets.String
35+
generatedFilesFile string
36+
genFiles *sets.String
37+
genPrefixes *[]string
3438
}
3539

3640
func init() {
@@ -39,7 +43,9 @@ func init() {
3943

4044
func (PRSizeMunger) Name() string { return "size" }
4145

42-
func (PRSizeMunger) AddFlags(cmd *cobra.Command) {}
46+
func (p *PRSizeMunger) AddFlags(cmd *cobra.Command) {
47+
cmd.Flags().StringVar(&p.generatedFilesFile, "generated-files-config", "generated-files.txt", "file containing the pathname to label mappings")
48+
}
4349

4450
const labelSizePrefix = "size/"
4551

@@ -51,34 +57,70 @@ const labelSizePrefix = "size/"
5157
// our results are slightly wrong, who cares? Instead look for the
5258
// generated files once and if someone changed what files are generated
5359
// we'll size slightly wrong. No biggie.
54-
func (s *PRSizeMunger) getGeneratedFiles(config *config.MungeConfig) sets.String {
60+
func (s *PRSizeMunger) getGeneratedFiles(config *config.MungeConfig) {
5561
if s.genFiles != nil {
56-
return *s.genFiles
62+
return
5763
}
5864
files := sets.NewString()
59-
files.Insert("pkg/api/v1/deep_copy_generated.go")
60-
files.Insert("pkg/api/deep_copy_generated.go")
61-
files.Insert("pkg/expapi/v1/deep_copy_generated.go")
62-
files.Insert("pkg/expapi/deep_copy_generated.go")
63-
files.Insert("pkg/api/v1/conversion_generated.go")
64-
files.Insert("pkg/expapi/v1/conversion_generated.go")
65-
files.Insert("api/swagger-spec/resourceListing.json")
66-
files.Insert("api/swagger-spec/version.json")
67-
files.Insert("api/swagger-spec/api.json")
68-
files.Insert("api/swagger-spec/v1.json")
69-
docs, err := config.GetFileContents(".generated_docs", "")
65+
prefixes := []string{}
66+
s.genFiles = &files
67+
s.genPrefixes = &prefixes
68+
69+
file := s.generatedFilesFile
70+
if len(file) == 0 {
71+
glog.Infof("No --generated-files-config= supplied, applying no labels")
72+
return
73+
}
74+
fp, err := os.Open(file)
7075
if err != nil {
71-
docs = ""
76+
glog.Errorf("Unable to open %q: %v", file, err)
77+
return
7278
}
73-
docSlice := strings.Split(docs, "\n")
74-
files.Insert(docSlice...)
7579

80+
defer fp.Close()
81+
scanner := bufio.NewScanner(fp)
82+
for scanner.Scan() {
83+
line := scanner.Text()
84+
if strings.HasPrefix(line, "#") || line == "" {
85+
continue
86+
}
87+
fields := strings.Fields(line)
88+
if len(fields) != 2 {
89+
glog.Errorf("Invalid line in generated docs config %s: %q", file, line)
90+
continue
91+
}
92+
eType := fields[0]
93+
file := fields[1]
94+
if eType == "prefix" {
95+
prefixes = append(prefixes, file)
96+
} else if eType == "path" {
97+
files.Insert(file)
98+
} else if eType == "paths-from-repo" {
99+
docs, err := config.GetFileContents(file, "")
100+
if err != nil {
101+
continue
102+
}
103+
docSlice := strings.Split(docs, "\n")
104+
files.Insert(docSlice...)
105+
} else {
106+
glog.Errorf("Invalid line in generated docs config, unknown type: %s, %q", eType, line)
107+
continue
108+
}
109+
}
110+
if scanner.Err() != nil {
111+
glog.Errorf("Error scanning %s: %v", file, err)
112+
return
113+
}
76114
s.genFiles = &files
77-
return *s.genFiles
115+
s.genPrefixes = &prefixes
116+
117+
return
78118
}
79119

80120
func (s *PRSizeMunger) MungePullRequest(config *config.MungeConfig, pr *github.PullRequest, issue *github.Issue, commits []github.RepositoryCommit, events []github.IssueEvent) {
81-
genFiles := s.getGeneratedFiles(config)
121+
s.getGeneratedFiles(config)
122+
genFiles := *s.genFiles
123+
genPrefixes := *s.genPrefixes
82124

83125
if pr.Additions == nil {
84126
glog.Warningf("PR %d has nil Additions", *pr.Number)
@@ -93,10 +135,12 @@ func (s *PRSizeMunger) MungePullRequest(config *config.MungeConfig, pr *github.P
93135

94136
for _, c := range commits {
95137
for _, f := range c.Files {
96-
if strings.HasPrefix(*f.Filename, "Godeps/") {
97-
adds = adds - *f.Additions
98-
dels = dels - *f.Deletions
99-
continue
138+
for _, p := range genPrefixes {
139+
if strings.HasPrefix(*f.Filename, p) {
140+
adds = adds - *f.Additions
141+
dels = dels - *f.Deletions
142+
continue
143+
}
100144
}
101145
if genFiles.Has(*f.Filename) {
102146
adds = adds - *f.Additions

0 commit comments

Comments
 (0)