DockerDistribution

Implementation of OCI Distribution Specification on Ruby. Implementation copied from Golang version which used in Docker Cli and Kubectl Cli.

OCI Distribution Specification

Golang implementation

Installation

gem install docker_distribution

Usage

Reference

  • Add description from implementation comments DockerDistribution::Reference.parse(image_name) DockerDistribution::Reference.parse_named(str) DockerDistribution::Reference.with_name(name) DockerDistribution::Reference.with_tag(named, tag) DockerDistribution::Reference.with_digest(named, digest) DockerDistribution::Reference.split_domain(name) DockerDistribution::Reference.split_hostname(named)

Normalize

  • Add description from implementation comments DockerDistribution::Normalize.parse_normalized_named(str) DockerDistribution::Normalize.parse_docker_ref(ref) DockerDistribution::Normalize.split_docker_domain(name) DockerDistribution::Normalize.familiarize_name(repo) DockerDistribution::Normalize.tag_name_only(ref) DockerDistribution::Normalize.parse_any_reference(ref) DockerDistribution::Normalize.parse_any_reference_with_set(ref, digest_set)

Regexp

  • Add description from implementation comments DockerDistribution::Regexp.alpha_numeric DockerDistribution::Regexp.separator DockerDistribution::Regexp.name_component DockerDistribution::Regexp.domain_name_component DockerDistribution::Regexp.ipv6address DockerDistribution::Regexp.domain_name DockerDistribution::Regexp.host DockerDistribution::Regexp.domain DockerDistribution::Regexp.domain_regexp DockerDistribution::Regexp.tag DockerDistribution::Regexp.tag_regexp DockerDistribution::Regexp.anchored_tag DockerDistribution::Regexp.anchored_tag_regexp DockerDistribution::Regexp.digest_pat DockerDistribution::Regexp.digest_regexp DockerDistribution::Regexp.anchored_digest DockerDistribution::Regexp.anchored_digest_regexp DockerDistribution::Regexp.name_pat DockerDistribution::Regexp.name_regexp DockerDistribution::Regexp.anchored_name DockerDistribution::Regexp.anchored_name_regexp DockerDistribution::Regexp.reference_pat DockerDistribution::Regexp.reference_regexp DockerDistribution::Regexp.identifier DockerDistribution::Regexp.identifier_regexp DockerDistribution::Regexp.short_identifier DockerDistribution::Regexp.short_identifier_regexp DockerDistribution::Regexp.anchored_identifier DockerDistribution::Regexp.anchored_identifier_regexp DockerDistribution::Regexp.anchored_short_identifier DockerDistribution::Regexp.anchored_short_identifier_regexp

Digest

  • Add description from implementation comments DockerDistribution::Digest.parse(digest_string)

Examples

...

More examples in tests

Development

docker-compose build gem
docker-compose run --rm gem bash
bundle install
...
make test
make lint

Release

  1. Read this
  2. Make sure you logged in into Rubygems
  3. Update version accoring semver
  4. gem build docker_distribution.gemspec
  5. gem push docker_distribution-[version].gem

Todo

  • Finish readme description / examples / installation guide / development guide / examples / ruby version support
  • Add correct workflow in github to run tests and linters in docker env