summaryrefslogtreecommitdiff
path: root/include/blobutil.sh
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-09-29 23:40:57 +0100
committerLeah Rowe <leah@libreboot.org>2023-09-29 23:40:57 +0100
commit9f5a5450afda39973d9da4fa3bed97c365a5acd2 (patch)
tree9e0e38d80a657cd246f1545a7f83c5efea5eedaf /include/blobutil.sh
parent416704fb4e284770798a914c93434e3d91e6b900 (diff)
blobs/download: move helpers to include/blobutil
mkdirs() should be in include/blobutil.sh, as should extract_archive(), because that is primarily where they are used. script/update/blobs/download calls these functions aswell, but it sources include/blobutil.sh so it's OK. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'include/blobutil.sh')
-rwxr-xr-xinclude/blobutil.sh18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/blobutil.sh b/include/blobutil.sh
index a14f92c1..873d368d 100755
--- a/include/blobutil.sh
+++ b/include/blobutil.sh
@@ -96,3 +96,21 @@ vendor_checksum()
return 1
fi
}
+
+mkdirs()
+{
+ [ -f "${1}" ] && \
+ printf "mkdirs ${1} ${2}: already downloaded\n" 1>&2 && return 1
+ mkdir -p "${1%/*}" || err "mkdirs ${1} ${2}: !mkdir ${1%/*}"
+ rm -Rf "${appdir}" || err "mkdirs ${1} ${2}: can't remove ${appdir}"
+ mkdir -p "${appdir}/" || err "mkdirs ${1} ${2}: !mkdir ${appdir}"
+ extract_archive "${_dl}" "${appdir}" || \
+ [ "${2}" = "extract_e6400vga" ] || err "mkdirs ${1} ${2}: !extract"
+}
+
+extract_archive()
+{
+ innoextract "${1}" -d "${2}" || python "${pfs_extract}" "${1}" -e || \
+ 7z x "${1}" -o"${2}" || unar "${1}" -o "${2}" || \
+ unzip "${1}" -d "${2}" || return 1
+}