File tree Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "flag"
5
+ "fmt"
6
+ "io"
7
+ "log"
8
+ "os"
9
+
10
+ "sourcegraph.com/sourcegraph/go-diff/diff"
11
+ )
12
+
13
+ // A diagnostic program to aid in debugging diff parsing or printing
14
+ // errors.
15
+
16
+ const stdin = "<stdin>"
17
+
18
+ var (
19
+ diffPath = flag .String ("f" , stdin , "filename of diff (default: stdin)" )
20
+ fileIdx = flag .Int ("i" , - 1 , "if >= 0, only print and report errors from the i'th file (0-indexed)" )
21
+ )
22
+
23
+ func main () {
24
+ log .SetFlags (0 )
25
+ flag .Parse ()
26
+
27
+ var diffFile * os.File
28
+ if * diffPath == stdin {
29
+ diffFile = os .Stdin
30
+ } else {
31
+ var err error
32
+ diffFile , err = os .Open (* diffPath )
33
+ if err != nil {
34
+ log .Fatal (err )
35
+ }
36
+ }
37
+ defer diffFile .Close ()
38
+
39
+ r := diff .NewMultiFileDiffReader (diffFile )
40
+ for i := 0 ; ; i ++ {
41
+ report := (* fileIdx == - 1 ) || i == * fileIdx // true if -i==-1 or if this is the i'th file
42
+
43
+ label := fmt .Sprintf ("file(%d)" , i )
44
+ fdiff , err := r .ReadFile ()
45
+ if fdiff != nil {
46
+ label = fmt .Sprintf ("orig(%s) new(%s)" , fdiff .OrigName , fdiff .NewName )
47
+ }
48
+ if err == io .EOF {
49
+ break
50
+ }
51
+ if err != nil {
52
+ if report {
53
+ log .Fatalf ("err read %s: %s" , label , err )
54
+ } else {
55
+ continue
56
+ }
57
+ }
58
+
59
+ if report {
60
+ log .Printf ("ok read: %s" , label )
61
+ }
62
+
63
+ out , err := diff .PrintFileDiff (fdiff )
64
+ if err != nil {
65
+ if report {
66
+ log .Fatalf ("err print %s: %s" , label , err )
67
+ } else {
68
+ continue
69
+ }
70
+ }
71
+ if report {
72
+ if _ , err := os .Stdout .Write (out ); err != nil {
73
+ log .Fatal (err )
74
+ }
75
+ }
76
+ }
77
+ }
You can’t perform that action at this time.
0 commit comments