mirror of
https://github.com/NixOS/nix.git
synced 2025-11-27 20:51:00 +01:00
Add user@address:port support
This patch allows users to specify the connection port
in the store URLS like so:
```
nix store info --store "ssh-ng://localhost:22" --json
```
Previously this failed with: `error: failed to start SSH connection to 'localhost:22'`,
because the code did not distinguish the port from the hostname. This
patch remedies that problem by introducing a ParsedURL::Authority type
for working with parsed authority components of URIs.
Now that the URL parsing code is less ad-hoc we can
add more long-awaited fixes for specifying SSH connection
ports in store URIs.
Builds upon the work from bd1d2d1041.
Co-authored-by: Sergei Zimmerman <sergei@zimmerman.foo>
Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
This commit is contained in:
parent
c98af65da6
commit
49ba06175e
18 changed files with 312 additions and 101 deletions
|
|
@ -44,16 +44,19 @@ static void downloadToSink(
|
|||
|
||||
static std::string getLfsApiToken(const ParsedURL & url)
|
||||
{
|
||||
assert(url.authority.has_value());
|
||||
|
||||
// FIXME: Not entirely correct.
|
||||
auto [status, output] = runProgram(
|
||||
RunOptions{
|
||||
.program = "ssh",
|
||||
.args = {*url.authority, "git-lfs-authenticate", url.path, "download"},
|
||||
.args = {url.authority->to_string(), "git-lfs-authenticate", url.path, "download"},
|
||||
});
|
||||
|
||||
if (output.empty())
|
||||
throw Error(
|
||||
"git-lfs-authenticate: no output (cmd: ssh %s git-lfs-authenticate %s download)",
|
||||
url.authority.value_or(""),
|
||||
url.authority.value_or(ParsedURL::Authority{}).to_string(),
|
||||
url.path);
|
||||
|
||||
auto queryResp = nlohmann::json::parse(output);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue