Support optional BOTO specification with --no_auth.

This prevents --no_auth from always clearing BOTO_CONFIG, since there
are times when a BOTO is needed for other things than just auth info
(e.g. proxy settings).

BUG=443523
R=hinoka@chromium.org, szager@chromium.org

Review URL: https://codereview.chromium.org/844373002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@293652 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/download_from_google_storage.py b/download_from_google_storage.py
index 09be339..0f53ea4 100755
--- a/download_from_google_storage.py
+++ b/download_from_google_storage.py
@@ -384,7 +384,18 @@
 
   # Set the boto file to /dev/null if we don't need auth.
   if options.no_auth:
-    options.boto = os.devnull
+    if (set(('http_proxy', 'https_proxy')).intersection(
+        env.lower() for env in os.environ) and
+        'NO_AUTH_BOTO_CONFIG' not in os.environ):
+      print >> sys.stderr, ('NOTICE: You have PROXY values set in your '
+                            'environment, but gsutil in depot_tools does not '
+                            '(yet) obey them.')
+      print >> sys.stderr, ('Also, --no_auth prevents the normal BOTO_CONFIG '
+                            'environment variable from being used.')
+      print >> sys.stderr, ('To use a proxy in this situation, please supply '
+                            'those settings in a .boto file pointed to by '
+                            'the NO_AUTH_BOTO_CONFIG environment var.')
+    options.boto = os.environ.get('NO_AUTH_BOTO_CONFIG', os.devnull)
 
   # Make sure gsutil exists where we expect it to.
   if os.path.exists(GSUTIL_DEFAULT_PATH):