mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-23 22:27:38 -05:00
commit
0aacaea918
3 changed files with 97 additions and 72 deletions
3
.gitattributes
vendored
3
.gitattributes
vendored
|
@ -1,3 +1,6 @@
|
||||||
|
*.bash text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||||
|
*.sh text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||||
|
|
||||||
# files for systemd
|
# files for systemd
|
||||||
*.path text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
*.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
|
*.service text eol=lf whitespace=blank-at-eol,space-before-tab,tab-in-indent,trailing-space,tabwidth=2
|
||||||
|
|
56
build.bash
56
build.bash
|
@ -8,48 +8,48 @@
|
||||||
#
|
#
|
||||||
# Outputs compiled program in current directory.
|
# Outputs compiled program in current directory.
|
||||||
# Default file name is 'ecaddy'.
|
# Default file name is 'ecaddy'.
|
||||||
#
|
|
||||||
set -e
|
|
||||||
|
|
||||||
output="$1"
|
set -euo pipefail
|
||||||
if [ -z "$output" ]; then
|
|
||||||
output="ecaddy"
|
: ${output_filename:="${1:-}"}
|
||||||
fi
|
: ${output_filename:="ecaddy"}
|
||||||
|
|
||||||
pkg=main
|
pkg=main
|
||||||
|
ldflags=()
|
||||||
|
|
||||||
# Timestamp of build
|
# Timestamp of build
|
||||||
builddate_id=$pkg.buildDate
|
name="${pkg}.buildDate"
|
||||||
builddate=`date -u`
|
value=$(date --utc +"%F %H:%M:%SZ")
|
||||||
|
ldflags+=("-X" "\"${name}=${value}\"")
|
||||||
|
|
||||||
# Current tag, if HEAD is on a tag
|
# Current tag, if HEAD is on a tag
|
||||||
tag_id=$pkg.gitTag
|
name="${pkg}.gitTag"
|
||||||
set +e
|
set +e
|
||||||
tag=`git describe --exact-match HEAD 2> /dev/null`
|
value="$(git describe --exact-match HEAD 2>/dev/null)"
|
||||||
set -e
|
set -e
|
||||||
|
ldflags+=("-X" "\"${name}=${value}\"")
|
||||||
|
|
||||||
# Nearest tag on branch
|
# Nearest tag on branch
|
||||||
lasttag_id=$pkg.gitNearestTag
|
name="${pkg}.gitNearestTag"
|
||||||
lasttag=`git describe --abbrev=0 --tags HEAD`
|
value="$(git describe --abbrev=0 --tags HEAD)"
|
||||||
|
ldflags+=("-X" "\"${name}=${value}\"")
|
||||||
|
|
||||||
# Commit SHA
|
# Commit SHA
|
||||||
commit_id=$pkg.gitCommit
|
name="${pkg}.gitCommit"
|
||||||
commit=`git rev-parse --short HEAD`
|
value="$(git rev-parse --short HEAD)"
|
||||||
|
ldflags+=("-X" "\"${name}=${value}\"")
|
||||||
|
|
||||||
# Summary of uncommited changes
|
# Summary of uncommitted changes
|
||||||
shortstat_id=$pkg.gitShortStat
|
name="${pkg}.gitShortStat"
|
||||||
shortstat=`git diff-index --shortstat HEAD`
|
value="$(git diff-index --shortstat HEAD)"
|
||||||
|
ldflags+=("-X" "\"${name}=${value}\"")
|
||||||
|
|
||||||
# List of modified files
|
# List of modified files
|
||||||
files_id=$pkg.gitFilesModified
|
name="${pkg}.gitFilesModified"
|
||||||
files=`git diff-index --name-only HEAD`
|
value="$(git diff-index --name-only HEAD | tr "\n" "," | sed -e 's:,$::')"
|
||||||
|
ldflags+=("-X" "\"${name}=${value}\"")
|
||||||
|
|
||||||
|
set -x
|
||||||
go build -ldflags "
|
go build \
|
||||||
-X \"$builddate_id=$builddate\"
|
-ldflags "${ldflags[*]}" \
|
||||||
-X \"$tag_id=$tag\"
|
-o "${output_filename}"
|
||||||
-X \"$lasttag_id=$lasttag\"
|
|
||||||
-X \"$commit_id=$commit\"
|
|
||||||
-X \"$shortstat_id=$shortstat\"
|
|
||||||
-X \"$files_id=$files\"
|
|
||||||
" -o "$output"
|
|
||||||
|
|
110
dist/automate.sh
vendored
110
dist/automate.sh
vendored
|
@ -1,56 +1,78 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
shopt -s nullglob # if no files match glob, assume empty list instead of string literal
|
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
# if no files match glob, assume empty list instead of string literal
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
## PACKAGE TO BUILD
|
: ${build_package:="github.com/mholt/caddy"}
|
||||||
Package=github.com/mholt/caddy
|
|
||||||
|
|
||||||
|
: ${dist_dir:="${GOPATH}/src/${build_package}/dist"}
|
||||||
|
: ${build_dir:="${dist_dir}/builds"}
|
||||||
|
: ${target_dir:="${dist_dir}/release"}
|
||||||
|
|
||||||
## PATHS TO USE
|
# Bundles a single binary, given as first parameter, into an archive.
|
||||||
DistDir=$GOPATH/src/$Package/dist
|
package() {
|
||||||
BuildDir=$DistDir/builds
|
# Binary inside the zip file is simply the project name
|
||||||
ReleaseDir=$DistDir/release
|
binbase="$(basename "${build_package}")"
|
||||||
|
if [[ "${1}" == *.exe ]]; then
|
||||||
|
binbase+=".exe"
|
||||||
|
fi
|
||||||
|
bin="${build_dir}/${binbase}"
|
||||||
|
|
||||||
|
# Name .zip file same as binary, but strip .exe from end
|
||||||
|
zipname="$(basename "${1%.exe}")"
|
||||||
|
case "$(printf "${zipname}" | cut -d '_' -f 2 | sed -e 's:[a-z]*bsd:bsd:')" in
|
||||||
|
linux|bsd) zipname+=".tar.gz" ;;
|
||||||
|
*) zipname+=".zip" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
## BEGIN
|
# Compress distributable depending on extension
|
||||||
|
case "${zipname##*.}" in
|
||||||
|
zip)
|
||||||
|
zip -j "${target_dir}/${zipname}" \
|
||||||
|
"${1}" \
|
||||||
|
"${dist_dir}"/{CHANGES.txt,LICENSES.txt,README.txt}
|
||||||
|
printf "@ $(basename "${1}")\n@=${binbase}\n" \
|
||||||
|
| zipnote -w "${target_dir}/${zipname}"
|
||||||
|
;;
|
||||||
|
gz)
|
||||||
|
tar -caf "${target_dir}/${zipname}" \
|
||||||
|
--owner=0 --group=0 \
|
||||||
|
--transform="s#$(basename "${1}")#${binbase}#" \
|
||||||
|
-C "$(dirname "${1}")" "$(basename "${1}")" \
|
||||||
|
-C "${dist_dir}" CHANGES.txt LICENSES.txt README.txt
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# Compile binaries
|
prepare_directories() {
|
||||||
mkdir -p $BuildDir
|
mkdir -p "${build_dir}"
|
||||||
cd $BuildDir
|
rm -f "${build_dir}"/caddy*
|
||||||
rm -f caddy*
|
|
||||||
gox $Package
|
|
||||||
|
|
||||||
# Zip them up with release notes and stuff
|
mkdir -p "${target_dir}"
|
||||||
mkdir -p $ReleaseDir
|
rm -f "${target_dir}"/caddy*
|
||||||
cd $ReleaseDir
|
}
|
||||||
rm -f caddy*
|
|
||||||
for f in $BuildDir/*
|
|
||||||
do
|
|
||||||
# Name .zip file same as binary, but strip .exe from end
|
|
||||||
zipname=$(basename ${f%".exe"})
|
|
||||||
if [[ $f == *"linux"* ]] || [[ $f == *"bsd"* ]]; then
|
|
||||||
zipname=${zipname}.tar.gz
|
|
||||||
else
|
|
||||||
zipname=${zipname}.zip
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Binary inside the zip file is simply the project name
|
compile_binaries() {
|
||||||
binbase=$(basename $Package)
|
(cd "${build_dir}"; gox "${build_package}")
|
||||||
if [[ $f == *.exe ]]; then
|
}
|
||||||
binbase=$binbase.exe
|
|
||||||
fi
|
|
||||||
bin=$BuildDir/$binbase
|
|
||||||
mv $f $bin
|
|
||||||
|
|
||||||
# Compress distributable
|
if [[ "${1:-}" == "" ]]; then
|
||||||
if [[ $zipname == *.zip ]]; then
|
prepare_directories
|
||||||
zip -j $zipname $bin $DistDir/CHANGES.txt $DistDir/LICENSES.txt $DistDir/README.txt
|
compile_binaries
|
||||||
else
|
|
||||||
tar -cvzf $zipname -C $BuildDir $binbase -C $DistDir CHANGES.txt LICENSES.txt README.txt
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put binary filename back to original
|
case "${OSTYPE}" in
|
||||||
mv $bin $f
|
linux*)
|
||||||
done
|
find "${build_dir}" -type f -executable -print0 \
|
||||||
|
| xargs --null --max-args=1 --max-procs=$(nproc --ignore=1) -I '{}' \
|
||||||
|
"${0}" package '{}'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
while read f; do
|
||||||
|
package "${f}"
|
||||||
|
done < <(ls -1 "${build_dir}"/caddy*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
${1} "${2}"
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in a new issue