@@ -29,12 +29,24 @@ type dateRange struct {
29
29
func mainE () error {
30
30
// Ensure that all files have proper license dates
31
31
32
+ rewrite := false
33
+
34
+ for _ , a := range os .Args [1 :] {
35
+ if a == "-w" {
36
+ rewrite = true
37
+ }
38
+ }
39
+
32
40
files := map [string ]int {}
33
41
34
42
currentHeaders := map [string ]dateRange {}
35
43
36
44
// Extract current dates
37
45
for _ , file := range os .Args [1 :] {
46
+ if file == "-w" {
47
+ continue
48
+ }
49
+
38
50
var out bytes.Buffer
39
51
40
52
cmd := exec .Command ("git" , "log" , "-n" , "1" , "--pretty=format:%cd" , file )
@@ -79,6 +91,21 @@ func mainE() error {
79
91
valid = false
80
92
} else if date < c .from || date > c .to {
81
93
println (fmt .Sprintf ("Date %d not in range %d-%d for %s. File has beed modified" , date , c .from , c .to , file ))
94
+ if rewrite {
95
+ println ("Rewrite file" )
96
+
97
+ q := fmt .Sprintf ("// Copyright %d-%d ArangoDB GmbH, Cologne, Germany" , c .from , c .to )
98
+ if c .from == c .to {
99
+ q = fmt .Sprintf ("// Copyright %d ArangoDB GmbH, Cologne, Germany" , c .to )
100
+ }
101
+
102
+ changed , err := rewriteLicenseDates (file , q , fmt .Sprintf ("// Copyright %d-%d ArangoDB GmbH, Cologne, Germany" , c .from , date ))
103
+ if err != nil {
104
+ return err
105
+ } else if changed {
106
+ continue
107
+ }
108
+ }
82
109
valid = false
83
110
}
84
111
}
@@ -90,6 +117,55 @@ func mainE() error {
90
117
return nil
91
118
}
92
119
120
+ func rewriteLicenseDates (file string , from , to string ) (bool , error ) {
121
+ data , changed , err := readNewLicenseDates (file , from , to )
122
+ if err != nil {
123
+ return false , err
124
+ }
125
+
126
+ if ! changed {
127
+ return false , nil
128
+ }
129
+
130
+ if err := os .WriteFile (file , data , 0644 ); err != nil {
131
+ if err != nil {
132
+ return false , err
133
+ }
134
+ }
135
+
136
+ return true , nil
137
+ }
138
+
139
+ func readNewLicenseDates (file string , from , to string ) ([]byte , bool , error ) {
140
+ readFile , err := os .Open (file )
141
+ if err != nil {
142
+ return nil , false , err
143
+ }
144
+
145
+ defer readFile .Close ()
146
+
147
+ fileScanner := bufio .NewScanner (readFile )
148
+
149
+ fileScanner .Split (bufio .ScanLines )
150
+
151
+ q := bytes .NewBuffer (nil )
152
+
153
+ got := false
154
+
155
+ for fileScanner .Scan () {
156
+ t := fileScanner .Text ()
157
+ if t == from {
158
+ got = true
159
+ q .WriteString (to )
160
+ } else {
161
+ q .WriteString (t )
162
+ }
163
+ q .WriteString ("\n " )
164
+ }
165
+
166
+ return q .Bytes (), got , nil
167
+ }
168
+
93
169
func extractFileLicenseData (file string ) (int , int , error ) {
94
170
readFile , err := os .Open (file )
95
171
if err != nil {
0 commit comments