Context
SonarQube duplication on the moox/verapdf branch in production code: InstallVeraPdfCommand (12%), ValidateCommand (26%), and DoctorCommand repeat the same concerns — resolving base path / launcher / Java binary, the "installed / java-available" gating, and status output.
What to build
The veraPDF commands share their install/environment logic through one place instead of repeating it, so each command is thin and the shared logic has a single home.
Acceptance criteria
Blocked by
None — can start immediately.
Context
SonarQube duplication on the
moox/verapdfbranch in production code:InstallVeraPdfCommand(12%),ValidateCommand(26%), andDoctorCommandrepeat the same concerns — resolving base path / launcher / Java binary, the "installed / java-available" gating, and status output.What to build
The veraPDF commands share their install/environment logic through one place instead of repeating it, so each command is thin and the shared logic has a single home.
Acceptance criteria
VeraPdfServiceand used byInstallVeraPdfCommand,ValidateCommand, andDoctorCommand.Blocked by
None — can start immediately.