summaryrefslogtreecommitdiffstats
path: root/fetch.py
diff options
context:
space:
mode:
Diffstat (limited to 'fetch.py')
-rw-r--r--fetch.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/fetch.py b/fetch.py
new file mode 100644
index 00000000..5b9997a8
--- /dev/null
+++ b/fetch.py
@@ -0,0 +1,38 @@
1# Copyright (C) 2021 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15"""This module contains functions used to fetch files from various sources."""
16
17import subprocess
18import sys
19from urllib.parse import urlparse
20
21def fetch_file(url):
22 """Fetch a file from the specified source using the appropriate protocol.
23
24 Returns:
25 The contents of the file as bytes.
26 """
27 scheme = urlparse(url).scheme
28 if scheme == 'gs':
29 cmd = ['gsutil', 'cat', url]
30 try:
31 result = subprocess.run(
32 cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
33 return result.stdout
34 except subprocess.CalledProcessError as e:
35 print('fatal: error running "gsutil": %s' % e.output,
36 file=sys.stderr)
37 sys.exit(1)
38 raise ValueError('unsupported url %s' % url)