Skip to content

Commit 89c6cdc

Browse files
committed
cmd/cue: remove the need for embedpkg
Now that we have go:embed, use that directly. The code becomes slightly more involved, as we have to use a combination of ReadDir with path.Join and ReadFile, but we're still deleting over a hundred lines of code. I still think that this bit of code can be significantly improved, but avoiding the unnecessary go:generate is a good first step. Signed-off-by: Daniel Martí <[email protected]> Change-Id: Iab4e9bf8da4684763e4ebd783896bf181a44ba26 Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/537941 Unity-Result: CUEcueckoo <[email protected]> TryBot-Result: CUEcueckoo <[email protected]> Reviewed-by: Roger Peppe <[email protected]>
1 parent 6634a00 commit 89c6cdc

File tree

3 files changed

+21
-118
lines changed

3 files changed

+21
-118
lines changed

cmd/cue/cmd/get_go.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package cmd
1616

1717
import (
1818
"bytes"
19+
"embed"
1920
"fmt"
2021
"go/ast"
2122
"go/token"
@@ -285,7 +286,8 @@ module cuelang.org/go
285286
go 1.14
286287
`
287288

288-
//go:generate go run cuelang.org/go/internal/cmd/embedpkg cuelang.org/go/cmd/cue/cmd/interfaces
289+
//go:embed interfaces/*.go
290+
var interfacesFS embed.FS
289291

290292
func initInterfaces() (err error) {
291293
// tempdir needed for overlay
@@ -307,14 +309,26 @@ func initInterfaces() (err error) {
307309
return err
308310
}
309311

310-
for fn, contents := range interfacesFiles {
311-
fn = filepath.Join(tmpDir, filepath.FromSlash(fn))
312+
entries, err := interfacesFS.ReadDir("interfaces")
313+
if err != nil {
314+
return err
315+
}
316+
localPkgPath := "cmd/cue/cmd/interfaces"
317+
fullPkgPath := "cuelang.org/go/" + localPkgPath
318+
for _, entry := range entries {
319+
name := entry.Name()
320+
321+
fn := filepath.Join(tmpDir, filepath.FromSlash(localPkgPath), name)
312322
dir := filepath.Dir(fn)
313323
if err := os.MkdirAll(dir, 0777); err != nil {
314324
return err
315325
}
326+
contents, err := interfacesFS.ReadFile(path.Join("interfaces", name))
327+
if err != nil {
328+
return err
329+
}
316330

317-
if err = ioutil.WriteFile(fn, contents, 0666); err != nil {
331+
if err := ioutil.WriteFile(fn, contents, 0666); err != nil {
318332
return err
319333
}
320334
}
@@ -326,16 +340,16 @@ func initInterfaces() (err error) {
326340
Dir: filepath.Join(tmpDir),
327341
}
328342

329-
p, err := packages.Load(cfg, "cuelang.org/go/cmd/cue/cmd/interfaces")
343+
p, err := packages.Load(cfg, fullPkgPath)
330344
if err != nil {
331-
return fmt.Errorf("error loading embedded cuelang.org/go/cmd/cue/cmd/interfaces package: %w", err)
345+
return fmt.Errorf("error loading embedded %s package: %w", fullPkgPath, err)
332346
}
333347
if len(p[0].Errors) > 0 {
334348
var buf bytes.Buffer
335349
for _, e := range p[0].Errors {
336350
fmt.Fprintf(&buf, "\t%v\n", e)
337351
}
338-
return fmt.Errorf("error loading embedded cuelang.org/go/cmd/cue/cmd/interfaces package:\n%s", buf.String())
352+
return fmt.Errorf("error loading embedded %s package:\n%s", fullPkgPath, buf.String())
339353
}
340354

341355
for e, tt := range p[0].TypesInfo.Types {

cmd/cue/cmd/interfaces_gen.go

Lines changed: 0 additions & 10 deletions
This file was deleted.

internal/cmd/embedpkg/embedpkg.go

Lines changed: 0 additions & 101 deletions
This file was deleted.

0 commit comments

Comments
 (0)