@@ -49,6 +49,8 @@ import (
4949 "strconv"
5050 "strings"
5151 "time"
52+
53+ "braces.dev/errtrace"
5254)
5355
5456func main () {
@@ -100,7 +102,7 @@ func (p *mainParams) Parse(w io.Writer, args []string) error {
100102 // TODO: toolexec mode
101103
102104 if err := flag .Parse (args ); err != nil {
103- return err
105+ return errtrace . Wrap ( err )
104106 }
105107
106108 p .Patterns = flag .Args ()
@@ -153,7 +155,7 @@ func (f *format) Set(s string) error {
153155 case "never" :
154156 * f = formatNever
155157 default :
156- return fmt .Errorf ("invalid format %q is not one of [auto, always, never]" , s )
158+ return errtrace . Wrap ( fmt .Errorf ("invalid format %q is not one of [auto, always, never]" , s ) )
157159 }
158160 return nil
159161}
@@ -184,13 +186,13 @@ func (cmd *mainCmd) Run(args []string) (exitCode int) {
184186
185187 var p mainParams
186188 if err := p .Parse (cmd .Stderr , args ); err != nil {
187- cmd .log .Println ("errtrace:" , err )
189+ cmd .log .Printf ("errtrace: %+v " , err )
188190 return 1
189191 }
190192
191193 files , err := expandPatterns (p .Patterns )
192194 if err != nil {
193- cmd .log .Println ("errtrace:" , err )
195+ cmd .log .Printf ("errtrace: %+v " , err )
194196 return 1
195197 }
196198
@@ -221,7 +223,7 @@ func (cmd *mainCmd) Run(args []string) (exitCode int) {
221223 ImplicitStdin : p .ImplicitStdin ,
222224 }
223225 if err := cmd .processFile (req ); err != nil {
224- cmd .log .Printf ("%s:%s " , display , err )
226+ cmd .log .Printf ("%s:%+v " , display , err )
225227 exitCode = 1
226228 }
227229 }
@@ -254,7 +256,7 @@ func expandPatterns(args []string) ([]string, error) {
254256 if len (patterns ) > 0 {
255257 pkgFiles , err := goListFiles (patterns )
256258 if err != nil {
257- return nil , fmt .Errorf ("go list: %w" , err )
259+ return nil , errtrace . Wrap ( fmt .Errorf ("go list: %w" , err ) )
258260 }
259261
260262 files = append (files , pkgFiles ... )
@@ -279,11 +281,11 @@ func goListFiles(patterns []string) (files []string, err error) {
279281
280282 stdout , err := cmd .StdoutPipe ()
281283 if err != nil {
282- return nil , fmt .Errorf ("create stdout pipe: %w" , err )
284+ return nil , errtrace . Wrap ( fmt .Errorf ("create stdout pipe: %w" , err ) )
283285 }
284286
285287 if err := cmd .Start (); err != nil {
286- return nil , fmt .Errorf ("start command: %w" , err )
288+ return nil , errtrace . Wrap ( fmt .Errorf ("start command: %w" , err ) )
287289 }
288290
289291 type packageInfo struct {
@@ -299,7 +301,7 @@ func goListFiles(patterns []string) (files []string, err error) {
299301 for decoder .More () {
300302 var pkg packageInfo
301303 if err := decoder .Decode (& pkg ); err != nil {
302- return nil , fmt .Errorf ("output malformed: %v " , err )
304+ return nil , errtrace . Wrap ( fmt .Errorf ("output malformed: %w " , err ) )
303305 }
304306
305307 for _ , pkgFiles := range [][]string {
@@ -316,7 +318,7 @@ func goListFiles(patterns []string) (files []string, err error) {
316318 }
317319
318320 if err := cmd .Wait (); err != nil {
319- return nil , fmt .Errorf ("%w\n %s" , err , stderr .String ())
321+ return nil , errtrace . Wrap ( fmt .Errorf ("%w\n %s" , err , stderr .String () ))
320322 }
321323
322324 return files , nil
@@ -346,12 +348,12 @@ func (cmd *mainCmd) processFile(r fileRequest) error {
346348
347349 src , err := cmd .readFile (r )
348350 if err != nil {
349- return err
351+ return errtrace . Wrap ( err )
350352 }
351353
352354 f , err := parser .ParseFile (fset , r .Filename , src , parser .ParseComments )
353355 if err != nil {
354- return err
356+ return errtrace . Wrap ( err )
355357 }
356358
357359 errtracePkg := "errtrace" // name to use for errtrace package
@@ -396,11 +398,11 @@ func (cmd *mainCmd) processFile(r fileRequest) error {
396398
397399 var inserts []insert
398400 w := walker {
399- fset : fset ,
400- optouts : optoutLines (fset , f .Comments ),
401- errtrace : errtracePkg ,
402- logger : cmd .log ,
403- inserts : & inserts ,
401+ fset : fset ,
402+ optouts : optoutLines (fset , f .Comments ),
403+ errtracePkg : errtracePkg ,
404+ logger : cmd .log ,
405+ inserts : & inserts ,
404406 }
405407 ast .Walk (& w , f )
406408
@@ -423,7 +425,7 @@ func (cmd *mainCmd) processFile(r fileRequest) error {
423425 if len (inserts ) > 0 {
424426 _ , err = fmt .Fprintf (cmd .Stdout , "%s\n " , r .Filename )
425427 }
426- return err
428+ return errtrace . Wrap ( err )
427429 }
428430
429431 // If errtrace isn't imported, but at least one insert was made,
@@ -546,7 +548,7 @@ func (cmd *mainCmd) processFile(r fileRequest) error {
546548 if r .Format {
547549 outSrc , err = gofmt .Source (outSrc )
548550 if err != nil {
549- return fmt .Errorf ("format: %w" , err )
551+ return errtrace . Wrap ( fmt .Errorf ("format: %w" , err ) )
550552 }
551553 }
552554
@@ -555,22 +557,22 @@ func (cmd *mainCmd) processFile(r fileRequest) error {
555557 } else {
556558 _ , err = cmd .Stdout .Write (outSrc )
557559 }
558- return err
560+ return errtrace . Wrap ( err )
559561}
560562
561563var _stdinWait = 200 * time .Millisecond
562564
563565func (cmd * mainCmd ) readFile (r fileRequest ) ([]byte , error ) {
564566 if r .Filepath != "-" {
565- return os .ReadFile (r .Filename )
567+ return errtrace . Wrap2 ( os .ReadFile (r .Filename ) )
566568 }
567569
568570 if r .Write {
569- return nil , fmt .Errorf ("can't use -w with stdin" )
571+ return nil , errtrace . Wrap ( fmt .Errorf ("can't use -w with stdin" ) )
570572 }
571573
572574 if ! r .ImplicitStdin {
573- return io .ReadAll (cmd .Stdin )
575+ return errtrace . Wrap2 ( io .ReadAll (cmd .Stdin ) )
574576 }
575577
576578 // If we're reading from stdin because there were no other arguments,
@@ -594,7 +596,7 @@ func (cmd *mainCmd) readFile(r fileRequest) ([]byte, error) {
594596 if errors .Is (err , io .EOF ) {
595597 err = nil
596598 }
597- return buff .Bytes (), err
599+ return buff .Bytes (), errtrace . Wrap ( err )
598600 }
599601
600602 if firstRead != nil {
@@ -607,9 +609,9 @@ func (cmd *mainCmd) readFile(r fileRequest) ([]byte, error) {
607609type walker struct {
608610 // Inputs
609611
610- fset * token.FileSet // file set for positional information
611- errtrace string // name of the errtrace package
612- logger * log.Logger
612+ fset * token.FileSet // file set for positional information
613+ errtracePkg string // name of the errtrace package
614+ logger * log.Logger
613615
614616 optouts map [int ]int // map from line to number of uses
615617
@@ -911,7 +913,7 @@ func (t *walker) isErrtraceWrap(expr ast.Expr) bool {
911913 return false
912914 }
913915
914- if ! isIdent (sel .X , t .errtrace ) {
916+ if ! isIdent (sel .X , t .errtracePkg ) {
915917 return false
916918 }
917919
0 commit comments