Add some command line flags
This commit is contained in:
parent
e08a3cf14a
commit
7ee081f9f0
10
README.md
10
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
|
||||
|
||||
|
28
main.go
28
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")
|
||||
|
Loading…
Reference in New Issue
Block a user