Kindsys: Rename mudball to common schemas, allow multiple input cue files (#61703)
* kindsys: Rename mudball to common schemas * Update all core plugin imports * Add missed table types * Remove invalid JSON comment * Remove coremodel dir from codeowners
This commit is contained in:
@@ -541,7 +541,6 @@ embed.go @grafana/grafana-as-code
|
|||||||
/pkg/kinds/ @grafana/grafana-as-code
|
/pkg/kinds/ @grafana/grafana-as-code
|
||||||
/pkg/cuectx/ @grafana/grafana-as-code
|
/pkg/cuectx/ @grafana/grafana-as-code
|
||||||
/pkg/registry/ @grafana/grafana-as-code
|
/pkg/registry/ @grafana/grafana-as-code
|
||||||
/pkg/framework/coremodel/ @grafana/grafana-as-code
|
|
||||||
/pkg/codegen/ @grafana/grafana-as-code
|
/pkg/codegen/ @grafana/grafana-as-code
|
||||||
/pkg/kindsys/ @grafana/grafana-as-code
|
/pkg/kindsys/ @grafana/grafana-as-code
|
||||||
/pkg/kindsys/kindcat_custom.cue @grafana/apps-platform-core
|
/pkg/kindsys/kindcat_custom.cue @grafana/apps-platform-core
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ gen-cue: ## Do all CUE/Thema code generation
|
|||||||
@echo "generate code from .cue files"
|
@echo "generate code from .cue files"
|
||||||
go generate ./pkg/plugins/plugindef
|
go generate ./pkg/plugins/plugindef
|
||||||
go generate ./kinds/gen.go
|
go generate ./kinds/gen.go
|
||||||
go generate ./pkg/framework/coremodel/gen.go
|
|
||||||
go generate ./public/app/plugins/gen.go
|
go generate ./public/app/plugins/gen.go
|
||||||
go generate ./pkg/kindsys/report.go
|
go generate ./pkg/kindsys/report.go
|
||||||
|
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ import (
|
|||||||
|
|
||||||
// CueSchemaFS embeds all schema-related CUE files in the Grafana project.
|
// CueSchemaFS embeds all schema-related CUE files in the Grafana project.
|
||||||
//
|
//
|
||||||
//go:embed cue.mod/module.cue kinds/*.cue kinds/*/*.cue packages/grafana-schema/src/schema/*.cue public/app/plugins/*/*/*.cue public/app/plugins/*/*/plugin.json pkg/kindsys/*.cue pkg/plugins/plugindef/*.cue
|
//go:embed cue.mod/module.cue kinds/*.cue kinds/*/*.cue packages/grafana-schema/src/common/*.cue public/app/plugins/*/*/*.cue public/app/plugins/*/*/plugin.json pkg/kindsys/*.cue pkg/plugins/plugindef/*.cue
|
||||||
var CueSchemaFS embed.FS
|
var CueSchemaFS embed.FS
|
||||||
|
|||||||
+33
-1
@@ -15,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"cuelang.org/go/cue/errors"
|
"cuelang.org/go/cue/errors"
|
||||||
"github.com/grafana/codejen"
|
"github.com/grafana/codejen"
|
||||||
|
"github.com/grafana/cuetsy"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/codegen"
|
"github.com/grafana/grafana/pkg/codegen"
|
||||||
"github.com/grafana/grafana/pkg/cuectx"
|
"github.com/grafana/grafana/pkg/cuectx"
|
||||||
@@ -43,7 +44,8 @@ func main() {
|
|||||||
codegen.DocsJenny(filepath.Join("docs", "sources", "developers", "kinds", "core")),
|
codegen.DocsJenny(filepath.Join("docs", "sources", "developers", "kinds", "core")),
|
||||||
)
|
)
|
||||||
|
|
||||||
coreKindsGen.AddPostprocessors(codegen.SlashHeaderMapper("kinds/gen.go"))
|
header := codegen.SlashHeaderMapper("kinds/gen.go")
|
||||||
|
coreKindsGen.AddPostprocessors(header)
|
||||||
|
|
||||||
cwd, err := os.Getwd()
|
cwd, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -81,6 +83,13 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
die(fmt.Errorf("core kinddirs codegen failed: %w", err))
|
die(fmt.Errorf("core kinddirs codegen failed: %w", err))
|
||||||
}
|
}
|
||||||
|
sharedf, err := dummyCommonJenny{}.Generate(nil)
|
||||||
|
if err != nil {
|
||||||
|
die(fmt.Errorf("common schemas failed"))
|
||||||
|
}
|
||||||
|
if err = jfs.Add(elsedie(header(*sharedf))("couldn't inject header")); err != nil {
|
||||||
|
die(err)
|
||||||
|
}
|
||||||
|
|
||||||
if _, set := os.LookupEnv("CODEGEN_VERIFY"); set {
|
if _, set := os.LookupEnv("CODEGEN_VERIFY"); set {
|
||||||
if err = jfs.Verify(context.Background(), groot); err != nil {
|
if err = jfs.Verify(context.Background(), groot); err != nil {
|
||||||
@@ -105,6 +114,29 @@ func nameFor(m kindsys.SomeKindProperties) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type dummyCommonJenny struct{}
|
||||||
|
|
||||||
|
func (j dummyCommonJenny) JennyName() string {
|
||||||
|
return "CommonSchemaJenny"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (j dummyCommonJenny) Generate(dummy any) (*codejen.File, error) {
|
||||||
|
path := filepath.Join("packages", "grafana-schema", "src", "common")
|
||||||
|
v, err := cuectx.BuildGrafanaInstance(nil, path, "", nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := cuetsy.Generate(v, cuetsy.Config{
|
||||||
|
Export: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to generate TS: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return codejen.NewFile(filepath.Join(path, "common.gen.ts"), b, dummyCommonJenny{}), nil
|
||||||
|
}
|
||||||
|
|
||||||
func elsedie[T any](t T, err error) func(msg string) T {
|
func elsedie[T any](t T, err error) func(msg string) T {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return func(msg string) T {
|
return func(msg string) T {
|
||||||
|
|||||||
+63
-59
@@ -1,8 +1,12 @@
|
|||||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
|
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||||
// This file is autogenerated. DO NOT EDIT.
|
|
||||||
//
|
//
|
||||||
// To regenerate, run "make gen-cue" from the repository root.
|
// Generated by:
|
||||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// kinds/gen.go
|
||||||
|
// Using jennies:
|
||||||
|
// CommonSchemaJenny
|
||||||
|
//
|
||||||
|
// Run 'make gen-cue' from repository root to regenerate.
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO docs
|
* TODO docs
|
||||||
@@ -262,14 +266,6 @@ export enum LegendDisplayMode {
|
|||||||
Table = 'table',
|
Table = 'table',
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO docs
|
|
||||||
*/
|
|
||||||
export interface TableSortByFieldState {
|
|
||||||
desc?: boolean;
|
|
||||||
displayName: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO docs
|
* TODO docs
|
||||||
*/
|
*/
|
||||||
@@ -388,35 +384,6 @@ export enum BigValueTextMode {
|
|||||||
*/
|
*/
|
||||||
export type FieldTextAlignment = ('auto' | 'left' | 'right' | 'center');
|
export type FieldTextAlignment = ('auto' | 'left' | 'right' | 'center');
|
||||||
|
|
||||||
/**
|
|
||||||
* Internally, this is the "type" of cell that's being displayed
|
|
||||||
* in the table such as colored text, JSON, gauge, etc.
|
|
||||||
* The color-background-solid, gradient-gauge, and lcd-gauge
|
|
||||||
* modes are deprecated in favor of new cell subOptions
|
|
||||||
*/
|
|
||||||
export enum TableCellDisplayMode {
|
|
||||||
Auto = 'auto',
|
|
||||||
BasicGauge = 'basic',
|
|
||||||
ColorBackground = 'color-background',
|
|
||||||
ColorBackgroundSolid = 'color-background-solid',
|
|
||||||
ColorText = 'color-text',
|
|
||||||
Gauge = 'gauge',
|
|
||||||
GradientGauge = 'gradient-gauge',
|
|
||||||
Image = 'image',
|
|
||||||
JSONView = 'json-view',
|
|
||||||
LcdGauge = 'lcd-gauge',
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display mode to the "Colored Background" display
|
|
||||||
* mode for table cells. Either displays a solid color (basic mode)
|
|
||||||
* or a gradient.
|
|
||||||
*/
|
|
||||||
export enum TableCellBackgroundDisplayMode {
|
|
||||||
Basic = 'basic',
|
|
||||||
Gradient = 'gradient',
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO docs
|
* TODO docs
|
||||||
*/
|
*/
|
||||||
@@ -488,6 +455,43 @@ export enum BarGaugeDisplayMode {
|
|||||||
Lcd = 'lcd',
|
Lcd = 'lcd',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internally, this is the "type" of cell that's being displayed
|
||||||
|
* in the table such as colored text, JSON, gauge, etc.
|
||||||
|
* The color-background-solid, gradient-gauge, and lcd-gauge
|
||||||
|
* modes are deprecated in favor of new cell subOptions
|
||||||
|
*/
|
||||||
|
export enum TableCellDisplayMode {
|
||||||
|
Auto = 'auto',
|
||||||
|
BasicGauge = 'basic',
|
||||||
|
ColorBackground = 'color-background',
|
||||||
|
ColorBackgroundSolid = 'color-background-solid',
|
||||||
|
ColorText = 'color-text',
|
||||||
|
Gauge = 'gauge',
|
||||||
|
GradientGauge = 'gradient-gauge',
|
||||||
|
Image = 'image',
|
||||||
|
JSONView = 'json-view',
|
||||||
|
LcdGauge = 'lcd-gauge',
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display mode to the "Colored Background" display
|
||||||
|
* mode for table cells. Either displays a solid color (basic mode)
|
||||||
|
* or a gradient.
|
||||||
|
*/
|
||||||
|
export enum TableCellBackgroundDisplayMode {
|
||||||
|
Basic = 'basic',
|
||||||
|
Gradient = 'gradient',
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO docs
|
||||||
|
*/
|
||||||
|
export interface TableSortByFieldState {
|
||||||
|
desc?: boolean;
|
||||||
|
displayName: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Auto mode table cell options
|
* Auto mode table cell options
|
||||||
*/
|
*/
|
||||||
@@ -538,6 +542,24 @@ export interface TableColoredBackgroundCellOptions {
|
|||||||
*/
|
*/
|
||||||
export type TableCellOptions = (TableAutoCellOptions | TableBarGaugeCellOptions | TableColoredBackgroundCellOptions | TableColorTextCellOptions | TableImageCellOptions | TableJsonViewCellOptions);
|
export type TableCellOptions = (TableAutoCellOptions | TableBarGaugeCellOptions | TableColoredBackgroundCellOptions | TableColorTextCellOptions | TableImageCellOptions | TableJsonViewCellOptions);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use UTC/GMT timezone
|
||||||
|
*/
|
||||||
|
export type TimeZoneUtc = 'utc';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the timezone defined by end user web browser
|
||||||
|
*/
|
||||||
|
export type TimeZoneBrowser = 'browser';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO docs
|
||||||
|
*/
|
||||||
|
export interface VizTooltipOptions {
|
||||||
|
mode: TooltipDisplayMode;
|
||||||
|
sort: SortOrder;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Field options for each field within a table (e.g 10, "The String", 64.20, etc.)
|
* Field options for each field within a table (e.g 10, "The String", 64.20, etc.)
|
||||||
* Generally defines alignment, filtering capabilties, display options, etc.
|
* Generally defines alignment, filtering capabilties, display options, etc.
|
||||||
@@ -561,24 +583,6 @@ export const defaultTableFieldOptions: Partial<TableFieldOptions> = {
|
|||||||
inspect: false,
|
inspect: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO docs
|
|
||||||
*/
|
|
||||||
export interface VizTooltipOptions {
|
|
||||||
mode: TooltipDisplayMode;
|
|
||||||
sort: SortOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Use UTC/GMT timezone
|
|
||||||
*/
|
|
||||||
export type TimeZoneUtc = 'utc';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Use the timezone defined by end user web browser
|
|
||||||
*/
|
|
||||||
export type TimeZoneBrowser = 'browser';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A specific timezone from https://en.wikipedia.org/wiki/Tz_database
|
* A specific timezone from https://en.wikipedia.org/wiki/Tz_database
|
||||||
*/
|
*/
|
||||||
+1
-79
@@ -1,4 +1,4 @@
|
|||||||
package schema
|
package common
|
||||||
|
|
||||||
// TODO break this up into individual files. Current limitation on this is codegen logic, imports, dependencies
|
// TODO break this up into individual files. Current limitation on this is codegen logic, imports, dependencies
|
||||||
|
|
||||||
@@ -137,12 +137,6 @@ LegendPlacement: "bottom" | "right" @cuetsy(kind="type")
|
|||||||
// Note: "hidden" needs to remain as an option for plugins compatibility
|
// Note: "hidden" needs to remain as an option for plugins compatibility
|
||||||
LegendDisplayMode: "list" | "table" | "hidden" @cuetsy(kind="enum")
|
LegendDisplayMode: "list" | "table" | "hidden" @cuetsy(kind="enum")
|
||||||
|
|
||||||
// TODO docs
|
|
||||||
TableSortByFieldState: {
|
|
||||||
displayName: string
|
|
||||||
desc?: bool
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// TODO docs
|
// TODO docs
|
||||||
SingleStatBaseOptions: {
|
SingleStatBaseOptions: {
|
||||||
OptionsWithTextFormatting
|
OptionsWithTextFormatting
|
||||||
@@ -201,18 +195,6 @@ BigValueTextMode: "auto" | "value" | "value_and_name" | "name" | "none" @cuetsy(
|
|||||||
// TODO docs
|
// TODO docs
|
||||||
FieldTextAlignment: "auto" | "left" | "right" | "center" @cuetsy(kind="type")
|
FieldTextAlignment: "auto" | "left" | "right" | "center" @cuetsy(kind="type")
|
||||||
|
|
||||||
// Internally, this is the "type" of cell that's being displayed
|
|
||||||
// in the table such as colored text, JSON, gauge, etc.
|
|
||||||
// The color-background-solid, gradient-gauge, and lcd-gauge
|
|
||||||
// modes are deprecated in favor of new cell subOptions
|
|
||||||
TableCellDisplayMode: "auto" | "color-text" | "color-background" | "color-background-solid" | "gradient-gauge" | "lcd-gauge" | "json-view" | "basic" | "image" | "gauge" @cuetsy(kind="enum",memberNames="Auto|ColorText|ColorBackground|ColorBackgroundSolid|GradientGauge|LcdGauge|JSONView|BasicGauge|Image|Gauge")
|
|
||||||
|
|
||||||
// Display mode to the "Colored Background" display
|
|
||||||
// mode for table cells. Either displays a solid color (basic mode)
|
|
||||||
// or a gradient.
|
|
||||||
TableCellBackgroundDisplayMode: "basic" | "gradient" @cuetsy(kind="enum",memberNames="Basic|Gradient")
|
|
||||||
|
|
||||||
|
|
||||||
// TODO docs
|
// TODO docs
|
||||||
VizTextDisplayOptions: {
|
VizTextDisplayOptions: {
|
||||||
// Explicit title text size
|
// Explicit title text size
|
||||||
@@ -259,68 +241,8 @@ VizLegendOptions: {
|
|||||||
// for the bar gauge component of Grafana UI
|
// for the bar gauge component of Grafana UI
|
||||||
BarGaugeDisplayMode: "basic" | "lcd" | "gradient" @cuetsy(kind="enum")
|
BarGaugeDisplayMode: "basic" | "lcd" | "gradient" @cuetsy(kind="enum")
|
||||||
|
|
||||||
// Auto mode table cell options
|
|
||||||
TableAutoCellOptions: {
|
|
||||||
type: TableCellDisplayMode & "auto"
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// Colored text cell options
|
|
||||||
TableColorTextCellOptions: {
|
|
||||||
type: TableCellDisplayMode & "color-text"
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// Json view cell options
|
|
||||||
TableJsonViewCellOptions: {
|
|
||||||
type: TableCellDisplayMode & "json-view"
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// Json view cell options
|
|
||||||
TableImageCellOptions: {
|
|
||||||
type: TableCellDisplayMode & "image"
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// Gauge cell options
|
|
||||||
TableBarGaugeCellOptions: {
|
|
||||||
type: TableCellDisplayMode & "gauge"
|
|
||||||
mode?: BarGaugeDisplayMode
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// Colored background cell options
|
|
||||||
TableColoredBackgroundCellOptions: {
|
|
||||||
type: TableCellDisplayMode & "color-background"
|
|
||||||
mode?: TableCellBackgroundDisplayMode
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// Table cell options. Each cell has a display mode
|
|
||||||
// and other potential options for that display.
|
|
||||||
TableCellOptions: TableAutoCellOptions | TableBarGaugeCellOptions | TableColoredBackgroundCellOptions | TableColorTextCellOptions | TableImageCellOptions | TableJsonViewCellOptions @cuetsy(kind="type")
|
|
||||||
|
|
||||||
// Field options for each field within a table (e.g 10, "The String", 64.20, etc.)
|
|
||||||
// Generally defines alignment, filtering capabilties, display options, etc.
|
|
||||||
TableFieldOptions: {
|
|
||||||
width?: number
|
|
||||||
minWidth?: number
|
|
||||||
align: FieldTextAlignment | *"auto"
|
|
||||||
// This field is deprecated in favor of using cellOptions
|
|
||||||
displayMode?: TableCellDisplayMode
|
|
||||||
cellOptions: TableCellOptions
|
|
||||||
hidden?: bool // ?? default is missing or false ??
|
|
||||||
inspect: bool | *false
|
|
||||||
filterable?: bool
|
|
||||||
} @cuetsy(kind="interface")
|
|
||||||
|
|
||||||
// TODO docs
|
// TODO docs
|
||||||
VizTooltipOptions: {
|
VizTooltipOptions: {
|
||||||
mode: TooltipDisplayMode
|
mode: TooltipDisplayMode
|
||||||
sort: SortOrder
|
sort: SortOrder
|
||||||
} @cuetsy(kind="interface")
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
|
||||||
// Use UTC/GMT timezone
|
|
||||||
TimeZoneUtc: "utc" @cuetsy(kind="type")
|
|
||||||
|
|
||||||
// Use the timezone defined by end user web browser
|
|
||||||
TimeZoneBrowser: "browser" @cuetsy(kind="type")
|
|
||||||
|
|
||||||
// A specific timezone from https://en.wikipedia.org/wiki/Tz_database
|
|
||||||
TimeZone: TimeZoneUtc | TimeZoneBrowser | string | *"browser" @cuetsy(kind="type")
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
package common
|
||||||
|
|
||||||
|
// Internally, this is the "type" of cell that's being displayed
|
||||||
|
// in the table such as colored text, JSON, gauge, etc.
|
||||||
|
// The color-background-solid, gradient-gauge, and lcd-gauge
|
||||||
|
// modes are deprecated in favor of new cell subOptions
|
||||||
|
TableCellDisplayMode: "auto" | "color-text" | "color-background" | "color-background-solid" | "gradient-gauge" | "lcd-gauge" | "json-view" | "basic" | "image" | "gauge" @cuetsy(kind="enum",memberNames="Auto|ColorText|ColorBackground|ColorBackgroundSolid|GradientGauge|LcdGauge|JSONView|BasicGauge|Image|Gauge")
|
||||||
|
|
||||||
|
// Display mode to the "Colored Background" display
|
||||||
|
// mode for table cells. Either displays a solid color (basic mode)
|
||||||
|
// or a gradient.
|
||||||
|
TableCellBackgroundDisplayMode: "basic" | "gradient" @cuetsy(kind="enum",memberNames="Basic|Gradient")
|
||||||
|
|
||||||
|
// TODO docs
|
||||||
|
TableSortByFieldState: {
|
||||||
|
displayName: string
|
||||||
|
desc?: bool
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Auto mode table cell options
|
||||||
|
TableAutoCellOptions: {
|
||||||
|
type: TableCellDisplayMode & "auto"
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Colored text cell options
|
||||||
|
TableColorTextCellOptions: {
|
||||||
|
type: TableCellDisplayMode & "color-text"
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Json view cell options
|
||||||
|
TableJsonViewCellOptions: {
|
||||||
|
type: TableCellDisplayMode & "json-view"
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Json view cell options
|
||||||
|
TableImageCellOptions: {
|
||||||
|
type: TableCellDisplayMode & "image"
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Gauge cell options
|
||||||
|
TableBarGaugeCellOptions: {
|
||||||
|
type: TableCellDisplayMode & "gauge"
|
||||||
|
mode?: BarGaugeDisplayMode
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Colored background cell options
|
||||||
|
TableColoredBackgroundCellOptions: {
|
||||||
|
type: TableCellDisplayMode & "color-background"
|
||||||
|
mode?: TableCellBackgroundDisplayMode
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
|
// Table cell options. Each cell has a display mode
|
||||||
|
// and other potential options for that display.
|
||||||
|
TableCellOptions: TableAutoCellOptions | TableBarGaugeCellOptions | TableColoredBackgroundCellOptions | TableColorTextCellOptions | TableImageCellOptions | TableJsonViewCellOptions @cuetsy(kind="type")
|
||||||
|
|
||||||
|
// Field options for each field within a table (e.g 10, "The String", 64.20, etc.)
|
||||||
|
// Generally defines alignment, filtering capabilties, display options, etc.
|
||||||
|
TableFieldOptions: {
|
||||||
|
width?: number
|
||||||
|
minWidth?: number
|
||||||
|
align: FieldTextAlignment | *"auto"
|
||||||
|
// This field is deprecated in favor of using cellOptions
|
||||||
|
displayMode?: TableCellDisplayMode
|
||||||
|
cellOptions: TableCellOptions
|
||||||
|
hidden?: bool // ?? default is missing or false ??
|
||||||
|
inspect: bool | *false
|
||||||
|
filterable?: bool
|
||||||
|
} @cuetsy(kind="interface")
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package common
|
||||||
|
|
||||||
|
// Use UTC/GMT timezone
|
||||||
|
TimeZoneUtc: "utc" @cuetsy(kind="type")
|
||||||
|
|
||||||
|
// Use the timezone defined by end user web browser
|
||||||
|
TimeZoneBrowser: "browser" @cuetsy(kind="type")
|
||||||
|
|
||||||
|
// A specific timezone from https://en.wikipedia.org/wiki/Tz_database
|
||||||
|
TimeZone: TimeZoneUtc | TimeZoneBrowser | string | *"browser" @cuetsy(kind="type")
|
||||||
@@ -3,5 +3,5 @@
|
|||||||
*
|
*
|
||||||
* @packageDocumentation
|
* @packageDocumentation
|
||||||
*/
|
*/
|
||||||
export * from './schema/mudball.gen';
|
export * from './common/common.gen';
|
||||||
export * from './index.gen';
|
export * from './index.gen';
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
// dashboard_experimental.gen.ts needs ignoring as isolatedModules requires it to contain an import or export statement.
|
"exclude": ["dist/**/*", "**/*.test.ts*"],
|
||||||
"exclude": ["dist/**/*", "src/schema/dashboard/dashboard_experimental.gen.ts", "**/*.test.ts*"],
|
|
||||||
"extends": "./tsconfig.json"
|
"extends": "./tsconfig.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,7 @@
|
|||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"rootDirs": ["."]
|
"rootDirs": ["."]
|
||||||
},
|
},
|
||||||
// dashboard_experimental.gen.ts needs ignoring as isolatedModules requires it to contain an import or export statement.
|
"exclude": ["dist/**/*"],
|
||||||
"exclude": ["dist/**/*", "src/schema/*/*_experimental.gen.ts"],
|
|
||||||
"extends": "@grafana/tsconfig",
|
"extends": "@grafana/tsconfig",
|
||||||
"include": ["src/**/*.ts*"]
|
"include": ["src/**/*.ts*"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
//go:build ignore
|
|
||||||
// +build ignore
|
|
||||||
|
|
||||||
//go:generate go run gen.go
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
|
|
||||||
"cuelang.org/go/cue/cuecontext"
|
|
||||||
"cuelang.org/go/cue/load"
|
|
||||||
"github.com/grafana/cuetsy"
|
|
||||||
gcgen "github.com/grafana/grafana/pkg/codegen"
|
|
||||||
)
|
|
||||||
|
|
||||||
const sep = string(filepath.Separator)
|
|
||||||
|
|
||||||
var tsroot, cmroot, groot string
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
cwd, err := os.Getwd()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "could not get working directory: %s", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO this binds us to only having coremodels in a single directory. If we need more, compgen is the way
|
|
||||||
groot = filepath.Dir(filepath.Dir(filepath.Dir(cwd))) // the working dir is <grafana_dir>/pkg/framework/coremodel. Going up 3 dirs we get the grafana root
|
|
||||||
|
|
||||||
cmroot = filepath.Join(groot, "pkg", "coremodel")
|
|
||||||
tsroot = filepath.Join(groot, "packages", "grafana-schema", "src")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate Go and Typescript implementations for all coremodels, and populate the
|
|
||||||
// coremodel static registry.
|
|
||||||
func main() {
|
|
||||||
if len(os.Args) > 1 {
|
|
||||||
fmt.Fprintf(os.Stderr, "coremodel code generator does not currently accept any arguments\n, got %q", os.Args)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
wd := gcgen.NewWriteDiffer()
|
|
||||||
|
|
||||||
// TODO generating these is here temporarily until we make a more permanent home
|
|
||||||
wdsh, err := genSharedSchemas(groot)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "TS gen error for shared schemas in %s: %w", filepath.Join(groot, "packages", "grafana-schema", "src", "schema"), err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
wd.Merge(wdsh)
|
|
||||||
|
|
||||||
if _, set := os.LookupEnv("CODEGEN_VERIFY"); set {
|
|
||||||
err = wd.Verify()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "generated code is not up to date:\n%s\nrun `make gen-cue` to regenerate\n\n", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
err = wd.Write()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "error while writing generated code to disk:\n%s\n", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func genSharedSchemas(groot string) (gcgen.WriteDiffer, error) {
|
|
||||||
abspath := filepath.Join(groot, "packages", "grafana-schema", "src", "schema")
|
|
||||||
cfg := &load.Config{
|
|
||||||
ModuleRoot: groot,
|
|
||||||
Module: "github.com/grafana/grafana",
|
|
||||||
Dir: abspath,
|
|
||||||
}
|
|
||||||
|
|
||||||
bi := load.Instances(nil, cfg)
|
|
||||||
if len(bi) > 1 {
|
|
||||||
return nil, fmt.Errorf("loading CUE files in %s resulted in more than one instance", abspath)
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx := cuecontext.New()
|
|
||||||
v := ctx.BuildInstance(bi[0])
|
|
||||||
if v.Err() != nil {
|
|
||||||
return nil, fmt.Errorf("errors while building CUE in %s: %s", abspath, v.Err())
|
|
||||||
}
|
|
||||||
|
|
||||||
b, err := cuetsy.Generate(v, cuetsy.Config{
|
|
||||||
Export: true,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to generate TS: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
wd := gcgen.NewWriteDiffer()
|
|
||||||
wd[filepath.Join(abspath, "mudball.gen.ts")] = append([]byte(`//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
|
|
||||||
// This file is autogenerated. DO NOT EDIT.
|
|
||||||
//
|
|
||||||
// To regenerate, run "make gen-cue" from the repository root.
|
|
||||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
`), b...)
|
|
||||||
return wd, nil
|
|
||||||
}
|
|
||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
// not present in the list are not not allowed, and code generation will fail.
|
// not present in the list are not not allowed, and code generation will fail.
|
||||||
var importMap = map[string]string{
|
var importMap = map[string]string{
|
||||||
"github.com/grafana/thema": "",
|
"github.com/grafana/thema": "",
|
||||||
"github.com/grafana/grafana/packages/grafana-schema/src/schema": "@grafana/schema",
|
"github.com/grafana/grafana/packages/grafana-schema/src/common": "@grafana/schema",
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import (
|
|||||||
func PermittedCUEImports() []string {
|
func PermittedCUEImports() []string {
|
||||||
return []string{
|
return []string{
|
||||||
"github.com/grafana/thema",
|
"github.com/grafana/thema",
|
||||||
"github.com/grafana/grafana/packages/grafana-schema/src/schema",
|
"github.com/grafana/grafana/packages/grafana-schema/src/common",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/thema"
|
"github.com/grafana/thema"
|
||||||
ui "github.com/grafana/grafana/packages/grafana-schema/src/schema"
|
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
Panel: thema.#Lineage & {
|
Panel: thema.#Lineage & {
|
||||||
|
|||||||
Reference in New Issue
Block a user