psa-cli is currently Linux-only. PeopleSoft runs on Windows too — supporting Windows opens psa-cli to Windows-based PeopleSoft administrators.
Current Linux assumptions
pyproject.toml classifier: Operating System :: POSIX :: Linux
- README + docs claim Linux-only
- CI matrix runs only on
ubuntu-latest
Known sticking points
| Area |
Linux |
Windows |
Notes |
| Privilege escalation |
sudo |
runas / UAC |
SudoFileOps would need a Windows backend |
| File permissions |
chmod/chown |
NTFS ACLs |
Different model entirely |
| Process invocation |
psadmin shell |
psadmin.cmd / tmadmin.exe |
Path + extension differences |
| Default paths |
/u01/app/... |
C:\\PS_*\\... |
Need OS-aware defaults |
| DPK install |
DPK for Linux |
DPK for Windows (different layout) |
Each command needs OS branching |
| Terminal / ANSI |
Native |
Windows Terminal OK, cmd.exe limited |
Rich handles most of this automatically |
| Subprocess invocation |
Forward slashes, sh-style quoting |
Backslashes, cmd-style quoting |
subprocess_runner likely needs review |
Suggested approach
- Scope first — survey every
subprocess.run, hard-coded /, os.geteuid, sudo, psadmin shell-out, and the prereq-check shell scripts. Identify the actual surface area.
- Abstract OS-specific behavior behind a small
platform layer (e.g. psa.core.platform.escalate(), psa.core.platform.psadmin_cmd()) instead of inlining os.name checks everywhere.
- Add Windows to the CI matrix (
windows-latest). This will quickly surface anything broken.
- Test against a real Windows PeopleSoft environment for the DPK and domain commands — unit tests won't catch shell-out integration issues.
- Update README + docs + pyproject classifiers once parity is real.
References
- PeopleSoft DPK for Windows: deployment differs significantly from Linux DPK
- Python
pathlib.Path and shutil already handle most cross-platform path work — leverage them
psa-cli is currently Linux-only. PeopleSoft runs on Windows too — supporting Windows opens psa-cli to Windows-based PeopleSoft administrators.
Current Linux assumptions
pyproject.tomlclassifier:Operating System :: POSIX :: Linuxubuntu-latestKnown sticking points
sudorunas/ UACSudoFileOpswould need a Windows backendchmod/chownpsadminshellpsadmin.cmd/tmadmin.exe/u01/app/...C:\\PS_*\\...subprocess_runnerlikely needs reviewSuggested approach
subprocess.run, hard-coded/,os.geteuid,sudo,psadminshell-out, and the prereq-check shell scripts. Identify the actual surface area.platformlayer (e.g.psa.core.platform.escalate(),psa.core.platform.psadmin_cmd()) instead of inliningos.namechecks everywhere.windows-latest). This will quickly surface anything broken.References
pathlib.Pathandshutilalready handle most cross-platform path work — leverage them