...

Source file src/edge-infra.dev/pkg/f8n/warehouse/packagelock/cmd/validate/validate.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/packagelock/cmd/validate

     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