query
On this page

fetchFromSourcehut

pkgs.fetchFromSourcehut

Functor
Docs pulled from | This Revision | about 1 hour ago

No reference documentation found yet.

Contribute now!


Contribute
Enhance the ecosystem with your expertise! Contribute to fill the gaps in documentation. Your input can make a difference.

Noogle detected

This is a Functor

Learn about functors

Implementation

The following is the current implementation of this function.

{
    owner,
    repo,
    rev,
    domain ? "sr.ht",
    vc ? "git",
    name ? "source",
    fetchSubmodules ? false,
    ... # For hash agility
  }@args:

  assert (
    assertOneOf "vc" vc [
      "hg"
      "git"
    ]
  );

  let
    urlFor = resource: "https://${resource}.${domain}/${owner}/${repo}";
    baseUrl = urlFor vc;
    baseArgs =
      {
        inherit name;
      }
      // removeAttrs args [
        "owner"
        "repo"
        "rev"
        "domain"
        "vc"
        "name"
        "fetchSubmodules"
      ];
    vcArgs = baseArgs // {
      inherit rev;
      url = baseUrl;
    };
    fetcher = if fetchSubmodules then vc else "zip";
    cases = {
      git = {
        fetch = fetchgit;
        arguments = vcArgs // {
          fetchSubmodules = true;
        };
      };
      hg = {
        fetch = fetchhg;
        arguments = vcArgs // {
          fetchSubrepos = true;
        };
      };
      zip = {
        fetch = fetchzip;
        arguments = baseArgs // {
          url = "${baseUrl}/archive/${rev}.tar.gz";
          postFetch = optionalString (vc == "hg") ''
            rm -f "$out/.hg_archival.txt"
          ''; # impure file; see #12002
          passthru = {
            gitRepoUrl = urlFor "git";
          };
        };
      };
    };
  in
  cases.${fetcher}.fetch cases.${fetcher}.arguments
  // {
    inherit rev;
    meta.homepage = "${baseUrl}";
  }