diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index fe7b278df1..3e612d9b2a 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -5,7 +5,11 @@ everything here and write out the request, providing as much context as you can. --> -### What version of Go (`go version`) and `dep` (`git describe --tags`) are you using? +### What version of `dep` are you using (`dep version`)? + ### What `dep` command did you run? @@ -20,4 +24,3 @@ The output of `dep hash-inputs` may also be helpful to include. ### What did you expect to see? ### What did you see instead? - diff --git a/.travis.yml b/.travis.yml index 079b64265e..20e34a0bf1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ ---- language: go sudo: false notifications: @@ -6,6 +5,7 @@ notifications: jobs: include: - stage: test + go_import_path: github.com/golang/dep install: - go get -u honnef.co/go/tools/cmd/{gosimple,staticcheck} - npm install -g codeclimate-test-reporter @@ -15,20 +15,16 @@ jobs: go: 1.8.x script: - go build -v ./cmd/dep - - PKGS=$(go list ./... | grep -v /vendor/) - - go vet $PKGS - - staticcheck $PKGS - - gosimple $PKGS + - ./hack/lint.bash - ./hack/validate-vendor.bash - - go build ./hack/licenseok - - find . -path ./vendor -prune -o -type f -name "*.go" -printf '%P\n' | xargs ./licenseok - - set -e; for pkg in $PKGS; do go test -race -coverprofile=profile.out -covermode=atomic $pkg; if [[ -f profile.out ]]; then cat profile.out >> coverage.txt; rm profile.out; fi; done + - ./hack/coverage.bash after_success: - codeclimate-test-reporter < coverage.txt # YAML alias, for settings shared across the simpler builds - &simple-test go: 1.7.x stage: test + go_import_path: github.com/golang/dep install: skip env: - DEPTESTBYPASS501=1 @@ -53,3 +49,26 @@ jobs: # Related: https://superuser.com/questions/1044130/why-am-i-having-how-can-i-fix-this-error-shell-session-update-command-not-f - trap EXIT - go test -race $(go list ./... | grep -v vendor) + - go: 1.8.x + stage: deploy + go_import_path: github.com/golang/dep + install: skip + script: skip + before_deploy: + - ./hack/build-all.bash + deploy: + - provider: releases + api_key: + secure: fL9GX11J3JLizEBTPZHN32wuAT91eAJsGl0kjlAdIc6Lb/9UCe1XZGgFnpQFN4qo/S+omhHBDbM6Ty1xhNy7xmjDecpQGDU8Rmap9Oll0TuxqMigG+njOuPp5VUYPofPP0PGKdxAcYg+KaFM7x0o2rK+qA046NHwo2gH1BbE+bn55TZglEajEfc8j9iX4jt96KC7zlu+WiKArLmfUtlrI8m8ZYgbYcvFmlYjeCiEqlNhvNL59ejug9Rl0PLtPbamqVXkGLafYtekgPCb4WSxBiCt8pq5Rb5svk9YcdXpiaWQhZjMPAuKN6BrmN2lw1PiXzADUG5fjvNc8eo2HY70GD2utU9cAsY8VIafhoH5n6uM1WI8MHwDfd7P1PiQA3ZGQ8CPwk4q/8HSfQU9ap7vZgSF63pTIbtlviyIG67orOJE9PWWncl9olYM946UylZu6m3hWI/rmJxOeJ1UJjym/3GNPMRfKubaGhV/TyRdM0bKX4M0cXHU6k/ESVFupGXdKRt4RpvkD4/1Km6b2OShW6PNI+ifFspnJr7obkI7dm7ubySdnNz4lMv9WWymxRpMVc8hUAhuoDvXeZJq7pSnkjBEWDxIRoTkA93CU3/Rf7MFYCJMnGSqjcxWUpIfCAk2/r4BqL9NQnqBvvVt+MYi64QaD5n7ZF3dVbr6HZ2zjSU= + file: + - release/dep-linux-amd64 + - release/dep-linux-amd64.sha256 + - release/dep-darwin-amd64 + - release/dep-darwin-amd64.sha256 + - release/dep-windows-amd64 + - release/dep-windows-amd64.sha256 + skip_cleanup: true + on: + repo: golang/dep + branch: master + tags: true diff --git a/README.md b/README.md index 91b829f1dd..17d441bc08 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,7 @@ That said, keep in mind the following: ## Setup -Get the tool via - -```sh -$ go get -u github.com/golang/dep/cmd/dep -``` +Grab the latest binary from the [releases](https://github.com/golang/dep/releases) page. On macOS you can install or upgrade to the latest released version with Homebrew: @@ -50,6 +46,12 @@ $ brew install dep $ brew upgrade dep ``` +If you're interested in hacking on `dep`, you can install via `go get`: + +```sh +go get -u github.com/dep/cmd/dep +``` + To start managing dependencies using dep, run the following from your project's root directory: ```sh diff --git a/cmd/dep/main.go b/cmd/dep/main.go index 5b8db13d3c..bb66c8e639 100644 --- a/cmd/dep/main.go +++ b/cmd/dep/main.go @@ -62,6 +62,7 @@ func (c *Config) Run() (exitCode int) { &ensureCommand{}, &hashinCommand{}, &pruneCommand{}, + &versionCommand{}, } examples := [][2]string{ diff --git a/cmd/dep/version.go b/cmd/dep/version.go new file mode 100644 index 0000000000..d7a3d33059 --- /dev/null +++ b/cmd/dep/version.go @@ -0,0 +1,45 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "flag" + "runtime" + + "github.com/golang/dep" +) + +var ( + version = "devel" + buildDate string + commitHash string +) + +const versionHelp = `Show the dep version information` + +func (cmd *versionCommand) Name() string { return "version" } +func (cmd *versionCommand) Args() string { + return "" +} +func (cmd *versionCommand) ShortHelp() string { return versionHelp } +func (cmd *versionCommand) LongHelp() string { return versionHelp } +func (cmd *versionCommand) Hidden() bool { return false } + +func (cmd *versionCommand) Register(fs *flag.FlagSet) {} + +type versionCommand struct{} + +func (cmd *versionCommand) Run(ctx *dep.Ctx, args []string) error { + ctx.Out.Printf(`dep: + version : %s + build date : %s + git hash : %s + go version : %s + go compiler : %s + platform : %s/%s +`, version, buildDate, commitHash, + runtime.Version(), runtime.Compiler, runtime.GOOS, runtime.GOARCH) + return nil +} diff --git a/hack/build-all.bash b/hack/build-all.bash new file mode 100755 index 0000000000..9797593a3e --- /dev/null +++ b/hack/build-all.bash @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Copyright 2017 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. +# +# This script will build dep and calculate hash for each +# (DEP_BUILD_PLATFORMS, DEP_BUILD_ARCHS) pair. +# DEP_BUILD_PLATFORMS="linux" DEP_BUILD_ARCHS="amd64" ./hack/build-all.sh +# can be called to build only for linux-amd64 + +set -e + +VERSION=$(git describe --tags --dirty) +COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null) +DATE=$(date --iso-8601) + +GO_BUILD_CMD="go build -a -installsuffix cgo" +GO_BUILD_LDFLAGS="-s -w -X main.commitHash=$COMMIT_HASH -X main.buildDate=$DATE -X main.version=$VERSION" + +if [ -z "$DEP_BUILD_PLATFORMS" ]; then + DEP_BUILD_PLATFORMS="linux windows darwin" +fi + +if [ -z "$DEP_BUILD_ARCHS" ]; then + DEP_BUILD_ARCHS="amd64" +fi + +mkdir -p release + +for OS in ${DEP_BUILD_PLATFORMS[@]}; do + for ARCH in ${DEP_BUILD_ARCHS[@]}; do + echo "Building for $OS/$ARCH" + GOARCH=$ARCH GOOS=$OS CGO_ENABLED=0 $GO_BUILD_CMD -ldflags "$GO_BUILD_LDFLAGS"\ + -o "release/dep-$OS-$ARCH" ./cmd/dep/ + sha256sum "release/dep-$OS-$ARCH" > "release/dep-$OS-$ARCH".sha256 + done +done diff --git a/hack/coverage.bash b/hack/coverage.bash new file mode 100755 index 0000000000..6ad89d9f54 --- /dev/null +++ b/hack/coverage.bash @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# Copyright 2017 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. +# +# This script will generate coverage.txt +set -e + +PKGS=$(go list ./... | grep -v /vendor/) +for pkg in $PKGS; do + go test -race -coverprofile=profile.out -covermode=atomic $pkg + if [[ -f profile.out ]]; then + cat profile.out >> coverage.txt + rm profile.out + fi +done diff --git a/hack/lint.bash b/hack/lint.bash new file mode 100755 index 0000000000..1e446eb3a8 --- /dev/null +++ b/hack/lint.bash @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Copyright 2017 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. +# +# This script will validate code with various linters +set -e + +PKGS=$(go list ./... | grep -v /vendor/) +go vet $PKGS +staticcheck $PKGS +gosimple $PKGS diff --git a/hack/validate-licence.bash b/hack/validate-licence.bash new file mode 100755 index 0000000000..c9ff89ec40 --- /dev/null +++ b/hack/validate-licence.bash @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Copyright 2017 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. +# +# This script will build licenseok and run it on all +# source files to check licence +set -e + +go build ./hack/licenseok +find . -path ./vendor -prune -o -type f -name "*.go"\ + -printf '%P\n' | xargs ./licenseok