Support 'dir' parameters in https and ssh flake URIs
This commit is contained in:
parent
eba85e2367
commit
00db8d4549
1 changed files with 6 additions and 1 deletions
|
@ -30,7 +30,9 @@ const static std::string schemeRegex = "(?:http|https|ssh|git|file)";
|
||||||
const static std::string authorityRegex = "[a-zA-Z0-9._~-]*";
|
const static std::string authorityRegex = "[a-zA-Z0-9._~-]*";
|
||||||
const static std::string segmentRegex = "[a-zA-Z0-9._~-]+";
|
const static std::string segmentRegex = "[a-zA-Z0-9._~-]+";
|
||||||
const static std::string pathRegex = "/?" + segmentRegex + "(?:/" + segmentRegex + ")*";
|
const static std::string pathRegex = "/?" + segmentRegex + "(?:/" + segmentRegex + ")*";
|
||||||
const static std::string paramRegex = "[a-z]+=[a-zA-Z0-9._-]*";
|
// FIXME: support escaping in query string.
|
||||||
|
// Note: '/' is not a valid query parameter, but so what...
|
||||||
|
const static std::string paramRegex = "[a-z]+=[/a-zA-Z0-9._-]*";
|
||||||
|
|
||||||
FlakeRef::FlakeRef(const std::string & uri, bool allowRelative)
|
FlakeRef::FlakeRef(const std::string & uri, bool allowRelative)
|
||||||
{
|
{
|
||||||
|
@ -97,6 +99,9 @@ FlakeRef::FlakeRef(const std::string & uri, bool allowRelative)
|
||||||
if (!std::regex_match(value, refRegex2))
|
if (!std::regex_match(value, refRegex2))
|
||||||
throw Error("invalid Git ref '%s'", value);
|
throw Error("invalid Git ref '%s'", value);
|
||||||
ref = value;
|
ref = value;
|
||||||
|
} else if (name == "dir") {
|
||||||
|
// FIXME: validate value; should not contain relative paths
|
||||||
|
subdir = value;
|
||||||
} else
|
} else
|
||||||
// FIXME: should probably pass through unknown parameters
|
// FIXME: should probably pass through unknown parameters
|
||||||
throw Error("invalid Git flake reference parameter '%s', in '%s'", name, uri);
|
throw Error("invalid Git flake reference parameter '%s', in '%s'", name, uri);
|
||||||
|
|
Loading…
Reference in a new issue