|  | package common | 
|  |  | 
|  | import ( | 
|  | "fmt" | 
|  | "path/filepath" | 
|  | "strings" | 
|  |  | 
|  | "dawn.googlesource.com/dawn/tools/src/fileutils" | 
|  | ) | 
|  |  | 
|  | // StaleFiles is a list of generated file paths that need updating | 
|  | type StaleFiles []string | 
|  |  | 
|  | func (l StaleFiles) Error() string { | 
|  | projectRoot := fileutils.DawnRoot() | 
|  | msg := &strings.Builder{} | 
|  | fmt.Fprintln(msg, len(l), "files need regenerating:") | 
|  | for _, path := range l { | 
|  | if rel, err := filepath.Rel(projectRoot, path); err == nil { | 
|  | fmt.Fprintln(msg, " •", rel) | 
|  | } else { | 
|  | fmt.Fprintln(msg, " •", path) | 
|  | } | 
|  | } | 
|  | fmt.Fprintln(msg, "Regenerate these files with: ./tools/run gen") | 
|  | return msg.String() | 
|  | } |