github.com/inspektor-gadget/inspektor-gadget@v0.28.1/pkg/datasource/formatters/json/options.go (about)

     1  // Copyright 2024 The Inspektor Gadget authors
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package json
    16  
    17  type Option func(*Formatter)
    18  
    19  // WithFields specifies exactly which fields to export using this formatter;
    20  // field names can be prefixed with +/- to add or remove the field from the
    21  // output - if all fields are prefixed, the default visible fields will be
    22  // honored, otherwise only the fields specified will be considered. If fields
    23  // is nil, the default will be used - if fields is empty, no field will
    24  // be returned.
    25  func WithFields(fields []string) Option {
    26  	return func(formatter *Formatter) {
    27  		formatter.fields = fields
    28  		if fields != nil {
    29  			formatter.useDefault = false
    30  		}
    31  	}
    32  }
    33  
    34  func WithShowAll(val bool) Option {
    35  	return func(formatter *Formatter) {
    36  		formatter.showAll = val
    37  		formatter.useDefault = true
    38  	}
    39  }
    40  
    41  func WithPretty(val bool, indent string) Option {
    42  	return func(formatter *Formatter) {
    43  		formatter.pretty = val
    44  		formatter.indent = indent
    45  	}
    46  }