blob: dc2354473bf1e7588ee15d775de287a5a9ca4ade [file] [log] [blame]
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Make sure that maven installed on your PC.
if [[ $1 = "" ]] ; then
echo "Version must be set as input parameter."
exit 1
fi
#
# Change this for your local GPG fingerprint:
# ===========================================
localUser=79BB50129889A04C68BD7A4ABCD48C7B6C94ED02
zipDir=zips
tmpDir=apache-nlpcraft
zipFileBin=apache-nlpcraft-incubating-bin-$1.zip # NOT an official ASF release.
zipFileSrc=apache-nlpcraft-incubating-$1.zip # An OFFICIAL ASF release.
coreModule=nlpcraft
stanfordModule=nlpcraft-stanford
examples=nlpcraft-examples
exampleAlarm=${examples}/alarm
exampleEcho=${examples}/echo
exampleHelloworld=${examples}/helloworld
exampleLightswitch=${examples}/lightswitch
exampleMinecraft=${examples}/minecraft
exampleMinecraftMod=${examples}/minecraft-mod
examplePhone=${examples}/phone
exampleSql=${examples}/sql
exampleTime=${examples}/time
exampleWeather=${examples}/weather
curDir=$(pwd)
cd ../
mvn clean package -P stanford-corenlp,release,examples
cd nlpcraft-examples/minecraft-mod || exit
cd ../../
rm -R ${zipDir} 2> /dev/null
mkdir -p ${zipDir}/${tmpDir}/${coreModule}
mkdir -p ${zipDir}/${tmpDir}/${stanfordModule}
mkdir -p ${zipDir}/${tmpDir}/${exampleAlarm}
mkdir -p ${zipDir}/${tmpDir}/${exampleEcho}
mkdir -p ${zipDir}/${tmpDir}/${exampleHelloworld}
mkdir -p ${zipDir}/${tmpDir}/${exampleLightswitch}
mkdir -p ${zipDir}/${tmpDir}/${exampleMinecraft}
mkdir -p ${zipDir}/${tmpDir}/${exampleMinecraftMod}
mkdir -p ${zipDir}/${tmpDir}/${examplePhone}
mkdir -p ${zipDir}/${tmpDir}/${exampleSql}
mkdir -p ${zipDir}/${tmpDir}/${exampleTime}
mkdir -p ${zipDir}/${tmpDir}/${exampleWeather}
mkdir ${zipDir}/${tmpDir}/build
#=====================#
# Prepare BINARY ZIP. #
#=====================#
rsync -avzq bin ${zipDir}/${tmpDir} --exclude '**/.DS_Store' --exclude bin/prepare.sh --exclude bin/MAVEN-RELEASE.md
rsync -avzq openapi ${zipDir}/${tmpDir} --exclude '**/.DS_Store'
function cpSrc() {
rsync -avzq "$1"/src ${zipDir}/${tmpDir}/"$1" --exclude '**/.DS_Store' --exclude '**/*.iml'
}
function cpCore {
rsync -avzq "${coreModule}"/src ${zipDir}/${tmpDir}/"${coreModule}" --exclude '**/.DS_Store' --exclude '**/*.iml' --exclude "main/python/ctxword/data/" --exclude "**/__pycache__/"
}
cpCore
cpSrc ${stanfordModule}
cpSrc ${exampleAlarm}
cpSrc ${exampleEcho}
cpSrc ${exampleHelloworld}
cpSrc ${exampleLightswitch}
cpSrc ${exampleMinecraft}
cpSrc ${exampleMinecraftMod}
cpSrc ${examplePhone}
cpSrc ${exampleSql}
cpSrc ${exampleTime}
cpSrc ${exampleWeather}
rsync -avzq sql ${zipDir}/${tmpDir} --exclude '**/.DS_Store'
cp bindist/LICENSE ${zipDir}/${tmpDir}
cp bindist/NOTICE ${zipDir}/${tmpDir}
cp DISCLAIMER-WIP ${zipDir}/${tmpDir}
cp ${coreModule}/src/main/resources/nlpcraft.conf ${zipDir}/${tmpDir}/build
cp ${coreModule}/src/main/resources/ignite.xml ${zipDir}/${tmpDir}/build
cp ${coreModule}/src/main/resources/log4j2.xml ${zipDir}/${tmpDir}/build
rsync -avzq ${coreModule}/target/*all-deps.jar ${zipDir}/${tmpDir}/build
rsync -avzq ${coreModule}/target/apidocs/** ${zipDir}/${tmpDir}/javadoc --exclude '**/.DS_Store'
function cpExample() {
mkdir -p ${zipDir}/${tmpDir}/build/"$1"
cp "$1"/src/main/resources/probe.conf ${zipDir}/${tmpDir}/build/"$1"
rsync -avzq "$1"/target/*.jar ${zipDir}/${tmpDir}/build/"$1" --exclude '*-sources.jar'
}
rsync -avzq "${stanfordModule}"/target/*.jar ${zipDir}/${tmpDir}/build --exclude '*-sources.jar'
mkdir -p ${zipDir}/${tmpDir}/build/"${exampleMinecraftMod}"
rsync -avzq "${exampleMinecraftMod}"/assets/*.jar ${zipDir}/${tmpDir}/build/"${exampleMinecraftMod}"
cp "${exampleMinecraftMod}"/src/main/resources/nlpcraft-settings.json ${zipDir}/${tmpDir}/build/"${exampleMinecraftMod}"
cpExample ${exampleAlarm}
cpExample ${exampleEcho}
cpExample ${exampleHelloworld}
cpExample ${exampleLightswitch}
cpExample ${exampleMinecraft}
cpExample ${examplePhone}
cpExample ${exampleSql}
cpExample ${exampleTime}
cpExample ${exampleWeather}
# Prepares bin zip.
cd ${zipDir} || exit
zip -rq "${zipFileBin}" ${tmpDir} 2> /dev/null
echo "Binary zip created: " "${zipFileBin}"
# Deletes some data for src zip
rm -R ${tmpDir}/build 2> /dev/null
rm -R ${tmpDir}/javadoc 2> /dev/null
#=====================#
# Prepare SOURCE ZIP. #
#=====================#
# Adds some data for src zip.
cd ../
mkdir ${zipDir}/${tmpDir}/javadoc
function cpPom() {
cp "$1"/pom.xml ${zipDir}/${tmpDir}/"$1"
}
cpPom ${coreModule}
cpPom ${stanfordModule}
cpPom ${exampleAlarm}
cpPom ${exampleEcho}
cpPom ${exampleHelloworld}
cpPom ${exampleLightswitch}
cpPom ${exampleMinecraft}
cpPom ${examplePhone}
cpPom ${exampleSql}
cpPom ${exampleTime}
cpPom ${exampleWeather}
cp ${exampleMinecraftMod}/build.gradle ${zipDir}/${tmpDir}/${exampleMinecraftMod}
cp pom.xml ${zipDir}/${tmpDir}
cp LICENSE ${zipDir}/${tmpDir}
cp NOTICE ${zipDir}/${tmpDir}
cp assembly.xml ${zipDir}/${tmpDir}
cp README.md ${zipDir}/${tmpDir}
cp javadoc/stylesheet.css ${zipDir}/${tmpDir}/javadoc
# Prepares src zip.
cd ${zipDir} || exit
zip -rq "${zipFileSrc}" ${tmpDir} 2> /dev/null
echo "Source zip created: " "${zipFileSrc}"
rm -R ${tmpDir} 2> /dev/null
function sign() {
shasum -a 256 "$1" > "$1".sha256
gpg --local-user ${localUser} --sign --armor --output "$1".asc --detach-sign "$1"
}
sign "${zipFileBin}"
sign "${zipFileSrc}"
cd "${curDir}" || exit
echo
echo "****************************"
echo "ZIPs are prepared in folder: '${zipDir}'"
echo "****************************"