func()

in pkg/tasks/bundle/dump.go [47:102]


func (t *DumpTask) Run(ctx context.Context) error {
	var (
		reader io.Reader
		err    error
	)

	// Check arguments
	if types.IsNil(t.ContainerReader) {
		return errors.New("unable to run task with a nil containerRedaer provider")
	}
	if types.IsNil(t.OutputWriter) {
		return errors.New("unable to run task with a nil outputWriter provider")
	}

	// Create input reader
	reader, err = t.ContainerReader(ctx)
	if err != nil {
		return fmt.Errorf("unable to open input bundle: %w", err)
	}

	// Load bundle
	b, err := bundle.FromContainerReader(reader)
	if err != nil {
		return fmt.Errorf("unable to load bundle content: %w", err)
	}

	// Create output writer
	writer, err := t.OutputWriter(ctx)
	if err != nil {
		return fmt.Errorf("unable to open writer: %w", err)
	}

	// Clean template if requested.
	if t.IgnoreTemplate {
		b.Template = nil
	}

	switch {
	case t.DataOnly:
		return t.dumpData(writer, b)
	case t.MetadataOnly:
		return t.dumpMetadata(writer, b)
	case t.PathOnly:
		return t.dumpPath(writer, b)
	case t.JMESPathFilter != "":
		return t.dumpFilter(writer, b)
	default:
		// Dump full structure.
		if err := bundle.AsProtoJSON(writer, b); err != nil {
			return fmt.Errorf("unable to generate JSON: %w", err)
		}
	}

	// No error
	return nil
}