rule_type

package
v0.0.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2023 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package rule_type provides the CLI subcommand for managing rules

Index

Constants

This section is empty.

Variables

View Source
var RuleType_applyCmd = &cobra.Command{
	Use:   "apply",
	Short: "Apply a rule type within a minder control plane",
	Long: `The minder rule type apply subcommand lets you create or update rule types for a project
within a minder control plane.`,
	PreRun: func(cmd *cobra.Command, args []string) {
		if err := viper.BindPFlags(cmd.Flags()); err != nil {
			fmt.Fprintf(os.Stderr, "Error binding flags: %s\n", err)
		}
	},
	RunE: func(cmd *cobra.Command, args []string) error {
		files, err := cmd.Flags().GetStringArray("file")
		if err != nil {
			return fmt.Errorf("error getting file flag: %w", err)
		}

		if err := validateFilesArg(files); err != nil {
			return fmt.Errorf("error validating file arg: %w", err)
		}

		conn, err := util.GrpcForCommand(cmd, viper.GetViper())
		if err != nil {
			return fmt.Errorf("error getting grpc connection: %w", err)
		}
		defer conn.Close()

		client := minderv1.NewProfileServiceClient(conn)

		expfiles, err := util.ExpandFileArgs(files)
		if err != nil {
			return fmt.Errorf("error expanding file args: %w", err)
		}

		table := initializeTable(cmd)

		ctx, cancel := util.GetAppContext()
		defer cancel()

		applyFunc := func(fileName string, rt *minderv1.RuleType) (*minderv1.RuleType, error) {
			createResp, err := client.CreateRuleType(ctx, &minderv1.CreateRuleTypeRequest{
				RuleType: rt,
			})

			if err == nil {
				return createResp.RuleType, nil
			}

			st, ok := status.FromError(err)
			if !ok {

				return nil, fmt.Errorf("error creating rule type from %s: %w", fileName, err)
			}

			if st.Code() != codes.AlreadyExists {
				return nil, fmt.Errorf("error creating rule type from %s: %w", fileName, err)
			}

			updateResp, err := client.UpdateRuleType(ctx, &minderv1.UpdateRuleTypeRequest{
				RuleType: rt,
			})

			if err != nil {
				return nil, fmt.Errorf("error updating rule type from %s: %w", fileName, err)
			}

			return updateResp.RuleType, nil
		}

		for _, f := range expfiles {
			if shouldSkipFile(f) {
				continue
			}

			if err := execOnOneRuleType(table, f, os.Stdin, applyFunc); err != nil {
				return fmt.Errorf("error creating rule type %s: %w", f, err)
			}
		}

		table.Render()

		return nil
	},
}

RuleType_applyCmd represents the profile create command

View Source
var RuleType_createCmd = &cobra.Command{
	Use:   "create",
	Short: "Create a rule type within a minder control plane",
	Long: `The minder rule type create subcommand lets you create new rule types for a project
within a minder control plane.`,
	PreRun: func(cmd *cobra.Command, args []string) {
		if err := viper.BindPFlags(cmd.Flags()); err != nil {
			fmt.Fprintf(os.Stderr, "Error binding flags: %s\n", err)
		}
	},
	RunE: func(cmd *cobra.Command, args []string) error {
		files, err := cmd.Flags().GetStringArray("file")
		if err != nil {
			return fmt.Errorf("error getting file flag: %w", err)
		}

		if err := validateFilesArg(files); err != nil {
			return fmt.Errorf("error validating file arg: %w", err)
		}

		conn, err := util.GrpcForCommand(cmd, viper.GetViper())
		if err != nil {
			return fmt.Errorf("error getting grpc connection: %w", err)
		}
		defer conn.Close()

		client := minderv1.NewProfileServiceClient(conn)

		expfiles, err := util.ExpandFileArgs(files)
		if err != nil {
			return fmt.Errorf("error expanding file args: %w", err)
		}

		table := initializeTable(cmd)

		ctx, cancel := util.GetAppContext()
		defer cancel()

		createFunc := func(fileName string, rt *minderv1.RuleType) (*minderv1.RuleType, error) {
			resprt, err := client.CreateRuleType(ctx, &minderv1.CreateRuleTypeRequest{
				RuleType: rt,
			})
			if err != nil {
				return nil, fmt.Errorf("error creating rule type from %s: %w", fileName, err)
			}

			return resprt.RuleType, nil
		}

		for _, f := range expfiles {
			if shouldSkipFile(f) {
				continue
			}

			if err := execOnOneRuleType(table, f, os.Stdin, createFunc); err != nil {
				return fmt.Errorf("error creating rule type %s: %w", f, err)
			}
		}

		table.Render()

		return nil
	},
}

RuleType_createCmd represents the profile create command

View Source
var RuleType_updateCmd = &cobra.Command{
	Use:   "update",
	Short: "Update a rule type within a minder control plane",
	Long: `The minder rule type update subcommand lets you update rule types for a project
within a minder control plane.`,
	PreRun: func(cmd *cobra.Command, args []string) {
		if err := viper.BindPFlags(cmd.Flags()); err != nil {
			fmt.Fprintf(os.Stderr, "Error binding flags: %s\n", err)
		}
	},
	RunE: func(cmd *cobra.Command, args []string) error {
		files, err := cmd.Flags().GetStringArray("file")
		if err != nil {
			return fmt.Errorf("error getting file flag: %w", err)
		}

		if err := validateFilesArg(files); err != nil {
			return fmt.Errorf("error validating file arg: %w", err)
		}

		conn, err := util.GrpcForCommand(cmd, viper.GetViper())
		if err != nil {
			return fmt.Errorf("error getting grpc connection: %w", err)
		}
		defer conn.Close()

		client := minderv1.NewProfileServiceClient(conn)

		expfiles, err := util.ExpandFileArgs(files)
		if err != nil {
			return fmt.Errorf("error expanding file args: %w", err)
		}

		table := initializeTable(cmd)

		ctx, cancel := util.GetAppContext()
		defer cancel()

		updateFunc := func(fileName string, rt *minderv1.RuleType) (*minderv1.RuleType, error) {
			resprt, err := client.UpdateRuleType(ctx, &minderv1.UpdateRuleTypeRequest{
				RuleType: rt,
			})
			if err != nil {
				return nil, fmt.Errorf("error creating rule typefrom %s: %w", fileName, err)
			}

			return resprt.RuleType, nil
		}

		for _, f := range expfiles {
			if shouldSkipFile(f) {
				continue
			}

			if err := execOnOneRuleType(table, f, os.Stdin, updateFunc); err != nil {
				return fmt.Errorf("error creating rule type %s: %w", f, err)
			}
		}

		table.Render()

		return nil
	},
}

RuleType_updateCmd represents the profile update command

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL