Using viv as composer
make install-shim installs a composer binary next to viv (plain
make install leaves your real Composer untouched). Put it on PATH
ahead of the real Composer, or symlink it as composer in CI: everyday
install, dump-autoload, normalize and create-project run through
viv; every other command falls through to your real Composer install.
This is also the cheapest way to check whether a project migrates cleanly:
alias composer to the shim and run your existing scripts unedited.
A command or flag the shim doesn't understand falls back to the real
Composer with a note on stderr naming what wasn't understood, so a migration
that quietly stopped using viv is visible instead of just slower. Set
VIV_SHIM_STRICT=1 to make that fallback a hard error instead, for a CI job
that wants a red build rather than a silent return to Composer.
You can also point a script straight at viv. The CI idiom
--prefer-dist --no-interaction --no-progress already describes what viv
does, so viv install and viv dump-autoload accept those flags and
ignore them instead of failing.