1{
2 fetchzip,
3 repoRevToNameMaybe,
4 lib,
5}:
6
7lib.makeOverridable (
8 {
9 url,
10 rev ? null,
11 tag ? null,
12 name ? repoRevToNameMaybe url (lib.revOrTag rev tag) "gitiles",
13 ...
14 }@args:
15
16 assert (
17 lib.assertMsg (lib.xor (tag == null) (
18 rev == null
19 )) "fetchFromGitiles requires one of either `rev` or `tag` to be provided (not both)."
20 );
21
22 let
23 realrev = (if tag != null then "refs/tags/" + tag else rev);
24 in
25
26 fetchzip (
27 {
28 inherit name;
29 url = "${url}/+archive/${realrev}.tar.gz";
30 stripRoot = false;
31 meta.homepage = url;
32 }
33 // removeAttrs args [
34 "url"
35 "tag"
36 "rev"
37 ]
38 )
39 // {
40 inherit rev tag;
41 }
42)