Add option to append version number in fpkg()
[hvlinux.git] / functions / fpkg
index 673299b..7be2960 100644 (file)
@@ -425,7 +425,14 @@ test_archive_integrity()
 #            pm (Perl module via CPAN)
 #            fd (freedesktop.org)
 #   -o     Option specific to mode
-#   -s     Subdirectory on server
+#   -s DIR Subdirectory on server
+#   -v NUM Subdirectory on server is equal to package version. If -s option is specified, then
+#          append version number to value of -s argument:
+#            NUM=  Full version number
+#            NUM=1 First number of package version
+#            NUM=2 First two numbers of package version
+#          Ex: fpkg -s "v" -v 2 mypkg-1.2.3 http://mypkg.com would fetch from url:
+#                  http://mypkg.com/v1.2/mypkg-1.2.3.tar.bz2
 #   -w     First erase destination file if it exists (except in test mode)
 fpkg()
 {
@@ -437,9 +444,11 @@ fpkg()
     local MODE_OPT=""
     local SRC_DIR=""
     local FD_SUBDIR_FINAL=""
+    local VARG=""
+    unset VOPTION
     unset ERASE_FIRST
 
-    while getopts "d:e:f:m:o:s:w" flag ;do
+    while getopts "d:e:f:m:o:s:v:w" flag ;do
         case ${flag} in
            d)
                 # Fetch directory (where to put file)
@@ -462,6 +471,10 @@ fpkg()
            s)
                SRC_DIR=${OPTARG}
                 ;;
+            v)
+                VOPTION="y"
+                VARG=${OPTARG}
+                ;;
             w)
                 ERASE_FIRST="y"
                ;;
@@ -489,6 +502,29 @@ fpkg()
         local URL=${2}
     fi
 
+    if [ -n "${VOPTION}" ]; then
+        # Append version number to SRC_DIR (if specified)
+        case ${VARG} in
+            0)
+                # Full version number
+                SRC_DIR+="$(get_pkg_ver ${PACK})"
+                ;;
+           1)
+                SRC_DIR+="$(get_pkg_ver1 ${PACK})"
+                ;;
+            2)
+                SRC_DIR+="$(get_pkg_ver2 ${PACK})"
+                ;;
+            3)
+                SRC_DIR+="$(get_pkg_ver3 ${PACK})"
+                ;;
+            *)
+                echo "${FUNCNAME}(), invalid -v argument: ${VARG}"
+               return 1
+                ;;
+        esac
+    fi
+
     if [ -n "${MODE}" ]; then
         case ${MODE} in
            gnu)