gitlab: allow for deeper paths than owner/repo

This was prompted by the INFO4-19 repo, with
the URL
https://gricad-gitlab.univ-grenoble-alpes.fr/Projets-INFO4/18-19/19/code,
which contains groups and subgroups and failed to parse
properly with the current parseGitlabUrl.
This commit is contained in:
tilpner 2019-03-06 11:24:05 +01:00
parent a9c9dad48a
commit b077b9fada
No known key found for this signature in database
GPG key ID: 6A13327225BE51F6

View file

@ -10,8 +10,8 @@ let
len = length parts;
in {
domain = elemAt parts 2;
owner = elemAt parts (len - 2);
repo = elemAt parts (len - 1);
# Allow for deeper hierarchies than owner/repo (GL has groups and subgroups)
path = lib.drop 3 parts;
};
revision = lockedRevisions.${name};
@ -30,8 +30,9 @@ in
else if (lib.hasPrefix "https://gitlab.com" attr.url || type == "gitlab") && !submodules then
let
gitlab = parseGitlabUrl attr.url;
escapedPath = builtins.concatStringsSep "%2F" gitlab.path;
in fetchzip {
url = "https://${gitlab.domain}/api/v4/projects/${gitlab.owner}%2F${gitlab.repo}/repository/archive.tar.gz?sha=${revision.rev}";
url = "https://${gitlab.domain}/api/v4/projects/${escapedPath}/repository/archive.tar.gz?sha=${revision.rev}";
inherit (revision) sha256;
}
else