Also minor fixes and improvements:
* Fix error code handling when connecting a socket
* Fix some of the naming convention violations
* Add --print-http-header option to login command
#rb none
[CL 27702511 by yuriy odonnell in ue5-main branch]
* Add --login flag to sync command
* Add in-process token cache
* Add auth token when quering server features
* Use direct download path when supported by server
#jira UE-192913
#rb none
[CL 27535921 by yuriy odonnell in ue5-main branch]
* Make TLS a mandatory required library
* Redirect human-readable log messages of login and query commands to stderr, while only directing machine-readable messages to stdout
#rb none
[CL 27471298 by yuriy odonnell in ue5-main branch]
* Allow --include and --exclude options
* Compute approximate patch size from manifest A to B
#rb none
#preflight skip
[CL 25437799 by Yuriy ODonnell in ue5-main branch]
* Count scavenged blocks as "base" data for stats/telemetry
* Gracefully handle missing/invalid scavenge root path
* Cancel reading blocks from a particular source if a hash mismatch was found
#rb none
#jira UE-178864
#preflight skip
[CL 25326911 by Yuriy ODonnell in ue5-main branch]
This is useful for people who want to download each data set into a uniquely named directory, instead of always patching the last downloaded version.
Current implementation is highly experimental and should only be used for testing purposes.
#jira UE-178864
#rb none
#preflight skip
[CL 25190443 by Yuriy ODonnell in ue5-main branch]
Add --files flag to info subcommand to list files in manifests
#jira none
#rb yuriy.odonnell
#preflight there are no horde jobs that build unsync
[CL 21487301 by Robert Millar in ue5-main branch]
* Use --cleanup-exclude [comma,separated,words] option to skip deleting specific files/directories after sync (such as saved logs, configs, etc.)
* Use UNSYNC_CLEANUP_EXCLUDE environment variable to provide extra exclusion rules
#rb none
#preflight skip
[CL 21226431 by Yuriy ODonnell in ue5-main branch]