meta: Add release machinery

This commit is contained in:
Michael Aldridge 2020-08-23 22:46:37 -07:00
parent 1ce7cfb147
commit 4a82eb8228
3 changed files with 107 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
NOTICE
dist/
vendor/

40
.goreleaser.yml Normal file
View file

@ -0,0 +1,40 @@
# This is an example goreleaser.yaml file with some sane defaults.
# Make sure to check the documentation at http://goreleaser.com
before:
hooks:
- go mod vendor
- ./scripts/vendor-licenses -gen > NOTICE
builds:
- id: ldap
main: main.go
binary: ldap
goos:
- darwin
- freebsd
- linux
- windows
archives:
- replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
files:
- LICENSE
- NOTICE
- README.md
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ .Tag }}-next"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
release:
github:
owner: NetAuth
name: ldap

64
scripts/vendor-licenses Executable file
View file

@ -0,0 +1,64 @@
#!/bin/bash
list_vendor_files() {
find vendor -type f -a \( -iname 'COPYING*' -o -iname 'LICENSE*' \) | sort
}
list_files() {
goroot="$(go env GOROOT)"
goid='Go programming language'
if [ -r "$goroot/LICENSE" ]; then
echo "${goid}::$goroot/LICENSE"
elif [ -r /usr/share/licenses/go/LICENSE ]; then
echo "${goid}::/usr/share/licenses/go/LICENSE"
else # last restort: HTTP
echo "${goid}::https://golang.org/LICENSE?m=text"
fi
list_vendor_files
}
generate_notice() {
last=
$0 -all | while IFS=$'\n' read license; do
pkg="${license%%::*}"
if [ "$pkg" != "$license" ]; then
license="${license#${pkg}::}"
else
pkg="${pkg#vendor/}"
pkg="${pkg%/*}"
fi
printf ${last:+'\n\n\n'}
last=x
echo "$pkg" | sed 'p;s/./-/g'
fetch "${license}"
done
}
fetch() {
case "$1" in
*://*) wget -q -O- "${1#*::}";;
*) cat "${1#*::}";;
esac
}
case "${1--gen}" in
-gen)
if [ -t 1 ]; then
generate_notice | ${PAGER:-more}
else
generate_notice
fi
;;
-src) list_vendor_files;;
-all) list_files;;
-h)
echo 'Usage: vendor-licenses [-h|-gen|-src|-all]' >&2
exit 2
;;
*)
echo "Unrecognized argument: '$1'" >&2
exit 1
;;
esac