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
}