func dumpAgentPoliciesCmdAction()

in cmd/dump.go [133:200]


func dumpAgentPoliciesCmdAction(cmd *cobra.Command, args []string) error {
	packageName, err := cmd.Flags().GetString(cobraext.PackageFlagName)
	if err != nil {
		return cobraext.FlagParsingError(err, cobraext.PackageFlagName)
	}

	agentPolicy, err := cmd.Flags().GetString(cobraext.AgentPolicyFlagName)
	if err != nil {
		return cobraext.FlagParsingError(err, cobraext.AgentPolicyFlagName)
	}

	outputPath, err := cmd.Flags().GetString(cobraext.DumpOutputFlagName)
	if err != nil {
		return cobraext.FlagParsingError(err, cobraext.DumpOutputFlagName)
	}

	tlsSkipVerify, _ := cmd.Flags().GetBool(cobraext.TLSSkipVerifyFlagName)

	var clientOptions []kibana.ClientOption
	if tlsSkipVerify {
		clientOptions = append(clientOptions, kibana.TLSSkipVerify())
	}

	profile, err := cobraext.GetProfileFlag(cmd)
	if err != nil {
		return err
	}

	kibanaClient, err := stack.NewKibanaClientFromProfile(profile, clientOptions...)
	if err != nil {
		return fmt.Errorf("failed to initialize Kibana client: %w", err)
	}

	switch {
	case agentPolicy != "" && packageName != "":
		return fmt.Errorf("agent-policy and package parameters cannot be set at the same time")
	case agentPolicy != "":
		dumper := dump.NewAgentPoliciesDumper(kibanaClient)
		err = dumper.DumpByName(cmd.Context(), outputPath, agentPolicy)
		if err != nil {
			return fmt.Errorf("dump failed: %w", err)
		}
		cmd.Printf("Dumped agent policy %s to %s\n", agentPolicy, outputPath)
	case packageName != "":
		dumper := dump.NewAgentPoliciesDumper(kibanaClient)
		count, err := dumper.DumpByPackage(cmd.Context(), outputPath, packageName)
		if err != nil {
			return fmt.Errorf("dump failed: %w", err)
		}
		if count != 0 {
			cmd.Printf("Dumped %d agent policies filtering by package name %s to %s\n", count, packageName, outputPath)
		} else {
			cmd.Printf("No agent policies were found filtering by package name %s\n", packageName)
		}
	default:
		dumper := dump.NewAgentPoliciesDumper(kibanaClient)
		count, err := dumper.DumpAll(cmd.Context(), outputPath)
		if err != nil {
			return fmt.Errorf("dump failed: %w", err)
		}
		if count != 0 {
			cmd.Printf("Dumped %d agent policies to %s\n", count, outputPath)
		} else {
			cmd.Printf("No agent policies were found\n")
		}
	}
	return nil
}