| 68 | } |
| 69 | |
| 70 | func Evaluate(opts *EvalOptions, logger zerolog.Logger) (*EvalSummary, error) { |
| 71 | // 1. Create crafting schema |
| 72 | policies, err := createPolicies(opts.PolicyPath, opts.Inputs) |
| 73 | if err != nil { |
| 74 | return nil, err |
| 75 | } |
| 76 | |
| 77 | // 2. Craft material with annotations |
| 78 | material, err := craftMaterial(opts.MaterialPath, opts.MaterialKind, &logger) |
| 79 | if err != nil { |
| 80 | return nil, err |
| 81 | } |
| 82 | material.Annotations = opts.Annotations |
| 83 | |
| 84 | // 3. Verify material against policy |
| 85 | summary, err := verifyMaterial(policies, material, opts.MaterialPath, opts.Debug, opts.AllowedHostnames, opts.AttestationClient, opts.ControlPlaneConn, opts.ProjectName, opts.ProjectVersionName, &logger) |
| 86 | if err != nil { |
| 87 | return nil, err |
| 88 | } |
| 89 | |
| 90 | return summary, nil |
| 91 | } |
| 92 | |
| 93 | func createPolicies(policyPath string, inputs map[string]string) (*v1.Policies, error) { |
| 94 | // Check if the policy path already has a scheme (chainloop://, http://, https://, file://) |