From 7ee081f9f04d5adcc8bd760f725953866cc7f7ca Mon Sep 17 00:00:00 2001 From: Ian Fijolek Date: Tue, 1 Dec 2020 17:25:40 -0800 Subject: [PATCH] Add some command line flags --- README.md | 10 +++++++++- main.go | 28 ++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index be13394..eacefe3 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,12 @@ Checks current running containers for newer tags according to semver Usage: - go run . + go run . -h + + -max-pages int + max number of pages to retrieve from registry (default 10) + -registry-url string + base url of the registry you want to check against (default "https://registry.hub.docker.com") + -version + display the version of dockron and exit + diff --git a/main.go b/main.go index 4fb5f9f..9ac0b00 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "context" "encoding/json" + "flag" "fmt" "net/http" "os" @@ -15,12 +16,17 @@ import ( dockerClient "github.com/docker/docker/client" ) -// Default values for fetching tags from registry -var registryBase = "https://registry.hub.docker.com" -var maxPages = 10 +var ( + // registryBaseURL is the base URL of the docker registry + registryBaseURL = "https://registry.hub.docker.com" + // maxPages is the max number of pages to fetch from docker registry results + maxPages = 10 -// Regexp used to extract tag information -var tagRegexp = regexp.MustCompile(`(.*):[vV]{0,1}([0-9.]+)(-(.*)){0,1}`) + // Regexp used to extract tag information + tagRegexp = regexp.MustCompile(`(.*):[vV]{0,1}([0-9.]+)(-(.*)){0,1}`) + // version of tag checker + version = "dev" +) // ImageTag is wraps an image and tag values for a container type ImageTag struct { @@ -126,7 +132,7 @@ func listTags(current ImageTag) ([]ImageTag, error) { } } - url := fmt.Sprintf("%s/v2/repositories/%s/tags", registryBase, current.Image) + url := fmt.Sprintf("%s/v2/repositories/%s/tags", registryBaseURL, current.Image) pageCount := 0 var response tagsResponse var newTag ImageTag @@ -166,6 +172,16 @@ func getNewerTags(current ImageTag) ([]ImageTag, error) { } func main() { + flag.StringVar(®istryBaseURL, "registry-url", registryBaseURL, "base url of the registry you want to check against") + flag.IntVar(&maxPages, "max-pages", maxPages, "max number of pages to retrieve from registry") + var showVersion = flag.Bool("version", false, "display the version and exit") + flag.Parse() + + // Print version if asked + if *showVersion { + fmt.Println("version:", version) + os.Exit(0) + } dockerClient, err := dockerClient.NewClientWithOpts(dockerClient.FromEnv) if err != nil { fmt.Println("Could not initialize docker client")