photoprism/internal/commands/show_metadata.go

55 lines
1.3 KiB
Go
Raw Normal View History

package commands
import (
"fmt"
"sort"
"github.com/urfave/cli"
"github.com/photoprism/photoprism/internal/meta"
"github.com/photoprism/photoprism/pkg/report"
)
// ShowMetadataCommand configures the command name, flags, and action.
var ShowMetadataCommand = cli.Command{
Name: "metadata",
Usage: "Displays supported metadata tags and standards",
Flags: append(report.CliFlags, cli.BoolFlag{
Name: "short, s",
Usage: "hide links to documentation",
}),
Action: showMetadataAction,
}
// showMetadataAction reports supported Exif and XMP metadata tags.
func showMetadataAction(ctx *cli.Context) error {
rows, cols := meta.Report(&meta.Data{})
2022-04-14 10:30:47 +00:00
// Sort rows by type data type and name.
sort.Slice(rows, func(i, j int) bool {
if rows[i][1] == rows[j][1] {
return rows[i][0] < rows[j][0]
} else {
return rows[i][1] < rows[j][1]
}
})
// Output overview of supported metadata tags.
format := report.CliFormat(ctx)
result, err := report.RenderFormat(rows, cols, format)
fmt.Println(result)
if err != nil || ctx.Bool("short") || format == report.TSV {
return err
}
// Documentation links for those who want to delve deeper.
result, err = report.RenderFormat(meta.Docs, []string{"Namespace", "Documentation"}, format)
fmt.Printf("## Metadata Tags by Namespace ##\n\n")
fmt.Println(result)
return err
}