PowerShell resolves ExternalScript (.ps1) ahead of Application (.cmd), and both lived in the directory the installer puts on PATH -- so in PowerShell `ncp` ran the .ps1 and was execution-policy-bound again, the exact thing the .cmd exists to avoid. Its other justification (giving ncp to pwsh on Linux) stopped being true once /usr/local/bin/ncp existed: pwsh runs a PATH symlink to a shell script as an Application. A test now prevents the file coming back. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
1.5 KiB
Batchfile
29 lines
1.5 KiB
Batchfile
@echo off
|
|
REM ncp - PATH entry point on Windows. A .cmd, not a .ps1, on purpose: PowerShell's
|
|
REM execution policy governs .ps1 only, so this keeps working under the default
|
|
REM Restricted policy and from cmd, Win+R, Task Scheduler and .lnk targets - none
|
|
REM of which load a PowerShell profile. install-windows.ps1 puts this directory on
|
|
REM the machine PATH.
|
|
REM
|
|
REM This file must NOT be accompanied by an ncp.ps1 in the same directory:
|
|
REM PowerShell resolves ExternalScript (.ps1) ahead of Application (.cmd), so a
|
|
REM sibling ncp.ps1 wins in PowerShell and drags the execution policy back in -
|
|
REM exactly what this file exists to avoid.
|
|
REM
|
|
REM ASCII only, same rule as the .ps1 files - a test in tests/test_smoke.py enforces it.
|
|
setlocal
|
|
REM ncp.py pins its stdout to UTF-8 (it prints check marks and em-dashes, and a
|
|
REM redirected stdout would otherwise raise UnicodeEncodeError). A console still
|
|
REM on codepage 437 renders those bytes as mojibake, so switch it to UTF-8 here.
|
|
REM ponytail: chcp changes the calling console's codepage and does not restore
|
|
REM it on exit. Harmless in practice; if that ever matters, set the console CP
|
|
REM from inside ncp.py with ctypes SetConsoleOutputCP instead.
|
|
chcp 65001 >nul 2>&1
|
|
set "ROOT=%~dp0.."
|
|
REM System Python fallback so backup/restore work before the venv exists; those
|
|
REM delegate to the stdlib-only bin/sync.py. Mirrors the same fallback in ncp.ps1.
|
|
set "PY=%ROOT%\Promethean\Scripts\python.exe"
|
|
if not exist "%PY%" set "PY=python"
|
|
"%PY%" "%ROOT%\management\ncp.py" %*
|
|
exit /b %ERRORLEVEL%
|