ENH: improve build naming without git

- now defaults to the project-version when absolutely nothing else is
  known

STYLE: simplify internal calling in wmakeBuildInfo
This commit is contained in:
Mark Olesen
2018-12-08 18:18:17 +01:00
parent c45ff8cefc
commit 0e4ccd7cef

View File

@ -30,6 +30,7 @@
# #
# Environment # Environment
# - WM_PROJECT_DIR # - WM_PROJECT_DIR
# - WM_PROJECT_VERSION
# - WM_DIR (unset defaults to WM_PROJECT_DIR/wmake) # - WM_DIR (unset defaults to WM_PROJECT_DIR/wmake)
# #
# Note # Note
@ -179,6 +180,13 @@ declare -A metaInfo
# #
getMakeInfo() getMakeInfo()
{ {
if [ "${#makeInfo[*]}" -eq 4 ]
then
##echo "use cached value for make info" 1>&2
return 0
fi
##echo "get make info" 1>&2
local api patch build branch local api patch build branch
makeInfo=() makeInfo=()
@ -206,7 +214,6 @@ getMakeInfo()
makeInfo[patch]="${patch:-0}" # default is 0 makeInfo[patch]="${patch:-0}" # default is 0
makeInfo[branch]="$branch" makeInfo[branch]="$branch"
makeInfo[build]="$build" makeInfo[build]="$build"
makeInfo[cached]=true
} }
@ -224,6 +231,13 @@ getMakeInfo()
# #
getMetaInfo() getMetaInfo()
{ {
if [ "${#metaInfo[*]}" -eq 4 ]
then
##echo "use cached value for meta info" 1>&2
return 0
fi
##echo "get meta info" 1>&2
local api patch build branch local api patch build branch
metaInfo=() metaInfo=()
@ -242,7 +256,6 @@ getMetaInfo()
metaInfo[patch]="${patch:-0}" # default is 0 metaInfo[patch]="${patch:-0}" # default is 0
metaInfo[branch]="$branch" metaInfo[branch]="$branch"
metaInfo[build]="$build" metaInfo[build]="$build"
metaInfo[cached]=true
} }
@ -257,14 +270,14 @@ getMetaInfo()
# #
getApi() getApi()
{ {
[ -n "${makeInfo[cached]}" ] || getMakeInfo getMakeInfo
# Local copy # Local copy
local api="${makeInfo[api]}" local api="${makeInfo[api]}"
if [ -z "$api" ] if [ -z "$api" ]
then then
[ -n "${metaInfo[cached]}" ] || getMetaInfo getMetaInfo
api="${metaInfo[api]}" api="${metaInfo[api]}"
fi fi
@ -284,7 +297,7 @@ getApi()
# #
getPatchLevel() getPatchLevel()
{ {
[ -n "${metaInfo[cached]}" ] || getMetaInfo getMetaInfo
# Local copy # Local copy
local value="${metaInfo[patch]}" local value="${metaInfo[patch]}"
@ -301,10 +314,8 @@ getPatchLevel()
# Report make info # Report make info
reportMakeInfo() reportMakeInfo()
{ {
local key getMakeInfo
getMetaInfo
[ -n "${makeInfo[cached]}" ] || getMakeInfo
[ -n "${metaInfo[cached]}" ] || getMetaInfo
local patch="${metaInfo[patch]}" # <- From meta-info only local patch="${metaInfo[patch]}" # <- From meta-info only
makeInfo[patch]="${patch:=0}" # Extra safety makeInfo[patch]="${patch:=0}" # Extra safety
@ -320,9 +331,7 @@ reportMakeInfo()
# Report meta info # Report meta info
reportMetaInfo() reportMetaInfo()
{ {
local key getMetaInfo
[ -n "${metaInfo[cached]}" ] || getMetaInfo
local patch="${metaInfo[patch]}" # <- From meta-info only local patch="${metaInfo[patch]}" # <- From meta-info only
metaInfo[patch]="${patch:=0}" # Extra safety metaInfo[patch]="${patch:=0}" # Extra safety
@ -343,15 +352,27 @@ checkDiff()
local verbose="$1" local verbose="$1"
local key diff local key diff
[ -n "${makeInfo[cached]}" ] || getMakeInfo getMakeInfo
[ -n "${metaInfo[cached]}" ] || getMetaInfo getMetaInfo
for key in api patch branch build for key in api patch branch build
do do
if [ "${makeInfo[$key]}" != "${metaInfo[$key]}" ] if [ "${makeInfo[$key]}" != "${metaInfo[$key]}" ]
then
case "$key" in
(branch | build)
# Only trigger when make info (branch, build) are non-empty
if [ -n "${makeInfo[$key]}" ]
then then
diff="$diff $key" diff="$diff $key"
fi fi
;;
(*)
diff="$diff $key"
;;
esac
fi
done done
if [ "$verbose" = verbose ] && [ -n "$diff" ] if [ "$verbose" = verbose ] && [ -n "$diff" ]
@ -365,7 +386,8 @@ checkDiff()
done done
fi fi
test -z "$diff" # No diffs, but never permit entirely empty values for build.
test -z "$diff" || test -z "${makeInfo[build]}${metaInfo[build]}"
} }
@ -374,8 +396,8 @@ checkDiff()
# #
performUpdate() performUpdate()
{ {
[ -n "${makeInfo[cached]}" ] || getMakeInfo getMakeInfo
[ -n "${metaInfo[cached]}" ] || getMetaInfo getMetaInfo
# Local copies of the make info # Local copies of the make info
local api="${makeInfo[api]}" local api="${makeInfo[api]}"
@ -389,6 +411,9 @@ performUpdate()
[ -n "$branch" ] || branch="${metaInfo[branch]}" [ -n "$branch" ] || branch="${metaInfo[branch]}"
[ -n "$build" ] || build="${metaInfo[build]}" [ -n "$build" ] || build="${metaInfo[build]}"
# Fallback to WM_PROJECT_VERSION alone
[ -n "$build" ] || build="${WM_PROJECT_VERSION:-unknown}"
local outputFile local outputFile
# build-info # build-info
@ -447,8 +472,8 @@ performFiltering()
exit 2 exit 2
} }
[ -n "${makeInfo[cached]}" ] || getMakeInfo getMakeInfo
[ -n "${metaInfo[cached]}" ] || getMetaInfo getMetaInfo
# Local copies of the make info # Local copies of the make info
local api="${makeInfo[api]}" local api="${makeInfo[api]}"
@ -479,7 +504,8 @@ performFiltering()
if [ -z "$build" ] if [ -z "$build" ]
then then
build="${metaInfo[build]}" build="${metaInfo[build]}"
build="nogit${build:+-$build}" # Fallback to WM_PROJECT_VERSION
build="${build:-${WM_PROJECT_VERSION:-unknown}}"
fi fi
sed \ sed \