@@ -9,6 +9,7 @@ import Dashboard, { DashboardConfig } from "./lib/Dashboard";
9
9
import Ajv , { type ErrorObject } from 'ajv' ;
10
10
import { QuickstartConfig , QuickstartConfigAlert } from './types/QuickstartConfig' ;
11
11
import { DataSourceConfig } from './types/DataSourceConfig' ;
12
+ import { passedProcessArguments } from './lib/helpers' ;
12
13
13
14
type ArtifactSchema = Record < string , unknown > ;
14
15
@@ -74,7 +75,7 @@ export const validateArtifact = (schema: ArtifactSchema, artifact: Artifact): Er
74
75
return ajv . errors ?? [ ] ;
75
76
}
76
77
77
- const main = ( ) => {
78
+ const main = ( shouldOutputArtifact : boolean = false ) => {
78
79
const schema = getSchema ( './schema/artifact.json' ) ;
79
80
const components = getArtifactComponents ( ) ;
80
81
const dataSourceIds = getDataSourceIds ( './schema/core-datasource-ids.json' , components . dataSources ) ;
@@ -88,6 +89,25 @@ const main = () => {
88
89
}
89
90
90
91
console . log ( '[*] Validation succeeded' ) ;
92
+
93
+ if ( shouldOutputArtifact ) {
94
+ outputArtifact ( artifact ) ;
95
+ }
96
+ }
97
+
98
+ const outputArtifact = ( artifact : Artifact ) => {
99
+ console . log ( '[*] Outputting the artifact' ) ;
100
+ try {
101
+ fs . mkdirSync ( './build' , { recursive : true } ) ;
102
+
103
+ // Dump the artifact to artifact.json
104
+ fs . writeFileSync ( './build/artifact.json' , JSON . stringify ( artifact ) ) ;
105
+ // Copy the schema to schema.json
106
+ fs . copyFileSync ( './schema/artifact.json' , './build/schema.json' ) ;
107
+ } catch ( e ) {
108
+ console . error ( 'Error writing artifact to file:' , e ) ;
109
+ process . exit ( 1 ) ;
110
+ }
91
111
}
92
112
93
113
const getInvalidItems = ( errors : ErrorObject [ ] , artifact : ArtifactSchema ) : InvalidItem [ ] => {
@@ -108,25 +128,26 @@ const getInvalidItems = (errors: ErrorObject[], artifact: ArtifactSchema): Inval
108
128
}
109
129
110
130
const printErrors = ( invalidItems : InvalidItem [ ] ) : void => {
111
- console . error ( '*** Validation failed. See errors below. ***' ) ;
112
- console . error ( '--------------------------------------------' ) ;
113
-
114
- invalidItems . forEach ( ( { value, component, error } , idx ) => {
115
- console . error ( `Error #${ idx + 1 } :` , error ) ;
116
- console . error ( '' ) ;
117
- console . error ( 'Received value:' , value ) ;
118
-
119
- console . error ( '' ) ;
120
- if ( component !== value ) {
121
- console . error ( 'Invalid component:' , component ) ;
122
- }
123
-
124
- if ( idx < invalidItems . length - 1 ) {
125
- console . error ( '************************************' ) ;
126
- }
127
- } ) ;
131
+ console . error ( '*** Validation failed. See errors below. ***' ) ;
132
+ console . error ( '--------------------------------------------' ) ;
133
+
134
+ invalidItems . forEach ( ( { value, component, error } , idx ) => {
135
+ console . error ( `Error #${ idx + 1 } :` , error ) ;
136
+ console . error ( '' ) ;
137
+ console . error ( 'Received value:' , value ) ;
138
+
139
+ console . error ( '' ) ;
140
+ if ( component !== value ) {
141
+ console . error ( 'Invalid component:' , component ) ;
142
+ }
143
+
144
+ if ( idx < invalidItems . length - 1 ) {
145
+ console . error ( '************************************' ) ;
146
+ }
147
+ } ) ;
128
148
}
129
149
130
150
if ( require . main === module ) {
131
- main ( ) ;
151
+ const shouldOutputArtifact = passedProcessArguments ( ) . includes ( '--output-artifact' ) ;
152
+ main ( shouldOutputArtifact ) ;
132
153
}
0 commit comments