I think it's easy enough for a user's first experience with terminus to go something like:
$ curl -O https://raw.githubusercontent.com/pantheon-systems/terminus-installer/master/builds/installer.phar && php installer.phar install
$ vendor/bin/terminus
PHP Fatal error: Uncaught ReflectionException: Class DOMDocument does not exist in /home/mpantheon/terminus/vendor/consolidation/output-formatters/src/Transformations/DomToArraySimplifier.php:24
I can think of a few alternatives to improve on this UX:
Quick & dirty: add ext-xml and any other required extensions to terminus's composer.json (granted, this one isn't really the purview of the installer.) This is easy and should net error messages that are a little composery/cryptic, but at least say there's a problem with unmet requirements, instead of "Fatal error."
Disadvantages: Error message that results is better than today but can't be made to link to something like the terminus install troubleshooting. Doesn't cover users of terminus as a .phar.
Add runtime checks to the installer that generate clear error messages and/or reference pantheon.io/docs page.
Advantages: Better error message possible.
Disadvantages: Must develop & tests.
Add runtime checks to terminus that generate clear error messages and/or reference pantheon.io/docs page.
Advantages: Better error message possible. Covers terminus as .phar users.
Disadvantages: Must develop & tests.
I'm happy to tackle 2 or 3 or both but wanted to have a conversation around it as next step.
I think it's easy enough for a user's first experience with terminus to go something like:
I can think of a few alternatives to improve on this UX:
ext-xml
and any other required extensions to terminus'scomposer.json
(granted, this one isn't really the purview of the installer.) This is easy and should net error messages that are a little composery/cryptic, but at least say there's a problem with unmet requirements, instead of "Fatal error."I'm happy to tackle 2 or 3 or both but wanted to have a conversation around it as next step.