Переглянути джерело

support/download/dl-wrapper: add concept of download post-processing

In order to support package managers such as Cargo (Rust) or Go, we
want to run some custom logic after the main download, but before
packing the tarball and checking the hash.

To implement this, this commit introduces a concept of download
post-processing: if -p <something> is passed to the dl-wrapper, then
support/download/<something>-post-process will be called.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[yann.morin.1998@free.fr:
  - double-quote variable expansion when calling post-process script
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Thomas Petazzoni 3 роки тому
батько
коміт
1db15e2853
1 змінених файлів з 8 додано та 1 видалено
  1. 8 1
      support/download/dl-wrapper

+ 8 - 1
support/download/dl-wrapper

@@ -25,7 +25,7 @@ main() {
     local -a uris
     local -a uris
 
 
     # Parse our options; anything after '--' is for the backend
     # Parse our options; anything after '--' is for the backend
-    while getopts ":c:d:D:o:n:N:H:lrf:u:q" OPT; do
+    while getopts ":c:d:D:o:n:N:H:lrf:u:qp:" OPT; do
         case "${OPT}" in
         case "${OPT}" in
         c)  cset="${OPTARG}";;
         c)  cset="${OPTARG}";;
         d)  dl_dir="${OPTARG}";;
         d)  dl_dir="${OPTARG}";;
@@ -38,6 +38,7 @@ main() {
         r)  recurse="-r";;
         r)  recurse="-r";;
         f)  filename="${OPTARG}";;
         f)  filename="${OPTARG}";;
         u)  uris+=( "${OPTARG}" );;
         u)  uris+=( "${OPTARG}" );;
+        p)  post_process="${OPTARG}";;
         q)  quiet="-q";;
         q)  quiet="-q";;
         :)  error "option '%s' expects a mandatory argument\n" "${OPTARG}";;
         :)  error "option '%s' expects a mandatory argument\n" "${OPTARG}";;
         \?) error "unknown option '%s'\n" "${OPTARG}";;
         \?) error "unknown option '%s'\n" "${OPTARG}";;
@@ -136,6 +137,12 @@ main() {
             continue
             continue
         fi
         fi
 
 
+        if [ -n "${post_process}" ] ; then
+            "${OLDPWD}/support/download/${post_process}-post-process" \
+                -o "${tmpf}" \
+                -n "${raw_base_name}"
+        fi
+
         # cd back to free the temp-dir, so we can remove it later
         # cd back to free the temp-dir, so we can remove it later
         cd "${OLDPWD}"
         cd "${OLDPWD}"