mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 12:54:38 +03:00
Dependency updates
This commit is contained in:
52
vendor/github.com/gobuffalo/gogen/add_import.go
generated
vendored
Normal file
52
vendor/github.com/gobuffalo/gogen/add_import.go
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
package gogen
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/token"
|
||||
"strings"
|
||||
|
||||
"github.com/gobuffalo/genny"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// AddImport adds n number of import statements into the path provided
|
||||
func AddImport(gf genny.File, imports ...string) (genny.File, error) {
|
||||
pf, err := ParseFile(gf)
|
||||
if err != nil {
|
||||
return gf, errors.WithStack(err)
|
||||
}
|
||||
gf = pf.File
|
||||
|
||||
end := findLastImport(pf.Ast, pf.FileSet, pf.Lines)
|
||||
|
||||
x := make([]string, len(imports), len(imports)+2)
|
||||
for _, i := range imports {
|
||||
x = append(x, fmt.Sprintf("\t\"%s\"", i))
|
||||
|
||||
}
|
||||
if end < 0 {
|
||||
x = append([]string{"import ("}, x...)
|
||||
x = append(x, ")")
|
||||
}
|
||||
|
||||
pf.Lines = append(pf.Lines[:end], append(x, pf.Lines[end:]...)...)
|
||||
|
||||
fileContent := strings.Join(pf.Lines, "\n")
|
||||
return genny.NewFile(gf.Name(), strings.NewReader(fileContent)), nil
|
||||
}
|
||||
|
||||
func findLastImport(f *ast.File, fset *token.FileSet, fileLines []string) int {
|
||||
var end = -1
|
||||
|
||||
ast.Inspect(f, func(n ast.Node) bool {
|
||||
switch x := n.(type) {
|
||||
case *ast.ImportSpec:
|
||||
end = fset.Position(x.End()).Line
|
||||
return true
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
return end
|
||||
}
|
||||
Reference in New Issue
Block a user