Serious work on the buildall script (and project.clj) to capture a
build signature in the MANIFEST.MF file; also, getting rid of dependency on collage.
This commit is contained in:
parent
75475ece29
commit
0652a9ba61
147
buildall.sh
147
buildall.sh
|
@ -8,27 +8,123 @@
|
|||
|
||||
# Simon Broooke <simon@jasmine.org.uk>
|
||||
|
||||
email=`grep ${USER} /etc/passwd | awk -F\: '{print $5}' | awk -F\, '{print $4}'`
|
||||
fullname=`grep ${USER} /etc/passwd | awk -F\: '{print $5}' | awk -F\, '{print $1}'`
|
||||
webappsdir="/var/lib/tomcat7/webapps"
|
||||
release=""
|
||||
trial="FALSE"
|
||||
|
||||
case $1 in
|
||||
build)
|
||||
# Builds the build signature properties in the manifest map file
|
||||
# expected arguments: old version tag, version tag, full name of user,
|
||||
# email of user; if not passed, all these will be set to "unset".
|
||||
# The objective I'm trying to achieve is that when committed to version
|
||||
# control, these are all always unset; but they're all valid in a build.
|
||||
function setup-build-sig {
|
||||
if [ "${1}" = "" ]
|
||||
then
|
||||
o="unset"
|
||||
else
|
||||
o="${1}"
|
||||
fi
|
||||
if [ "${2}" = "" ]
|
||||
then
|
||||
v="unset"
|
||||
else
|
||||
v="${2}"
|
||||
fi
|
||||
if [ "${3}" = "" ]
|
||||
then
|
||||
u="unset"
|
||||
else
|
||||
u="${3}"
|
||||
fi
|
||||
if [ "${4}" = "" ]
|
||||
then
|
||||
e="unset"
|
||||
else
|
||||
e="${4}"
|
||||
fi
|
||||
|
||||
if [ "${2}${3}${4}" = "" ]
|
||||
then
|
||||
t="unset"
|
||||
else
|
||||
t=`date --rfc-3339 seconds`
|
||||
fi
|
||||
|
||||
if [ ! -d "target" ]
|
||||
then
|
||||
mkdir "target"
|
||||
fi
|
||||
|
||||
cat <<-EOF > target/manifest.sed
|
||||
s/${o}/${v}/g
|
||||
s/^ *"build-signature-version" ".*" *\$/\t\t"build-signature-version" "${v}"/
|
||||
s/^ *"build-signature-user" ".*" *\$/\t\t"build-signature-user" "${u}"/
|
||||
s/^ *"build-signature-email" ".*" *\$/\t\t"build-signature-email" "${e}"/
|
||||
s/^ *"build-signature-timestamp" ".*" *\$/\t\t"build-signature-timestamp" "${t}"/
|
||||
EOF
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
cat <<-EOF 1>&2
|
||||
Usage:
|
||||
-build Build all components and commit to master.
|
||||
-email [ADDRESS] Your email address, to be recorded in the build signature.
|
||||
-fullname [NAME] Your full name, to be recorded in the build signature.
|
||||
-release [LABEL] Build all components, branch for release on old label, then
|
||||
upversion to new LABEL and commit to master.
|
||||
-trial Trial build only, do not commit.
|
||||
-webapps [PATH] Set the path to the local tomcat webapps directory
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
while (( "$#" ))
|
||||
do
|
||||
case $1 in
|
||||
-b|-build)
|
||||
# 'build' is the expected normal case.
|
||||
trial="FALSE";
|
||||
;;
|
||||
release)
|
||||
-e|-email)
|
||||
shift;
|
||||
email=$1;;
|
||||
-f|-fullname)
|
||||
shift;
|
||||
fullname=$1;;
|
||||
-r|-release)
|
||||
# release is branch a release and upversion to new label
|
||||
release=$2;
|
||||
shift;
|
||||
release=$1;
|
||||
trial="FALSE";
|
||||
if [ "${release}" = "" ]
|
||||
then
|
||||
echo "Release flagged, but no release tag supplied" 1>&2;
|
||||
exit 1;
|
||||
fi;;
|
||||
-t|-trial)
|
||||
trial="TRUE";;
|
||||
-w|-webapps)
|
||||
# Set the tomcat webapps directory to release to
|
||||
shift;
|
||||
webappsdir=$1;;
|
||||
*)
|
||||
echo "Usage:" 1>&2;
|
||||
echo " ${0} build Build all components and commit to master" 1>&2;
|
||||
echo " ${0} release [LABEL] Build all components, branch for release on " 1>&2;
|
||||
echo " old label, then upversion to new LABEL and commit to master" 1>&2;
|
||||
echo "Unrecognised option '${1}', exiting." 1>&2;
|
||||
exit 1;;
|
||||
esac
|
||||
esac
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
echo "Trial: ${trial}; email: ${email}; fullname ${fullname}; release: ${release}; webapps: $webappsdir"
|
||||
|
||||
ls mw-* > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "No subdirectories matching 'mw-*' found, exiting." 1>&2;
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
for dir in mw-*
|
||||
do
|
||||
|
@ -51,7 +147,8 @@ do
|
|||
exit 1;
|
||||
fi
|
||||
cat project.clj > project.bak.1
|
||||
sed "s/${old}/${interim}/" project.bak.1 > project.clj
|
||||
setup-build-sig "${old}" "${interim}" "${fullname}" "${email}"
|
||||
sed -f target/manifest.sed project.bak.1 > project.clj
|
||||
message="Upversioned from ${old} to ${interim} for release"
|
||||
old=${interim}
|
||||
fi
|
||||
|
@ -77,6 +174,12 @@ do
|
|||
lein marg
|
||||
lein install
|
||||
|
||||
cat project.clj > project.bak.2
|
||||
setup-build-sig "${old}"
|
||||
sed -f target/manifest.sed project.bak.2 > project.clj
|
||||
|
||||
if [ "${trial}" = "FALSE" ]
|
||||
then
|
||||
if [ "${message}" = "" ]
|
||||
then
|
||||
git commit -a
|
||||
|
@ -84,14 +187,20 @@ do
|
|||
git commit -a -m "$message"
|
||||
fi
|
||||
git push origin master
|
||||
fi
|
||||
|
||||
if [ "${release}" != "" ]
|
||||
then
|
||||
branch="${old}_MAINTENANCE"
|
||||
if [ "${trial}" = "FALSE" ]
|
||||
then
|
||||
git branch "${branch}"
|
||||
# git push origin "${branch}"
|
||||
cat project.clj > project.bak.2
|
||||
sed "s/${interim}/${release}-SNAPSHOT/" project.bak.2 > project.clj
|
||||
git push origin "${branch}"
|
||||
fi
|
||||
|
||||
cat project.clj > project.bak.3
|
||||
setup-build-sig "${old}" "${release}-SNAPSHOT" "${fullname}" "${email}"
|
||||
sed -f target/manifest.sed project.bak.3 > project.clj
|
||||
message="Upversioned from ${interim} to ${release}-SNAPSHOT"
|
||||
|
||||
echo $message
|
||||
|
@ -105,13 +214,21 @@ do
|
|||
fi
|
||||
lein marg
|
||||
lein install
|
||||
|
||||
cat project.clj > project.bak.4
|
||||
setup-build-sig "${release}-SNAPSHOT"
|
||||
sed -f target/manifest.sed project.bak.4 > project.clj
|
||||
|
||||
if [ "${trial}" = "FALSE" ]
|
||||
then
|
||||
git commit -a -m "${message}"
|
||||
echo ${message}
|
||||
git push origin master
|
||||
fi
|
||||
fi
|
||||
|
||||
# Finally, if we're in the UI project, build the uberwar - and should probably deploy it
|
||||
# to local Tomcat for test
|
||||
# Finally, if we're in the UI project, build the uberwar - and should
|
||||
# probably deploy it to local Tomcat for test
|
||||
if [ "${dir}" = "mw-ui" ]
|
||||
then
|
||||
lein ring uberwar
|
||||
|
|
14
project.clj
14
project.clj
|
@ -1,11 +1,19 @@
|
|||
(defproject mw-engine "0.1.2-SNAPSHOT"
|
||||
:description "Cellular automaton world builder."
|
||||
:url "http://example.com/FIXME"
|
||||
:url "http://www.journeyman.cc/microworld/"
|
||||
:manifest {
|
||||
;; do not reformat this! It is important for the buildall script
|
||||
;; that each of these properties is on a line with nothing else.
|
||||
"build-signature-version" "unset"
|
||||
"build-signature-user" "unset"
|
||||
"build-signature-email" "unset"
|
||||
"build-signature-timestamp" "unset"
|
||||
}
|
||||
|
||||
:license {:name "GNU General Public License v2"
|
||||
:url "http://www.gnu.org/licenses/gpl-2.0.html"}
|
||||
:plugins [[lein-marginalia "0.7.1"]]
|
||||
:dependencies [[org.clojure/clojure "1.5.1"]
|
||||
[org.clojure/math.combinatorics "0.0.7"]
|
||||
[org.clojure/tools.trace "0.7.8"]
|
||||
[net.mikera/imagez "0.3.1"]
|
||||
[fivetonine/collage "0.2.1"]])
|
||||
[net.mikera/imagez "0.3.1"]])
|
||||
|
|
|
@ -7,11 +7,8 @@
|
|||
(:import [java.awt.image BufferedImage])
|
||||
(:use mw-engine.utils
|
||||
mw-engine.world
|
||||
;; interestingly the imagez load-image is failing for me, while the
|
||||
;; collage version is problem free.
|
||||
[mikera.image.core :only [filter-image get-pixels]]
|
||||
[mikera.image.core :only [load-image filter-image get-pixels]]
|
||||
[mikera.image.filters]
|
||||
[fivetonine.collage.util]
|
||||
))
|
||||
|
||||
(defn- abs
|
||||
|
@ -42,7 +39,7 @@
|
|||
[world]
|
||||
(map-world world tag-gradient))
|
||||
|
||||
(defn transform-altitude
|
||||
(defn tag-altitude
|
||||
"Set the altitude of this cell from the corresponding pixel of this heightmap.
|
||||
If the heightmap you supply is smaller than the world, this will break.
|
||||
|
||||
|
@ -52,7 +49,7 @@
|
|||
* `heightmap` an (ideally) greyscale image, whose x and y dimensions should
|
||||
exceed those of the world of which the `cell` forms part."
|
||||
([world cell heightmap]
|
||||
(transform-altitude cell heightmap))
|
||||
(tag-altitude cell heightmap))
|
||||
([cell heightmap]
|
||||
(merge cell
|
||||
{:altitude
|
||||
|
@ -73,14 +70,13 @@
|
|||
a world the size of the heightmap will be created.
|
||||
* `imagepath` a file path or URL which indicates an image file."
|
||||
([world imagepath]
|
||||
;; bizarrely, the collage load-util is working for me, but the imagez version isn't.
|
||||
(let [heightmap (filter-image (grayscale)(load-image imagepath))]
|
||||
(map-world
|
||||
(map-world world transform-altitude (list heightmap))
|
||||
(map-world world tag-altitude (list heightmap))
|
||||
tag-gradient)))
|
||||
([imagepath]
|
||||
(let [heightmap (filter-image (grayscale)(load-image imagepath))
|
||||
world (make-world (.getWidth heightmap) (.getHeight heightmap))]
|
||||
(map-world
|
||||
(map-world world transform-altitude (list heightmap))
|
||||
(map-world world tag-altitude (list heightmap))
|
||||
tag-gradient))))
|
||||
|
|
Loading…
Reference in a new issue