cargo.eclass: Use a regex to fix crate name/version extraction
authorCraig Andrews <candrews@gentoo.org>
Thu, 9 Jan 2020 19:20:03 +0000 (14:20 -0500)
committerGeorgy Yakovlev <gyakovlev@gentoo.org>
Fri, 10 Jan 2020 08:33:46 +0000 (00:33 -0800)
Closes: https://bugs.gentoo.org/705044
Signed-off-by: Craig Andrews <candrews@gentoo.org>
Closes: https://github.com/gentoo/gentoo/pull/14287
Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
eclass/cargo.eclass

index b1fb237e1d2509e4714a05abfde08bb5deb0547f..9a583307a6abe114316f0ee34b4669b219617035 100644 (file)
@@ -39,16 +39,13 @@ ECARGO_VENDOR="${ECARGO_HOME}/gentoo"
 # @DESCRIPTION:
 # Generates the URIs to put in SRC_URI to help fetch dependencies.
 cargo_crate_uris() {
+       readonly regex='^(.*)-([0-9]+\.[0-9]+\.[0-9]+.*)$'
        local crate
        for crate in "$@"; do
-               local name version url pretag
-               name="${crate%-*}"
-               version="${crate##*-}"
-               pretag="^[a-zA-Z]+"
-               if [[ $version =~ $pretag ]]; then
-                       version="${name##*-}-${version}"
-                       name="${name%-*}"
-               fi
+               local name version url
+               [[ $crate =~ $regex ]] || die "Could not parse name and version from crate: $crate"
+               name="${BASH_REMATCH[1]}"
+               version="${BASH_REMATCH[2]}"
                url="https://crates.io/api/v1/crates/${name}/${version}/download -> ${crate}.crate"
                echo "${url}"
        done