One of the challenges in the current case is that it is not obvious how --with-data, --no-data, --data-only etc. are connected. If that were clearer, then the way these options should combine or conflict would hopefully follow somewhat naturally.
They all should be mutually exclusive, and usage of any two of them should raise an error, hence order not mattering.