mirror of
https://github.com/grafana/grafana.git
synced 2026-08-17 00:24:57 -05:00
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/cuectx/ @grafana/grafana-as-code
|
||||
/pkg/registry/ @grafana/grafana-as-code
|
||||
/pkg/framework/coremodel/ @grafana/grafana-as-code
|
||||
/pkg/codegen/ @grafana/grafana-as-code
|
||||
/pkg/kindsys/ @grafana/grafana-as-code
|
||||
/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"
|
||||
go generate ./pkg/plugins/plugindef
|
||||
go generate ./kinds/gen.go
|
||||
go generate ./pkg/framework/coremodel/gen.go
|
||||
go generate ./public/app/plugins/gen.go
|
||||
go generate ./pkg/kindsys/report.go
|
||||
|
||||
|
||||
@@ -6,5 +6,5 @@ import (
|
||||
|
||||
// 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
|
||||
|
||||
+33
-1
@@ -15,6 +15,7 @@ import (
|
||||
|
||||
"cuelang.org/go/cue/errors"
|
||||
"github.com/grafana/codejen"
|
||||
"github.com/grafana/cuetsy"
|
||||
|
||||
"github.com/grafana/grafana/pkg/codegen"
|
||||
"github.com/grafana/grafana/pkg/cuectx"
|
||||
@@ -43,7 +44,8 @@ func main() {
|
||||
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()
|
||||
if err != nil {
|
||||
@@ -81,6 +83,13 @@ func main() {
|
||||
if err != nil {
|
||||
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 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 {
|
||||
if err != nil {
|
||||
return func(msg string) T {
|
||||
|
||||
+63
-59
@@ -1,8 +1,12 @@
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
|
||||
// This file is autogenerated. DO NOT EDIT.
|
||||
// Code generated - EDITING IS FUTILE. 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
|
||||
@@ -262,14 +266,6 @@ export enum LegendDisplayMode {
|
||||
Table = 'table',
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO docs
|
||||
*/
|
||||
export interface TableSortByFieldState {
|
||||
desc?: boolean;
|
||||
displayName: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO docs
|
||||
*/
|
||||
@@ -388,35 +384,6 @@ export enum BigValueTextMode {
|
||||
*/
|
||||
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
|
||||
*/
|
||||
@@ -488,6 +455,43 @@ export enum BarGaugeDisplayMode {
|
||||
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
|
||||
*/
|
||||
@@ -538,6 +542,24 @@ export interface TableColoredBackgroundCellOptions {
|
||||
*/
|
||||
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.)
|
||||
* Generally defines alignment, filtering capabilties, display options, etc.
|
||||
@@ -561,24 +583,6 @@ export const defaultTableFieldOptions: Partial<TableFieldOptions> = {
|
||||
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
|
||||
*/
|
||||
+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
|
||||
|
||||
@@ -137,12 +137,6 @@ LegendPlacement: "bottom" | "right" @cuetsy(kind="type")
|
||||
// Note: "hidden" needs to remain as an option for plugins compatibility
|
||||
LegendDisplayMode: "list" | "table" | "hidden" @cuetsy(kind="enum")
|
||||
|
||||
// TODO docs
|
||||
TableSortByFieldState: {
|
||||
displayName: string
|
||||
desc?: bool
|
||||
} @cuetsy(kind="interface")
|
||||
|
||||
// TODO docs
|
||||
SingleStatBaseOptions: {
|
||||
OptionsWithTextFormatting
|
||||
@@ -201,18 +195,6 @@ BigValueTextMode: "auto" | "value" | "value_and_name" | "name" | "none" @cuetsy(
|
||||
// TODO docs
|
||||
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
|
||||
VizTextDisplayOptions: {
|
||||
// Explicit title text size
|
||||
@@ -259,68 +241,8 @@ VizLegendOptions: {
|
||||
// for the bar gauge component of Grafana UI
|
||||
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
|
||||
VizTooltipOptions: {
|
||||
mode: TooltipDisplayMode
|
||||
sort: SortOrder
|
||||
} @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
|
||||
*/
|
||||
export * from './schema/mudball.gen';
|
||||
export * from './common/common.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/**/*", "src/schema/dashboard/dashboard_experimental.gen.ts", "**/*.test.ts*"],
|
||||
"exclude": ["dist/**/*", "**/*.test.ts*"],
|
||||
"extends": "./tsconfig.json"
|
||||
}
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
"isolatedModules": true,
|
||||
"rootDirs": ["."]
|
||||
},
|
||||
// dashboard_experimental.gen.ts needs ignoring as isolatedModules requires it to contain an import or export statement.
|
||||
"exclude": ["dist/**/*", "src/schema/*/*_experimental.gen.ts"],
|
||||
"exclude": ["dist/**/*"],
|
||||
"extends": "@grafana/tsconfig",
|
||||
"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.
|
||||
var importMap = map[string]string{
|
||||
"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() {
|
||||
|
||||
@@ -26,7 +26,7 @@ import (
|
||||
func PermittedCUEImports() []string {
|
||||
return []string{
|
||||
"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 (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
@@ -16,7 +16,7 @@ package grafanaplugin
|
||||
|
||||
import (
|
||||
"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 & {
|
||||
|
||||
Reference in New Issue
Block a user