debian-forge-cli/cmd/image-builder/list.go
Michael Vogt 7a838332c8 main: initial version of image-builder with basic --list-images
This commit adds the new `image-builder` binary. This binary is
meant to build images from the CLI without the need to setup a
daemon. The main use-case is CI/CD and admins running this in
scripts or ad-hoc. The CLI should be pleasant to use.

This first commit adds the `list-images` command which is a thin
wrapper around functionality from the `osbuild/images` library.

It will list all buildable images by default and can be trimmed
down further via `--filter` which supports the filtering from
the `images` library, see https://github.com/osbuild/images/pull/1015

It also supports `--output` which will output the result in the
given format. Currently "text" and "json" are supported.

Note that this will not work on it's own yet, it will need an
installed image-builder to get the repositories. This will need
to get fixed via either:
1. a dependency package for `ibuilder` that carries all the repos
2. a shared repo that contains the repos
3. using go:embed to get them (see images#1038)
2024-11-28 09:53:08 +00:00

29 lines
530 B
Go

package main
import (
"io"
"github.com/osbuild/images/pkg/imagefilter"
)
func listImages(out io.Writer, output string, filterExprs []string) error {
imageFilter, err := newImageFilterDefault()
if err != nil {
return err
}
filteredResult, err := imageFilter.Filter(filterExprs...)
if err != nil {
return err
}
fmter, err := imagefilter.NewResultsFormatter(imagefilter.OutputFormat(output))
if err != nil {
return err
}
if err := fmter.Output(out, filteredResult); err != nil {
return err
}
return nil
}