@@ -3,6 +3,7 @@ package main
3
3
import (
4
4
"bytes"
5
5
"context"
6
+ "flag"
6
7
"fmt"
7
8
"go/format"
8
9
"log"
@@ -209,12 +210,47 @@ func preserveLegacyCatalogBehavior(allProcs []Proc) []Proc {
209
210
return procs
210
211
}
211
212
213
+ func databaseURL () string {
214
+ dburl := os .Getenv ("DATABASE_URL" )
215
+ if dburl != "" {
216
+ return dburl
217
+ }
218
+ pgUser := os .Getenv ("PG_USER" )
219
+ pgHost := os .Getenv ("PG_HOST" )
220
+ pgPort := os .Getenv ("PG_PORT" )
221
+ pgPass := os .Getenv ("PG_PASSWORD" )
222
+ pgDB := os .Getenv ("PG_DATABASE" )
223
+ if pgUser == "" {
224
+ pgUser = "postgres"
225
+ }
226
+ if pgPass == "" {
227
+ pgPass = "mysecretpassword"
228
+ }
229
+ if pgPort == "" {
230
+ pgPort = "5432"
231
+ }
232
+ if pgHost == "" {
233
+ pgHost = "127.0.0.1"
234
+ }
235
+ if pgDB == "" {
236
+ pgDB = "dinotest"
237
+ }
238
+ return fmt .Sprintf ("postgres://%s:%s@%s:%s/%s?sslmode=disable" , pgUser , pgPass , pgHost , pgPort , pgDB )
239
+ }
240
+
212
241
func run (ctx context.Context ) error {
242
+ flag .Parse ()
243
+
244
+ dir := flag .Arg (0 )
245
+ if dir == "" {
246
+ dir = filepath .Join ("internal" , "engine" , "postgresql" )
247
+ }
248
+
213
249
tmpl , err := template .New ("" ).Parse (catalogTmpl )
214
250
if err != nil {
215
251
return err
216
252
}
217
- conn , err := pgx .Connect (ctx , os . Getenv ( "DATABASE_URL" ))
253
+ conn , err := pgx .Connect (ctx , databaseURL ( ))
218
254
if err != nil {
219
255
return err
220
256
}
@@ -224,12 +260,12 @@ func run(ctx context.Context) error {
224
260
{
225
261
Name : "pg_catalog" ,
226
262
GenFnName : "genPGCatalog" ,
227
- DestPath : filepath .Join ("internal" , "engine" , "postgresql" , "pg_catalog.go" ),
263
+ DestPath : filepath .Join (dir , "pg_catalog.go" ),
228
264
},
229
265
{
230
266
Name : "information_schema" ,
231
267
GenFnName : "genInformationSchema" ,
232
- DestPath : filepath .Join ("internal" , "engine" , "postgresql" , "information_schema.go" ),
268
+ DestPath : filepath .Join (dir , "information_schema.go" ),
233
269
},
234
270
}
235
271
@@ -272,8 +308,7 @@ func run(ctx context.Context) error {
272
308
273
309
_ , err := conn .Exec (ctx , fmt .Sprintf ("CREATE EXTENSION IF NOT EXISTS \" %s\" " , extension ))
274
310
if err != nil {
275
- log .Printf ("error creating %s: %s" , extension , err )
276
- continue
311
+ return fmt .Errorf ("error creating %s: %s" , extension , err )
277
312
}
278
313
279
314
rows , err := conn .Query (ctx , extensionFuncs , extension )
@@ -303,7 +338,7 @@ func run(ctx context.Context) error {
303
338
return false
304
339
})
305
340
306
- extensionPath := filepath .Join ("internal" , "engine" , "postgresql" , "contrib" , name + ".go" )
341
+ extensionPath := filepath .Join (dir , "contrib" , name + ".go" )
307
342
err = writeFormattedGo (tmpl , tmplCtx {
308
343
Pkg : "contrib" ,
309
344
SchemaName : "pg_catalog" ,
@@ -322,7 +357,7 @@ func run(ctx context.Context) error {
322
357
return err
323
358
}
324
359
325
- extensionLoaderPath := filepath .Join ("internal" , "engine" , "postgresql" , "extension.go" )
360
+ extensionLoaderPath := filepath .Join (dir , "extension.go" )
326
361
err = writeFormattedGo (extensionTmpl , loaded , extensionLoaderPath )
327
362
if err != nil {
328
363
return err
@@ -349,16 +384,16 @@ type extensionPair struct {
349
384
var extensions = []string {
350
385
"adminpack" ,
351
386
"amcheck" ,
352
- "auth_delay" ,
353
- "auto_explain" ,
354
- "bloom" ,
387
+ // "auth_delay",
388
+ // "auto_explain",
389
+ // "bloom",
355
390
"btree_gin" ,
356
391
"btree_gist" ,
357
392
"citext" ,
358
393
"cube" ,
359
394
"dblink" ,
360
- "dict_int" ,
361
- "dict_xsyn" ,
395
+ // "dict_int",
396
+ // "dict_xsyn",
362
397
"earthdistance" ,
363
398
"file_fdw" ,
364
399
"fuzzystrmatch" ,
@@ -369,26 +404,26 @@ var extensions = []string{
369
404
"lo" ,
370
405
"ltree" ,
371
406
"pageinspect" ,
372
- "passwordcheck" ,
407
+ // "passwordcheck",
373
408
"pg_buffercache" ,
374
- "pgcrypto" ,
375
409
"pg_freespacemap" ,
376
410
"pg_prewarm" ,
377
- "pgrowlocks" ,
378
411
"pg_stat_statements" ,
379
- "pgstattuple" ,
380
412
"pg_trgm" ,
381
413
"pg_visibility" ,
414
+ "pgcrypto" ,
415
+ "pgrowlocks" ,
416
+ "pgstattuple" ,
382
417
"postgres_fdw" ,
383
418
"seg" ,
384
- "sepgsql" ,
385
- "spi" ,
419
+ // "sepgsql",
420
+ // "spi",
386
421
"sslinfo" ,
387
422
"tablefunc" ,
388
423
"tcn" ,
389
- "test_decoding" ,
390
- "tsm_system_rows" ,
391
- "tsm_system_time" ,
424
+ // "test_decoding",
425
+ // "tsm_system_rows",
426
+ // "tsm_system_time",
392
427
"unaccent" ,
393
428
"uuid-ossp" ,
394
429
"xml2" ,
0 commit comments