Current registry reference use a subset of dns and IPv4 addresses to
represent a registry domain.
Since registries are mostly compatible with rfc3986, that defines the
URI generic syntax, this adds support for IPv6 enclosed in squared
brackets based on the mentioned rfc.
The regexp is only expanded to match on IPv6 addreses enclosed between
square brackets, considering only regular IPv6 addresses represented
as compressed or uncompressed, excluding special IPv6 address
representations.
Signed-off-by: Antonio Ojea <antonio.ojea.garcia@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Previous implementation was doing a lot of string -> regexp -> string
conversions
Signed-off-by: Paul Cacheux <paul.cacheux@datadoghq.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Add context to comment to explain the repo name regex in addition to describing it.
Signed-off-by: David Warshaw <david.warshaw@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Go 1.13 and up enforce import paths to be versioned if a project
contains a go.mod and has released v2 or up.
The current v2.x branches (and releases) do not yet have a go.mod,
and therefore are still allowed to be imported with a non-versioned
import path (go modules add a `+incompatible` annotation in that case).
However, now that this project has a `go.mod` file, incompatible
import paths will not be accepted by go modules, and attempting
to use code from this repository will fail.
This patch uses `v3` for the import-paths (not `v2`), because changing
import paths itself is a breaking change, which means that the
next release should increment the "major" version to comply with
SemVer (as go modules dictate).
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This copies the unit-tests from the distribution repository from the time when
the package was forked. The tests are copied from this commit:
0d3efadf01
Tests for ParseAnyReferenceWithSet() have been removed, as that function has not
been included in the containerd fork.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This package was forked from the https://github.com/distribution/distribution
repository in commit 901bcb2231, but that commit
did a plain copy of the code (minus tests), and rewrote the code to be in a
single file. The same commit also removed some deprecated code for handling
"shortid" references (ParseAnyReferenceWithSet() function), in order to avoid
the "digestset" dependency from the distribution repo.
At the time, containerd used the distribution/distribution package from this
commit: 0d3efadf01
Since the code was forked, both containerd and distribution have received
improvements and fixes, so unfortunately, the code started to diverge.
I'm planning to reconcile the packages (potentially by using a shared module),
and this is the first commit to assist with that.
This patch restructures the reference/docker package to split the code into the
same files as are used in the upstream distribution/distribution repository.
This makes it easier to compare the implementations in both repositories (to
allow synchronizing changes).
No changes are applied yet, other than splitting the code (follow-up commits
will take care of syncing changes across).
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>