[Moto G7 Play Questions & Answers] Spaceminer:
The easiest and most foolproof way is to read the flashfile.xml inside your firmware zip. This is taken from the most recent Pie update from Sprint for the Moto G7 Play.

<phone_model model="channel_sprint"/>

<software_version version="channel_sprint-user 9 PCY29.105-134 3d133 release-keysM632_26.100.01.120.01R"/>

<subsidy_lock_config MD5="d41d8cd98f00b204e9800998ecf8427e" name="slcf_rev_d_default_v1.0.nvm"/>

<regulatory_config SHA1="da39a3ee5e6b4b0d3255bfef95601890afd80709" name="regulatory_info_default.png"/>

<sparsing enabled="true" max-sparse-size="268435456"/>

<interfaces>

<interface name="AP"/>

</interfaces>

</header>

<steps interface="AP">

<step operation="getvar" var="max-sparse-size"/>

<step operation="oem" var="fb_mode_set"/>

<step MD5="7f966547ae0da254b599f22380b4e426" filename="gpt.bin" operation="flash" partition="partition"/>

<step MD5="d7a82bbcd5d236e4472b75da4840178c" filename="bootloader.img" operation="flash" partition="bootloader"/>

<step MD5="5589ffd28dd3f04a7d5a12bf91a4b5dc" filename="NON-HLOS.bin" operation="flash" partition="modem"/>

<step MD5="4051200188fb631ad351632a7e8e4661" filename="fsg.mbn" operation="flash" partition="fsg"/>

<step operation="erase" partition="modemst1"/>

<step operation="erase" partition="modemst2"/>

<step MD5="330051cf4bad4a337b30cbbf90439f90" filename="adspso.bin" operation="flash" partition="dsp"/>

<step MD5="86b16aaf451af6fbfd03a5aee8d17486" filename="logo.bin" operation="flash" partition="logo"/>

<step MD5="b175571ccc933681ced5ebdca4472c39" filename="boot.img" operation="flash" partition="boot"/>

<step MD5="0c80316dcd235b0f518e46807ebd9e02" filename="dtbo.img" operation="flash" partition="dtbo"/>

<step MD5="27533ed08e8bd1f002882eac880d2ec8" filename="system.img_sparsechunk.0" operation="flash" partition="system"/>

<step MD5="07bf4514b20965a39e55b023715f37b2" filename="system.img_sparsechunk.1" operation="flash" partition="system"/>

<step MD5="e856fc09cd4dac7ead54ec97ebc0e143" filename="system.img_sparsechunk.2" operation="flash" partition="system"/>

<step MD5="217857df38225f0ca4cf5f834bd5e3cb" filename="system.img_sparsechunk.3" operation="flash" partition="system"/>

<step MD5="c356bd9845845a05b6032af8a27e491e" filename="system.img_sparsechunk.4" operation="flash" partition="system"/>

<step MD5="a168b1389a044e5ed56d2a4a6dcfa96f" filename="system.img_sparsechunk.5" operation="flash" partition="system"/>

<step MD5="fbc6669a31cc8f8b098f5d260915fae9" filename="system.img_sparsechunk.6" operation="flash" partition="system"/>

<step MD5="2c757650843740dd6ad4ae333a2ee0f7" filename="system.img_sparsechunk.7" operation="flash" partition="system"/>

<step MD5="db47ec98a25ae42c3e8d167f24d20490" filename="system_b.img_sparsechunk.0" operation="flash" partition="system_b"/>

<step MD5="5e3b9b937b421f3ae42124b62b5bf9e9" filename="system_b.img_sparsechunk.1" operation="flash" partition="system_b"/>

<step MD5="b9d404c81209e6ac87ec01ae0496ea57" filename="system_b.img_sparsechunk.2" operation="flash" partition="system_b"/>

<step MD5="927da415259568d9f55e0e2dc1513c81" filename="vendor.img" operation="flash" partition="vendor"/>

<step MD5="24e36787f2fabbf9750af4a4d19d9d89" filename="oem.img" operation="flash" partition="oem"/>

<step MD5="c900cf1eb5d3a51a8cdc98f18bd64430" filename="oem_other.img" operation="flash" partition="oem_b"/>

<step operation="erase" partition="userdata"/>

<step operation="erase" partition="DDR"/>

<step operation="oem" var="fb_mode_clear"/>

</steps>

</flashing>

How do you make sense of it? The first thing is to understand the order fastboot accepts commands. Fastboot likes to do things in this order.

(Operation) (Partition) (File)​

or in other words...

(Flash or erase?) (Where am I going?) (Who am I sending?)​

fastboot can also run variables. There's no need to go in depth here, but it needs to be touched on. The first 2 commands in the list are oddballs because of it.

<step operation="getvar" var="max-sparse-size"/>

<step operation="oem" var="fb_mode_set"/>

All you need to know for this, is that you should do it, and it translates to this in fastboot...

fastboot getvar max-sparse-size

fastboot oem fb_mode_set

Now for the rest. The next one looks like an oddball, but it actually isn't. It means what it says.

<step MD5="7f966547ae0da254b599f22380b4e426" filename="gpt.bin" operation="flash" partition="partition"/>

partition="partition"- That's right, it really says that. It follows same the order I laid out earlier though. This translates to,

fastboot flash partition gpt.bin

(flash or erase? flash.) (Where am I going? partition.) (Who am I sending? gpt.bin)​

Let's look at couple more just for the sake of clarity.

<step MD5="d7a82bbcd5d236e4472b75da4840178c" filename="bootloader.img" operation="flash" partition="bootloader"/>

Becomes...

fastboot flash bootloader bootloader.img

<step MD5="5589ffd28dd3f04a7d5a12bf91a4b5dc" filename="NON-HLOS.bin" operation="flash" partition="modem"/>

fastboot flash modem NON-HLOS.bin

fastboot flash fsg fsg.mbn

fastboot erase modemst1 etc...

Some rules & notes:

1. Always follow all the commands in the flashfile.xml, and follow them in order!

2. Sometimes the bootloader or gpt.bin won't flash. This just means they're older than your current one. If this happens, just skip it.

3. I thought this list would be longer, but apparently it isn't. If anyone has questions just ask.