tagcmp/godoc.md

5.7 KiB

tagcmp

import "coopcloud.tech/tagcmp"

Package tagcmp provides image tag comparison operations.

Index

Variables

CommitHashPattern matches commit-like hash tags

var CommitHashPattern = "^[a-f0-9]{7,40}$"

DotPattern matches tags which contain multiple versions

var DotPattern = "([0-9]+)\\.([0-9]+)"

EmptyPattern matches when tags are missing

var EmptyPattern = "^$"

ParametrizedPattern matches when tags are parametrized

var ParametrizedPattern = "\\${.+}"

StringPattern matches when tags are only made up of alphabetic characters

var StringPattern = "^[a-zA-Z]+$"

func IsParsable

func IsParsable(tag string) bool

IsParsable determines if a tag is supported by this library

type ByTagAsc

ByTagAsc sorts tags in ascending order where the last element is the latest tag.

type ByTagAsc []Tag

func ByTagAsc Len

func (t ByTagAsc) Len() int

func ByTagAsc Less

func (t ByTagAsc) Less(i, j int) bool

func ByTagAsc Swap

func (t ByTagAsc) Swap(i, j int)

type ByTagDesc

ByTagDesc sorts tags in descending order where the first element is the latest tag.

type ByTagDesc []Tag

func ByTagDesc Len

func (t ByTagDesc) Len() int

func ByTagDesc Less

func (t ByTagDesc) Less(i, j int) bool

func ByTagDesc Swap

func (t ByTagDesc) Swap(i, j int)

type Tag

type Tag struct {
    Major        string `json:",omitempty"` // major semver part
    Minor        string `json:",omitempty"` // minor semver part
    MissingMinor bool   // whether or not the minor semver part was left out
    Patch        string `json:",omitempty"` // patch semver part
    MissingPatch bool   // whether or not he patch semver part was left out
    Suffix       string // tag suffix (e.g. "-alpine") [would be release candidate in semver]
    UsesV        bool   // whether or not the tag uses the "v" prefix
    Metadata     string // metadata: what's after + and after the first "-"
}

func Parse

func Parse(tag string) (Tag, error)

Parse converts an image tag into a structured data format. It aims to to support the general case of tags which are "semver-like" and/or stable and parseable by heuristics. Image tags follow no formal specification and therefore this is a best-effort implementation. Examples of tags this function can parse are: "5", "5.2", "v4", "v5.3.6", "4-alpine", "v3.2.1-debian".

func Tag Equals

func (t Tag) Equals(tag Tag) bool

Equals tests Tag equality

func Tag IsCompatible

func (t Tag) IsCompatible(tag Tag) bool

IsCompatible determines if two tags can be compared together

func Tag IsGreaterThan

func (t Tag) IsGreaterThan(tag Tag) bool

IsGreaterThan tests if a tag is greater than another. There are some tag-isms to take into account here, shorter is bigger i\.e\. 2\.1 \> 2\.1\.1 == true\, 2 \> 2\.1 == true.

func Tag IsLessThan

func (t Tag) IsLessThan(tag Tag) bool

IsLessThan tests if a tag is less than another. There are some tag-isms to take into account here, shorter is bigger i\.e\. 2\.1 \< 2\.1\.1 == false\, 2 \< 2\.1 == false.

func Tag String

func (t Tag) String() string

String formats a Tag correctly in string representation

func Tag UpgradeDelta

func (curTag Tag) UpgradeDelta(newTag Tag) (TagDelta, error)

UpgradeDelta returns a TagDelta object which is the difference between an old and new tag It can contain negative numbers if comparing with an older tag.

type TagDelta

type TagDelta struct {
    Major int // major semver difference
    Minor int // minor semver difference
    Patch int // patch semver difference
}

func ParseDelta

func ParseDelta(delta string) (TagDelta, error)

ParseDelta converts a tag difference in the format of X, X.Y or X.Y.Z where X, Y, Z are positive or negative integers or 0

func TagDelta String

func (t TagDelta) String() string

func TagDelta UpgradeType

func (d TagDelta) UpgradeType() int

UpgradeType takes exit from UpgradeElemene and returns a numeric representation of upgrade or downgrade 1/-1: patch 2/-2: minor 4/-4: major 0: no change

Generated by gomarkdoc