@@ -168,11 +168,12 @@ Usage:
168168 node scripts/fetch-sqlite-amalgamation.mjs [options]
169169
170170Options:
171- --help Show this help message
172- --force Force download even if current version is newer
171+ --help Show this help message
172+ --force Force download even if current version is newer
173+ --version X.Y.Z Download a specific SQLite version instead of latest
173174
174175This script:
175- 1. Fetches the latest SQLite version from GitHub
176+ 1. Fetches the latest SQLite version from GitHub (or uses --version)
1761772. Downloads the amalgamation ZIP from sqlite.org
1771783. Extracts sqlite3.c, sqlite3.h, and sqlite3ext.h
1781794. Warns if the current version is newer than the download
@@ -189,18 +190,39 @@ async function main() {
189190 process . exit ( 0 ) ;
190191 }
191192
192- // Get the latest release version from GitHub tags
193- const latestRelease = await getLatestReleaseVersion ( ) ;
194- if ( ! latestRelease ) {
195- throw new Error (
196- "Could not determine latest SQLite release version from GitHub tags" ,
197- ) ;
193+ // Check for --version flag
194+ const versionFlagIndex = process . argv . indexOf ( "--version" ) ;
195+ let targetSemver : string | null = null ;
196+ if ( versionFlagIndex !== - 1 && process . argv [ versionFlagIndex + 1 ] ) {
197+ targetSemver = process . argv [ versionFlagIndex + 1 ] ;
198+ // Validate format
199+ if ( ! / ^ \d + \. \d + \. \d + $ / . test ( targetSemver ) ) {
200+ throw new Error (
201+ `Invalid version format: ${ targetSemver } (expected X.Y.Z)` ,
202+ ) ;
203+ }
198204 }
199205
200- console . log ( `Latest SQLite release: ${ latestRelease . semver } ` ) ;
206+ let version : string ;
207+ let versionInfo : ReturnType < typeof parseVersion > ;
208+
209+ if ( targetSemver ) {
210+ console . log ( `Target SQLite version: ${ targetSemver } ` ) ;
211+ version = getSqliteVersionNumber ( targetSemver ) ;
212+ versionInfo = parseVersion ( version ) ;
213+ } else {
214+ // Get the latest release version from GitHub tags
215+ const latestRelease = await getLatestReleaseVersion ( ) ;
216+ if ( ! latestRelease ) {
217+ throw new Error (
218+ "Could not determine latest SQLite release version from GitHub tags" ,
219+ ) ;
220+ }
201221
202- const version = latestRelease . version ;
203- const versionInfo = parseVersion ( version ) ;
222+ console . log ( `Latest SQLite release: ${ latestRelease . semver } ` ) ;
223+ version = latestRelease . version ;
224+ versionInfo = parseVersion ( version ) ;
225+ }
204226
205227 console . log ( `Amalgamation version: ${ versionInfo . formatted } ` ) ;
206228
0 commit comments