summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/releasetools/common.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 3c5ba10d67..715802faae 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -723,7 +723,16 @@ def ExtractFromInputFile(input_file, fn):
with open(tmp_file, 'wb') as f:
f.write(input_file.read(fn))
return tmp_file
+ elif zipfile.is_zipfile(input_file):
+ with zipfile.ZipFile(input_file, "r", allowZip64=True) as zfp:
+ tmp_file = MakeTempFile(os.path.basename(fn))
+ with open(tmp_file, "wb") as fp:
+ fp.write(zfp.read(fn))
+ return tmp_file
else:
+ if not os.path.isdir(input_file):
+ raise ValueError(
+ "Invalid input_file, accepted inputs are ZipFile object, path to .zip file on disk, or path to extracted directory. Actual: " + input_file)
file = os.path.join(input_file, *fn.split("/"))
if not os.path.exists(file):
raise KeyError(fn)