You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -24,28 +23,53 @@ After testing on Windows, the `.atmos.d` auto-import functionality works correct
24
23
25
24
Enhanced debug logging in `pkg/config/load.go`:
26
25
27
-
- Logs at **Debug** level when directories are found
28
-
- Users can diagnose issues with `ATMOS_LOGS_LEVEL=Debug`
26
+
- Logs at **Debug** level when directories are found.
27
+
- Users can diagnose issues with `ATMOS_LOGS_LEVEL=Debug`.
29
28
30
29
---
31
30
32
31
## Issue #2: Toolchain Installation Failures
33
32
34
33
### Reported Problems
35
34
36
-
1. Binary installed without `.exe` extension - causes `terraform --version` to hang
37
-
2. Archive extraction fails for tools like helm - looking for `windows-amd64/helm` instead of `windows-amd64/helm.exe`
38
-
3. Asset download fails for tools like jq - URL missing `.exe` suffix
39
-
4. Hint message shows Unix `eval` syntax instead of PowerShell `Invoke-Expression`
35
+
1. Binary installed without `.exe` extension - causes `terraform --version` to hang.
36
+
2. Archive extraction fails for tools like helm - looking for `windows-amd64/helm` instead of `windows-amd64/helm.exe`.
37
+
3. Hint message shows Unix `eval` syntax instead of PowerShell `Invoke-Expression`.
38
+
39
+
### Architecture: Centralized Windows Extension Handling
40
+
41
+
Following [Aqua's Windows support approach](https://aquaproj.github.io/docs/reference/windows-support/), Windows executables need the `.exe` extension to be found by `os/exec.LookPath`. Rather than scattering `.exe` handling across multiple files, we use a single centralized function.
42
+
43
+
**Key design decisions:**
44
+
45
+
-**No download URL heuristics**: If a tool's download URL needs `.exe`, the registry should specify it correctly in the asset template. We don't append `.exe` to URLs as a fallback.
46
+
-**Single utility function**: `EnsureWindowsExeExtension()` handles all Windows extension logic in one place.
47
+
-**Registry-driven configuration**: Asset URLs and file names come from the registry definition, not runtime heuristics.
0 commit comments