Skip to content

Commit 5442738

Browse files
committed
feat: add --version option to download a specific SQLite version
1 parent 0a5bc88 commit 5442738

1 file changed

Lines changed: 34 additions & 12 deletions

File tree

scripts/sync-from-sqlite.ts

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,12 @@ Usage:
168168
node scripts/fetch-sqlite-amalgamation.mjs [options]
169169
170170
Options:
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
174175
This script:
175-
1. Fetches the latest SQLite version from GitHub
176+
1. Fetches the latest SQLite version from GitHub (or uses --version)
176177
2. Downloads the amalgamation ZIP from sqlite.org
177178
3. Extracts sqlite3.c, sqlite3.h, and sqlite3ext.h
178179
4. 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

Comments
 (0)