MCPcopy Create free account
hub / github.com/conforma/cli / ValidatePolicyCmd

Function ValidatePolicyCmd

cmd/validate/policy.go:32–88  ·  view source on GitHub ↗
(validate policyValidationFunc)

Source from the content-addressed store, hash-verified

30type policyValidationFunc func(context.Context, string) error
31
32func ValidatePolicyCmd(validate policyValidationFunc) *cobra.Command {
33 data := struct {
34 policyConfiguration string
35 output []string
36 strict bool
37 }{
38 strict: true,
39 }
40 cmd := &cobra.Command{
41 Use: "policy",
42 Short: "Validate the provided EnterpriseContractPolicy spec",
43 Long: hd.Doc(`
44 Validate the provided EnterpriseContractPolicy spec against the EnterpriseContractPolicy spec schema used in this version of the ec CLI
45 `),
46 Example: hd.Doc(`
47 Validate a local policy configuration file:
48 ec validate policy --policy-configuration policy.yaml
49
50 Validate a policy configuration file from a github repository:
51 ec validate policy --policy-configuration github.com/org/repo/policy.yaml
52`),
53 PreRunE: func(cmd *cobra.Command, args []string) (allErrors error) {
54 ctx := cmd.Context()
55
56 policyConfiguration, err := validate_utils.GetPolicyConfig(ctx, data.policyConfiguration)
57 if err != nil {
58 allErrors = errors.Join(allErrors, err)
59 return
60 }
61 data.policyConfiguration = policyConfiguration
62
63 return
64 },
65 RunE: func(cmd *cobra.Command, args []string) error {
66 // Policy conforms to the schema.
67 ctx := cmd.Context()
68 err := validate(ctx, data.policyConfiguration)
69 if err != nil {
70 return fmt.Errorf("policy configuration does not conform to the EnterpriseContractPolicy spec")
71 }
72 fmt.Fprintln(cmd.OutOrStdout(), "Policy configuration conforms to the EnterpriseContractPolicy spec")
73 return nil
74 },
75 }
76
77 cmd.Flags().StringVarP(&data.policyConfiguration, "policy", "p", data.policyConfiguration, hd.Doc(`
78 Policy configuration as:
79 * file (policy.yaml)
80 * git reference (github.com/user/repo//default?ref=main), or
81 * inline JSON ('{sources: {...}}')")`))
82
83 if err := cmd.MarkFlagRequired("policy"); err != nil {
84 panic(err)
85 }
86
87 return cmd
88}

Callers 3

Test_ValidatePolicyCmdFunction · 0.85
initFunction · 0.85

Calls 1

ErrorfMethod · 0.65

Tested by 2

Test_ValidatePolicyCmdFunction · 0.68