mirror of
https://github.com/NixOS/nix.git
synced 2025-11-28 21:21:00 +01:00
Merge pull request #14581 from NixOS/clone-all
nix flake clone: Support all input types
This commit is contained in:
commit
f6aa8c0486
6 changed files with 35 additions and 15 deletions
|
|
@ -457,12 +457,13 @@ struct GitHubInputScheme : GitArchiveInputScheme
|
|||
return DownloadUrl{parseURL(url), headers};
|
||||
}
|
||||
|
||||
void clone(const Settings & settings, const Input & input, const Path & destDir) const override
|
||||
void clone(const Settings & settings, ref<Store> store, const Input & input, const std::filesystem::path & destDir)
|
||||
const override
|
||||
{
|
||||
auto host = getHost(input);
|
||||
Input::fromURL(settings, fmt("git+https://%s/%s/%s.git", host, getOwner(input), getRepo(input)))
|
||||
.applyOverrides(input.getRef(), input.getRev())
|
||||
.clone(settings, destDir);
|
||||
.clone(settings, store, destDir);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -544,7 +545,8 @@ struct GitLabInputScheme : GitArchiveInputScheme
|
|||
return DownloadUrl{parseURL(url), headers};
|
||||
}
|
||||
|
||||
void clone(const Settings & settings, const Input & input, const Path & destDir) const override
|
||||
void clone(const Settings & settings, ref<Store> store, const Input & input, const std::filesystem::path & destDir)
|
||||
const override
|
||||
{
|
||||
auto host = maybeGetStrAttr(input.attrs, "host").value_or("gitlab.com");
|
||||
// FIXME: get username somewhere
|
||||
|
|
@ -552,7 +554,7 @@ struct GitLabInputScheme : GitArchiveInputScheme
|
|||
settings,
|
||||
fmt("git+https://%s/%s/%s.git", host, getStrAttr(input.attrs, "owner"), getStrAttr(input.attrs, "repo")))
|
||||
.applyOverrides(input.getRef(), input.getRev())
|
||||
.clone(settings, destDir);
|
||||
.clone(settings, store, destDir);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -639,14 +641,15 @@ struct SourceHutInputScheme : GitArchiveInputScheme
|
|||
return DownloadUrl{parseURL(url), headers};
|
||||
}
|
||||
|
||||
void clone(const Settings & settings, const Input & input, const Path & destDir) const override
|
||||
void clone(const Settings & settings, ref<Store> store, const Input & input, const std::filesystem::path & destDir)
|
||||
const override
|
||||
{
|
||||
auto host = maybeGetStrAttr(input.attrs, "host").value_or("git.sr.ht");
|
||||
Input::fromURL(
|
||||
settings,
|
||||
fmt("git+https://%s/%s/%s", host, getStrAttr(input.attrs, "owner"), getStrAttr(input.attrs, "repo")))
|
||||
.applyOverrides(input.getRef(), input.getRev())
|
||||
.clone(settings, destDir);
|
||||
.clone(settings, store, destDir);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue