7a04f298d2
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package genutil
|
|
|
|
import (
|
|
"context"
|
|
"go/ast"
|
|
"go/parser"
|
|
"go/token"
|
|
"os"
|
|
|
|
"github.com/go-faster/errors"
|
|
"golang.org/x/tools/go/packages"
|
|
)
|
|
|
|
func loadPackages(ctx context.Context, dir, pattern string, environ []string) ([]*packages.Package, error) {
|
|
return packages.Load(&packages.Config{
|
|
Context: ctx,
|
|
Dir: dir,
|
|
Mode: packages.NeedTypes |
|
|
packages.NeedTypesInfo |
|
|
packages.NeedTypesSizes |
|
|
packages.NeedSyntax |
|
|
packages.NeedDeps,
|
|
Env: environ,
|
|
Fset: token.NewFileSet(),
|
|
ParseFile: func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) {
|
|
const mode = parser.AllErrors | parser.ParseComments
|
|
return parser.ParseFile(fset, filename, src, mode)
|
|
},
|
|
}, pattern)
|
|
}
|
|
|
|
// Load loads package using given pattern.
|
|
func Load(ctx context.Context, pattern string) (*packages.Package, error) {
|
|
pkgs, err := loadPackages(ctx, "", pattern, os.Environ())
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "load packages")
|
|
}
|
|
|
|
for _, pkg := range pkgs {
|
|
if pkg.ID == pattern {
|
|
return pkg, nil
|
|
}
|
|
}
|
|
|
|
return nil, errors.Errorf("package %s not found", pattern)
|
|
}
|