func (f zabsFilterFlags) Query() (endpoint.ListZFSHoldsAndBookmarksQuery, error) {
	q := endpoint.ListZFSHoldsAndBookmarksQuery{
		FS:          f.Filesystems.FlagValue(),
		What:        f.Types.FlagValue(),
		JobID:       f.Job.FlagValue(),
		Concurrency: f.Concurrency,
	}
	return q, q.Validate()
}
produce a query from the CLI flags
package client
import (
	"fmt"
	"sort"
	"strings"
	"github.com/spf13/pflag"
	"github.com/zrepl/zrepl/cli"
	"github.com/zrepl/zrepl/daemon/filters"
	"github.com/zrepl/zrepl/endpoint"
	"github.com/zrepl/zrepl/zfs"
)
var (
	ZFSAbstractionsCmd = &cli.Subcommand{
		Use:   "zfs-abstraction",
		Short: "manage abstractions that zrepl builds on top of ZFS",
		SetupSubcommands: func() []*cli.Subcommand {
			return []*cli.Subcommand{
				zabsCmdList,
				zabsCmdReleaseAll,
				zabsCmdReleaseStale,
				zabsCmdCreate,
			}
		},
	}
)
type zabsFilterFlags struct {
	Filesystems FilesystemsFilterFlag
	Job         JobIDFlag
	Types       AbstractionTypesFlag
	Concurrency int64
}