Codegen: Add comment with cue path (#116835)

* Create header for plugins with cue file path

* Update generated files with the new cue path comment
This commit is contained in:
Selene 2026-01-27 10:40:26 +01:00 committed by GitHub
parent d17653f3e7
commit e4fb156fd2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
70 changed files with 192 additions and 17 deletions

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/annotationslist/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/azuremonitor/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/barchart/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/bargauge/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/candlestick/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/canvas/panelcfg.cue file.
import * as ui from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/cloudwatch/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/dashboardlist/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/datagrid/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/debug/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export type UpdateConfig = {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/elasticsearch/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/gauge/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/geomap/panelcfg.cue file.
import * as ui from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/googlecloudmonitoring/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/grafanapyroscope/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/heatmap/panelcfg.cue file.
import * as ui from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/histogram/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/logs/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/loki/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/newgauge/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/news/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/nodegraph/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export interface ArcOption {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/parca/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/piechart/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/stat/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/statetimeline/panelcfg.cue file.
import * as ui from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/statushistory/panelcfg.cue file.
import * as ui from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/table/panelcfg.cue file.
import * as ui from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/tempo/dataquery.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "%VERSION%";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/text/panelcfg.cue file.
export const pluginVersion = "12.4.0-pre";
export enum TextMode {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/timeseries/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/trend/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/xychart/panelcfg.cue file.
import * as common from '@grafana/schema';
export const pluginVersion = "12.4.0-pre";

View file

@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"path/filepath"
"regexp"
"cuelang.org/go/cue"
"github.com/grafana/codejen"
@ -14,28 +15,29 @@ type OneToMany codejen.OneToMany[SchemaForGen]
type ManyToOne codejen.ManyToOne[SchemaForGen]
type ManyToMany codejen.ManyToMany[SchemaForGen]
func leader(path string) string {
// Never inject on certain filetypes, it's never valid
switch filepath.Ext(path) {
case ".json", ".md":
return path
case ".yml", ".yaml":
return "#"
default:
return "//"
}
}
// SlashHeaderMapper produces a FileMapper that injects a comment header onto
// a [codejen.File] indicating the main generator that produced it (via the provided
// maingen, which should be a path) and the jenny or jennies that constructed the
// mainGen, which should be a path) and the jenny or jennies that constructed the
// file.
func SlashHeaderMapper(maingen string) codejen.FileMapper {
func SlashHeaderMapper(mainGen string) codejen.FileMapper {
return func(f codejen.File) (codejen.File, error) {
var leader string
// Never inject on certain filetypes, it's never valid
switch filepath.Ext(f.RelativePath) {
case ".json", ".md":
return f, nil
case ".yml", ".yaml":
leader = "#"
default:
leader = "//"
}
buf := new(bytes.Buffer)
if err := tmpls.Lookup("gen_header.tmpl").Execute(buf, tvars_gen_header{
MainGenerator: filepath.ToSlash(maingen),
MainGenerator: filepath.ToSlash(mainGen),
Using: f.From,
Leader: leader,
Leader: leader(f.RelativePath),
}); err != nil {
return codejen.File{}, fmt.Errorf("failed executing gen header template: %w", err)
}
@ -45,6 +47,44 @@ func SlashHeaderMapper(maingen string) codejen.FileMapper {
}
}
func PluginsSlashHeaderMapper(mainGen string, path string) codejen.FileMapper {
return func(f codejen.File) (codejen.File, error) {
buf := new(bytes.Buffer)
if err := tmpls.Lookup("gen_header.tmpl").Execute(buf, tvars_gen_header{
MainGenerator: filepath.ToSlash(mainGen),
Using: f.From,
Leader: leader(f.RelativePath),
CuePath: cuePluginPath(path, f.RelativePath),
}); err != nil {
return codejen.File{}, fmt.Errorf("failed executing gen header template: %w", err)
}
fmt.Fprint(buf, string(f.Data))
f.Data = buf.Bytes()
return f, nil
}
}
func cuePluginPath(root string, path string) string {
// We need it for ts files only
if filepath.Ext(path) != ".ts" {
return ""
}
mapper := map[string]string{
"panelcfg": "panel",
"dataquery": "datasource",
}
regx := ".+/(.*?)/(?:(panelcfg|dataquery))"
regexexp := regexp.MustCompile(regx)
matches := regexexp.FindStringSubmatch(path)
if len(matches) > 2 {
return filepath.Join(root, mapper[matches[2]], matches[1], matches[2]+".cue")
}
return ""
}
type SchemaForGen struct {
Name string
CueFile cue.Value

View file

@ -31,6 +31,7 @@ type (
Using []codejen.NamedJenny
From string
Leader string
CuePath string
}
tvars_resource struct {

View file

@ -8,4 +8,6 @@
{{- end }}
{{ .Leader }}
{{ .Leader }} Run 'make gen-cue' from repository root to regenerate.
{{ if .CuePath }}
{{ .Leader }} Generated from {{ .CuePath }} file.
{{ end }}

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/azuremonitor/dataquery.cue file.
import * as common from '@grafana/schema';
export interface AzureMonitorQuery extends common.DataQuery {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/cloud-monitoring/dataquery.cue file.
import * as common from '@grafana/schema';
export interface CloudMonitoringQuery extends common.DataQuery {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/cloudwatch/dataquery.cue file.
import * as common from '@grafana/schema';
export interface MetricStat {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/elasticsearch/dataquery.cue file.
import * as common from '@grafana/schema';
export type BucketAggregation = (DateHistogram | Histogram | Terms | Filters | GeoHashGrid | Nested);

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/grafana-pyroscope-datasource/dataquery.cue file.
import * as common from '@grafana/schema';
export type PyroscopeQueryType = ('metrics' | 'profile' | 'both');

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/loki/dataquery.cue file.
import * as common from '@grafana/schema';
export enum QueryEditorMode {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/parca/dataquery.cue file.
import * as common from '@grafana/schema';
export type ParcaQueryType = ('metrics' | 'profile' | 'both');

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/datasource/tempo/dataquery.cue file.
import * as common from '@grafana/schema';
export interface TempoQuery extends common.DataQuery {

View file

@ -49,7 +49,7 @@ func main() {
)
pluginKindGen.AddPostprocessors(
corecodegen.SlashHeaderMapper("public/app/plugins/gen.go"),
corecodegen.PluginsSlashHeaderMapper("public/app/plugins/gen.go", filepath.Join("public", "app", "plugins")),
corecodegen.GoFormat(),
splitSchiffer(),
)

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/annolist/panelcfg.cue file.
export interface Options {
limit: number;
navigateAfter: string;

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/barchart/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip, common.OptionsWithTextFormatting {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/bargauge/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options extends common.OptionsWithLegend, common.SingleStatBaseOptions {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/candlestick/panelcfg.cue file.
import * as common from '@grafana/schema';
export enum VizDisplayMode {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/canvas/panelcfg.cue file.
import * as ui from '@grafana/schema';
export enum HorizontalConstraint {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/dashlist/panelcfg.cue file.
export interface Options {
/**
* folderId is deprecated, and migrated to folderUid on panel init

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/datagrid/panelcfg.cue file.
export interface Options {
selectedSeries: number;
}

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/debug/panelcfg.cue file.
export type UpdateConfig = {
render: boolean,
dataChanged: boolean,

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/gauge/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options extends common.SingleStatBaseOptions {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/geomap/panelcfg.cue file.
import * as ui from '@grafana/schema';
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/heatmap/panelcfg.cue file.
import * as ui from '@grafana/schema';
/**

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/histogram/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options extends common.OptionsWithLegend, common.OptionsWithTooltip {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/logs/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/news/panelcfg.cue file.
export interface Options {
/**
* empty/missing will default to grafana blog

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/nodeGraph/panelcfg.cue file.
export interface ArcOption {
/**
* The color of the arc.

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/piechart/panelcfg.cue file.
import * as common from '@grafana/schema';
/**

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/radialbar/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface GaugePanelEffects {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/stat/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options extends common.SingleStatBaseOptions {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/state-timeline/panelcfg.cue file.
import * as ui from '@grafana/schema';
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones, ui.OptionsWithAnnotations {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/status-history/panelcfg.cue file.
import * as ui from '@grafana/schema';
export interface Options extends ui.OptionsWithLegend, ui.OptionsWithTooltip, ui.OptionsWithTimezones, ui.OptionsWithAnnotations {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/table/panelcfg.cue file.
import * as ui from '@grafana/schema';
export interface Options {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/text/panelcfg.cue file.
export enum TextMode {
Code = 'code',
HTML = 'html',

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/timeseries/panelcfg.cue file.
import * as common from '@grafana/schema';
export interface Options extends common.OptionsWithTimezones, common.OptionsWithAnnotations {

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/trend/panelcfg.cue file.
import * as common from '@grafana/schema';
/**

View file

@ -8,6 +8,8 @@
//
// Run 'make gen-cue' from repository root to regenerate.
// Generated from public/app/plugins/panel/xychart/panelcfg.cue file.
import * as common from '@grafana/schema';
export enum PointShape {