diff --git a/Makefile b/Makefile index c3247cc..58a0c54 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all deps osxkeychain secretservice test validate wincred TRAVIS_OS_NAME ?= linux -VERSION = 0.5.1 +VERSION := $(shell grep 'const Version' credentials/version.go | awk -F'"' '{ print $$2 }') all: test @@ -16,13 +16,14 @@ osxkeychain: mkdir bin go build -ldflags -s -o bin/docker-credential-osxkeychain osxkeychain/cmd/main_darwin.go -codesign: osxkeychain +osxcodesign: osxkeychain $(eval SIGNINGHASH = $(shell security find-identity -v -p codesigning | grep "Developer ID Application: Docker Inc" | cut -d ' ' -f 4)) xcrun -log codesign -s $(SIGNINGHASH) --force --verbose bin/docker-credential-osxkeychain xcrun codesign --verify --deep --strict --verbose=2 --display bin/docker-credential-osxkeychain -osxrelease: clean test codesign +osxrelease: clean vet_osx lint fmt test osxcodesign mkdir -p release + @echo "\nPackaging version ${VERSION}\n" cd bin && tar cvfz ../release/docker-credential-osxkeychain-v$(VERSION)-amd64.tar.gz docker-credential-osxkeychain secretservice: @@ -49,8 +50,12 @@ vet_osx: vet_linux: go vet ./secretservice -validate: vet +lint: for p in `go list ./... | grep -v /vendor/`; do \ golint $$p ; \ done + +fmt: gofmt -s -l `ls **/*.go | grep -v vendor` + +validate: vet lint fmt diff --git a/credentials/credentials.go b/credentials/credentials.go index 544ab3c..da8b594 100644 --- a/credentials/credentials.go +++ b/credentials/credentials.go @@ -33,11 +33,12 @@ func (c *Credentials) isValid() (bool, error) { return true, nil } -// Docker credentials should be labeled as such in credentials stores that allow labelling. +// CredsLabel holds the way Docker credentials should be labeled as such in credentials stores that allow labelling. // That label allows to filter out non-Docker credentials too at lookup/search in macOS keychain, // Windows credentials manager and Linux libsecret. Default value is "Docker Credentials" var CredsLabel = "Docker Credentials" +// SetCredsLabel is a simple setter for CredsLabel func SetCredsLabel(label string) { CredsLabel = label } @@ -50,7 +51,7 @@ func SetCredsLabel(label string) { func Serve(helper Helper) { var err error if len(os.Args) != 2 { - err = fmt.Errorf("Usage: %s ", os.Args[0]) + err = fmt.Errorf("Usage: %s ", os.Args[0]) } if err == nil { @@ -74,6 +75,8 @@ func HandleCommand(helper Helper, key string, in io.Reader, out io.Writer) error return Erase(helper, in) case "list": return List(helper, out) + case "version": + return PrintVersion(out) } return fmt.Errorf("Unknown credential action `%s`", key) } @@ -131,8 +134,8 @@ func Get(helper Helper, reader io.Reader, writer io.Writer) error { resp := Credentials{ ServerURL: serverURL, - Username: username, - Secret: secret, + Username: username, + Secret: secret, } buffer.Reset() @@ -175,3 +178,9 @@ func List(helper Helper, writer io.Writer) error { } return json.NewEncoder(writer).Encode(accts) } + +//PrintVersion outputs the current version. +func PrintVersion(writer io.Writer) error { + fmt.Fprintln(writer, Version) + return nil +} diff --git a/credentials/version.go b/credentials/version.go new file mode 100644 index 0000000..5b5c160 --- /dev/null +++ b/credentials/version.go @@ -0,0 +1,4 @@ +package credentials + +// Version holds a string describing the current version +const Version = "0.5.2-dev"