gocontemplate/pkg/contemplate/load.go
Kevin Franklin Kim 24aead8c3b
feat: expand env
2025-03-11 14:43:21 +01:00

33 lines
695 B
Go

package contemplate
import (
"context"
"os"
"golang.org/x/tools/go/packages"
)
func Load(ctx context.Context, cfg *Config) (*Contemplate, error) {
inst := &Contemplate{
cfg: cfg,
Packages: map[string]*Package{},
}
// load packages
pkgs, err := packages.Load(&packages.Config{
Context: ctx,
Dir: os.ExpandEnv(cfg.Directory),
Mode: packages.NeedName | packages.NeedTypesInfo |
packages.NeedFiles | packages.NeedImports | packages.NeedDeps |
packages.NeedModule | packages.NeedTypes | packages.NeedSyntax,
}, cfg.PackagePaths()...)
if err != nil {
return nil, err
}
inst.addPackages(pkgs...)
inst.addPackagesConfigs(cfg.Packages...)
return inst, nil
}