...
1 package validate
2
3 import (
4 "context"
5 "fmt"
6
7 "edge-infra.dev/pkg/f8n/warehouse/packagelock"
8 "edge-infra.dev/pkg/lib/cli/sink"
9 )
10
11 func New() *sink.Command {
12 cmd := &sink.Command{
13 Use: "validate [flags] <filepath>",
14 Short: "Validate a packagelock file structure and required fields",
15 Exec: func(_ context.Context, r sink.Run) error {
16 switch len(r.Args()) {
17 case 0:
18 return fmt.Errorf("error: a lockfile path must be passed")
19 case 1:
20 default:
21 return fmt.Errorf("error: only one lockfile may be passed")
22 }
23 plr, err := packagelock.NewRules()
24 if err != nil {
25 return err
26 }
27
28 _, err = plr.ParsePackageLock(r.Args()[0])
29 if err != nil {
30 return fmt.Errorf("invalid lockfile: %w", err)
31 }
32
33 r.Log.Info(fmt.Sprintf("valid lockfile: %s", r.Args()[0]))
34 return nil
35 },
36 }
37 return cmd
38 }
39
View as plain text