mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-04 03:27:23 -05:00 
			
		
		
		
	
						commit
						0aacaea918
					
				
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user