@@ -7,39 +7,52 @@ import * as path from 'path';
77 */
88
99const VERSIONS_DIR = 'versions' ;
10- const CONFIG_FILE = 'config/deparser-versions.json' ;
10+ const ROOT_CONFIG_FILE = '../../config/versions.json' ;
11+ const LOCAL_CONFIG_FILE = 'config/deparser-versions.json' ;
1112
12- interface VersionConfig {
13- deparserVersion : string ;
14- typesVersion : string ;
15- pgVersion : string ;
13+ interface VersionInfo {
14+ 'libpg-query' : string ;
15+ 'pgsql-parser' : string ;
16+ 'pgsql-deparser' : string | null ;
17+ '@pgsql/types' : string ;
1618 npmTag : string ;
1719}
1820
19- interface Config {
21+ interface RootConfig {
22+ versions : Record < string , VersionInfo > ;
23+ }
24+
25+ interface LocalConfig {
2026 packageName : string ;
21- versions : Record < string , VersionConfig > ;
2227 packageTemplate : Record < string , any > ;
2328}
2429
25- function loadConfig ( ) : Config {
26- const configPath = path . join ( process . cwd ( ) , CONFIG_FILE ) ;
27- const configContent = fs . readFileSync ( configPath , 'utf-8' ) ;
28- return JSON . parse ( configContent ) ;
30+ function loadConfigs ( ) : { rootConfig : RootConfig ; localConfig : LocalConfig } {
31+ // Load root versions config
32+ const rootConfigPath = path . join ( __dirname , '..' , ROOT_CONFIG_FILE ) ;
33+ const rootConfigContent = fs . readFileSync ( rootConfigPath , 'utf-8' ) ;
34+ const rootConfig : RootConfig = JSON . parse ( rootConfigContent ) ;
35+
36+ // Load local package template config
37+ const localConfigPath = path . join ( process . cwd ( ) , LOCAL_CONFIG_FILE ) ;
38+ const localConfigContent = fs . readFileSync ( localConfigPath , 'utf-8' ) ;
39+ const localConfig : LocalConfig = JSON . parse ( localConfigContent ) ;
40+
41+ return { rootConfig, localConfig } ;
2942}
3043
31- function generatePackageJson ( packageName : string , version : string , versionConfig : VersionConfig , template : Record < string , any > ) : any {
44+ function generatePackageJson ( packageName : string , pgVersion : string , versionInfo : VersionInfo , template : Record < string , any > ) : any {
3245 // Start with the template and override only the version-specific fields
3346 const packageJson : any = {
3447 ...template ,
3548 name : packageName ,
36- version : versionConfig . deparserVersion ,
49+ version : versionInfo [ 'pgsql-deparser' ] ,
3750 dependencies : {
38- [ `@pgsql/types` ] : `^${ versionConfig . typesVersion } `
51+ [ `@pgsql/types` ] : `^${ versionInfo [ '@pgsql/types' ] } `
3952 }
4053 } ;
4154
42- packageJson . scripts [ 'publish:pkg' ] = `npm publish --tag ${ versionConfig . npmTag } ` ;
55+ packageJson . scripts [ 'publish:pkg' ] = `npm publish --tag ${ versionInfo . npmTag } ` ;
4356
4457 return packageJson ;
4558}
@@ -80,20 +93,26 @@ function generateTsConfigEsm(): any {
8093function generateVersionPackages ( ) : void {
8194 console . log ( 'Generating package.json files for each version...\n' ) ;
8295
83- const config = loadConfig ( ) ;
96+ const { rootConfig , localConfig } = loadConfigs ( ) ;
8497
85- for ( const [ version , versionConfig ] of Object . entries ( config . versions ) ) {
86- console . log ( `Processing version ${ version } ...` ) ;
98+ for ( const [ pgVersion , versionInfo ] of Object . entries ( rootConfig . versions ) ) {
99+ // Skip versions that don't have pgsql-deparser
100+ if ( ! versionInfo [ 'pgsql-deparser' ] ) {
101+ console . log ( `Skipping PG${ pgVersion } - no pgsql-deparser version available` ) ;
102+ continue ;
103+ }
104+
105+ console . log ( `Processing version ${ pgVersion } ...` ) ;
87106
88- const versionDir = path . join ( VERSIONS_DIR , version ) ;
107+ const versionDir = path . join ( VERSIONS_DIR , pgVersion ) ;
89108
90109 if ( ! fs . existsSync ( versionDir ) ) {
91110 console . error ( ` ✗ Version directory ${ versionDir } does not exist!` ) ;
92111 continue ;
93112 }
94113
95114 // Generate package.json
96- const packageJson = generatePackageJson ( config . packageName , version , versionConfig , config . packageTemplate ) ;
115+ const packageJson = generatePackageJson ( localConfig . packageName , pgVersion , versionInfo , localConfig . packageTemplate ) ;
97116 const packageJsonPath = path . join ( versionDir , 'package.json' ) ;
98117 fs . writeFileSync ( packageJsonPath , JSON . stringify ( packageJson , null , 2 ) ) ;
99118 console . log ( ` ✓ Created package.json` ) ;
0 commit comments