mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-23 22:27:38 -05:00
Use best practices in build.bash
Format of main.buildDate has been locale-dependent, and is now ISO-8601 compliant. Caddy displayed with ```-version``` something like (mind the datetime format): Caddy 0.8.2 (+591b209 Fri Mar 18 21:22:55 UTC 2016) 2 files changed, 9 insertions(+), 4 deletions(-) build.bash main.go which is now: Caddy 0.8.2 (+591b209 2016-03-18 21:22:55Z) 2 files changed, 9 insertions(+), 4 deletions(-) build.bash,main.go See also: * http://wiki.bash-hackers.org/scripting/obsolete * https://google.github.io/styleguide/shell.xml * https://xkcd.com/1179/
This commit is contained in:
parent
a05a664d56
commit
ba2e9d80fd
2 changed files with 29 additions and 27 deletions
2
.gitattributes
vendored
2
.gitattributes
vendored
|
@ -1,3 +1,5 @@
|
|||
*.bash text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||
|
||||
# files for systemd
|
||||
*.path text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||
*.service text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||
|
|
54
build.bash
54
build.bash
|
@ -8,48 +8,48 @@
|
|||
#
|
||||
# Outputs compiled program in current directory.
|
||||
# Default file name is 'ecaddy'.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
output="$1"
|
||||
if [ -z "$output" ]; then
|
||||
output="ecaddy"
|
||||
fi
|
||||
: ${output_filename:="$1"}
|
||||
: ${output_filename:="ecaddy"}
|
||||
|
||||
pkg=main
|
||||
ldflags=()
|
||||
|
||||
# Timestamp of build
|
||||
builddate_id=$pkg.buildDate
|
||||
builddate=`date -u`
|
||||
name="${pkg}.buildDate"
|
||||
value=$(date --utc +"%F %H:%M:%SZ")
|
||||
ldflags+=("-X" "\"${name}=${value}\"")
|
||||
|
||||
# Current tag, if HEAD is on a tag
|
||||
tag_id=$pkg.gitTag
|
||||
name="${pkg}.gitTag"
|
||||
set +e
|
||||
tag=`git describe --exact-match HEAD 2> /dev/null`
|
||||
value="$(git describe --exact-match HEAD 2>/dev/null)"
|
||||
set -e
|
||||
ldflags+=("-X" "\"${name}=${value}\"")
|
||||
|
||||
# Nearest tag on branch
|
||||
lasttag_id=$pkg.gitNearestTag
|
||||
lasttag=`git describe --abbrev=0 --tags HEAD`
|
||||
name="${pkg}.gitNearestTag"
|
||||
value="$(git describe --abbrev=0 --tags HEAD)"
|
||||
ldflags+=("-X" "\"${name}=${value}\"")
|
||||
|
||||
# Commit SHA
|
||||
commit_id=$pkg.gitCommit
|
||||
commit=`git rev-parse --short HEAD`
|
||||
name="${pkg}.gitCommit"
|
||||
value="$(git rev-parse --short HEAD)"
|
||||
ldflags+=("-X" "\"${name}=${value}\"")
|
||||
|
||||
# Summary of uncommited changes
|
||||
shortstat_id=$pkg.gitShortStat
|
||||
shortstat=`git diff-index --shortstat HEAD`
|
||||
# Summary of uncommitted changes
|
||||
name="${pkg}.gitShortStat"
|
||||
value="$(git diff-index --shortstat HEAD)"
|
||||
ldflags+=("-X" "\"${name}=${value}\"")
|
||||
|
||||
# List of modified files
|
||||
files_id=$pkg.gitFilesModified
|
||||
files=`git diff-index --name-only HEAD`
|
||||
name="${pkg}.gitFilesModified"
|
||||
value="$(git diff-index --name-only HEAD | tr "\n" "," | sed -e 's:,$::')"
|
||||
ldflags+=("-X" "\"${name}=${value}\"")
|
||||
|
||||
|
||||
go build -ldflags "
|
||||
-X \"$builddate_id=$builddate\"
|
||||
-X \"$tag_id=$tag\"
|
||||
-X \"$lasttag_id=$lasttag\"
|
||||
-X \"$commit_id=$commit\"
|
||||
-X \"$shortstat_id=$shortstat\"
|
||||
-X \"$files_id=$files\"
|
||||
" -o "$output"
|
||||
set -x
|
||||
go build \
|
||||
-ldflags "${ldflags[*]}" \
|
||||
-o "${output_filename}"
|
||||
|
|
Loading…
Reference in a new issue