It would be nice to make
snap download consistent with
snap install for end users.
snap commands make a call to the system’s
snapd where the bulk of the processing takes place, but
snap download is different - the download is handled entirely by the
snap CLI. I believe this is only because access to the user’s file system is required when writing the snap’s binary and assertions.
Unfortunately, processing the download in the CLI means it may behave differently to
snap install due to various bits of configuration typically only known to
- store API URL
- store tenant name
- user’s auth
- device auth
To improve consistency, the above configuration should always be applied for a
download, with the user specifying the following on the command line:
- snap name
- channel or revision
Therefore, snap/snapd probably needs to do one of the following:
- expose (safely) the snapd configuration to the CLI so it can perform the correct download
- proxy the download via snapd
- something else entirely
Note: proxying is somewhat complicated by the need for a progress meter in the CLI and the download process that involves deltas, retries, resumes, etc.
Would a download be backed by a Change?