...

Source file src/github.com/bazelbuild/buildtools/edit/safe/buildifier.go

Documentation: github.com/bazelbuild/buildtools/edit/safe

     1  // Package buildifier provides a Buildifier which doesn't call os.exec.
     2  //
     3  // There are some programming frameworks which consider os.exec dangerous.
     4  //
     5  // The package is imported just for its side-effects. For example:
     6  // 
     7  // import _ "github.com/bazelbuild/buildtools/edit/safe/buildifier"
     8  package buildifier
     9  
    10  import (
    11    "github.com/bazelbuild/buildtools/build"
    12    "github.com/bazelbuild/buildtools/edit"
    13  )
    14  
    15  func init() {
    16  	edit.RegisterBuildifier(&buildifier{})
    17  }
    18  
    19  type buildifier struct{}
    20  
    21  // runBuildifier formats the build file f using the built-in formatter.
    22  func (b *buildifier) Buildify(_ *edit.Options, f *build.File) ([]byte, error) {
    23  	// Current AST may be not entirely correct, e.g. it may contain Ident which
    24  	// value is a chunk of code, like "f(x)". The AST should be printed and
    25  	// re-read to parse such expressions correctly.
    26  	contents := build.Format(f)
    27  	newF, err := build.Parse(f.Path, contents)
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  	return build.Format(newF), nil
    32  }
    33  

View as plain text