Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 1 addition & 13 deletions .github/workflows/promote_to_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,8 @@ jobs:
Expand-Archive -Path "denort-windows.zip" -DestinationPath "."

- name: Run patchver for Windows
shell: pwsh
run: |
deno install -g -A -n patchver https://deno.land/x/[email protected]/cli.ts
$CHANNEL="${{github.event.inputs.releaseKind}}"
# Patch deno.exe
Move-Item -Path "deno.exe" -Destination "deno_original.exe"
patchver "deno_original.exe" "deno.exe" $CHANNEL
# Patch denort.exe
Move-Item -Path "denort.exe" -Destination "denort_original.exe"
patchver "denort_original.exe" "denort.exe" $CHANNEL

# Rename files to match expected pattern
Move-Item -Path "deno.exe" -Destination "deno-x86_64-pc-windows-msvc-$CHANNEL.exe"
Move-Item -Path "denort.exe" -Destination "denort-x86_64-pc-windows-msvc-$CHANNEL.exe"
deno run -A ./tools/release/promote_to_release_windows.ts ${{github.event.inputs.releaseKind}}

- name: Authenticate with Azure
uses: azure/login@v1
Expand Down
2 changes: 1 addition & 1 deletion tools/release/promote_to_release.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import { $ } from "jsr:@david/[email protected]";
import { gray } from "jsr:@std/fmt@1/colors";
import { patchver } from "jsr:@deno/patchver@0.2.0";
import { patchver } from "jsr:@deno/patchver@0.3.0";

const SUPPORTED_TARGETS = [
"aarch64-apple-darwin",
Expand Down
36 changes: 36 additions & 0 deletions tools/release/promote_to_release_windows.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/usr/bin/env -S deno run -A
// Copyright 2018-2025 the Deno authors. MIT license.

// deno-lint-ignore-file no-console

import { patchver } from "jsr:@deno/[email protected]";

const CHANNEL = Deno.args[0];
if (CHANNEL !== "rc" && CHANNEL !== "lts") {
throw new Error(`Invalid channel: ${CHANNEL}`);
}

const BINARIES = ["deno.exe", "denort.exe"];

async function patchBinary(inputPath: string, channel: string) {
console.log(`Patching ${inputPath}...`);

const input = await Deno.readFile(inputPath);
const output = patchver(input, channel);

// Extract filename without extension and create output name
const baseName = inputPath.replace(/\.exe$/, "");
const outputPath = `${baseName}-x86_64-pc-windows-msvc-${channel}.exe`;

await Deno.writeFile(outputPath, output);
console.log(`Created ${outputPath}`);
Comment on lines +25 to +26
Copy link

Copilot AI Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The patchBinary function lacks error handling for file operations. In the existing promote_to_release.ts script, similar operations wrap file writes in try-catch blocks (lines 122-130) and exit with error messages on failure. Consider adding similar error handling here to provide clear feedback when file operations fail.

Suggested change
await Deno.writeFile(outputPath, output);
console.log(`Created ${outputPath}`);
try {
await Deno.writeFile(outputPath, output);
console.log(`Created ${outputPath}`);
} catch (err) {
console.error(`Failed to write ${outputPath}:`, err);
Deno.exit(1);
}

Copilot uses AI. Check for mistakes.
}

async function main() {
for (const binary of BINARIES) {
await patchBinary(binary, CHANNEL);
}
console.log("All Windows binaries patched successfully!");
}

await main();
Loading