Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

Commit a7e22b0

Browse files
VexuTechatrix
andcommitted
fetch mirrors lazily
Co-authored-by: Techatrix <techatrix@mailbox.org>
1 parent 7d9b3b5 commit a7e22b0

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

src/versionManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export interface Config {
3636
* `"version"` for Zig, `"--version"` for ZLS
3737
*/
3838
versionArg: string;
39-
mirrorUrls: vscode.Uri[];
39+
getMirrorUrls: () => Promise<vscode.Uri[]>;
4040
canonicalUrl: {
4141
release: vscode.Uri;
4242
nightly: vscode.Uri;
@@ -93,7 +93,7 @@ async function installGuarded(config: Config, version: semver.SemVer): Promise<s
9393
throw new Error(`Can't install ${config.title} because 'tar' could not be found`);
9494
}
9595

96-
const mirrors = [...config.mirrorUrls]
96+
const mirrors = [...(await config.getMirrorUrls())]
9797
.map((mirror) => ({ mirror, sort: Math.random() }))
9898
.sort((a, b) => a.sort - b.sort)
9999
.map(({ mirror }) => mirror);

src/zigSetup.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -578,13 +578,8 @@ async function updateStatus(context: vscode.ExtensionContext): Promise<void> {
578578
}
579579

580580
async function getMirrors(context: vscode.ExtensionContext): Promise<vscode.Uri[]> {
581-
let cached = { timestamp: 0, mirrors: "" };
582-
const key = "mirror-cache";
583-
584-
const cachedStr = context.globalState.get<string>(key);
585-
if (cachedStr !== undefined) {
586-
cached = JSON.parse(cachedStr) as typeof cached;
587-
}
581+
const key = "zig-mirror-cache";
582+
let cached = context.globalState.get(key, { timestamp: 0, mirrors: "" });
588583

589584
const millisecondsInDay = 24 * 60 * 60 * 1000;
590585
if (new Date().getTime() - cached.timestamp > millisecondsInDay) {
@@ -596,7 +591,7 @@ async function getMirrors(context: vscode.ExtensionContext): Promise<vscode.Uri[
596591
timestamp: new Date().getTime(),
597592
mirrors: mirrorList,
598593
};
599-
context.globalState.update(key, JSON.stringify(cached));
594+
context.globalState.update(key, cached);
600595
} catch {
601596
// Cannot fetch mirrors, rely on cache.
602597
}
@@ -605,6 +600,7 @@ async function getMirrors(context: vscode.ExtensionContext): Promise<vscode.Uri[
605600
return cached.mirrors
606601
.trim()
607602
.split("\n")
603+
.filter((u) => !!u)
608604
.map((u) => vscode.Uri.parse(u));
609605
}
610606

@@ -713,7 +709,9 @@ export async function setupZig(context: vscode.ExtensionContext) {
713709
/** https://ziglang.org/download */
714710
minisignKey: minisign.parseKey("RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U"),
715711
versionArg: "version",
716-
mirrorUrls: await getMirrors(context),
712+
getMirrorUrls() {
713+
return getMirrors(context);
714+
},
717715
canonicalUrl: {
718716
release: vscode.Uri.parse("https://ziglang.org/download"),
719717
nightly: vscode.Uri.parse("https://ziglang.org/builds"),

src/zls.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,9 @@ export async function activate(context: vscode.ExtensionContext) {
511511
/** https://github.com/zigtools/release-worker */
512512
minisignKey: minisign.parseKey("RWR+9B91GBZ0zOjh6Lr17+zKf5BoSuFvrx2xSeDE57uIYvnKBGmMjOex"),
513513
versionArg: "--version",
514-
mirrorUrls: [],
514+
getMirrorUrls() {
515+
return Promise.resolve([]);
516+
},
515517
canonicalUrl: {
516518
release: vscode.Uri.parse("https://builds.zigtools.org"),
517519
nightly: vscode.Uri.parse("https://builds.zigtools.org"),

0 commit comments

Comments
 (0)