#!/bin/bash
#
# A script for creating release packages. The release packages are create in the home directory.
#
# self check:
# ./cppcheck -D__CPPCHECK__ --library=cppcheck-lib --enable=style --inconclusive --suppress=bitwiseOnBoolean --suppress=shadowFunction --suppress=useStlAlgorithm --suppress=*:externals/picojson.h cli gui/*.cpp lib
#
# Update translations
#   lupdate gui.pro
#
# Update copyright year
# git diff 1.86 | grep '^diff --git a/' | sed 's|.* b/||' | xargs sed -i 's/Copyright (C) 2007-201./Copyright (C) 2007-2019/'
# git diff | grep '^diff --git a/'
#
# Make sure "cppcheck --errorlist" works. For example with:
# make test
# ./cppcheck --errorlist > errlist.xml && xmllint --noout errlist.xml
#
# Update AUTHORS using output from:
# git log --format='%aN' 1.81..HEAD | sort -u > AUTHORS2 && diff -y AUTHORS AUTHORS2 | less
#
# Update version numbers in:
# sed -i "s/1.[0-9][0-9].99/1.82/" cli/main.cpp
# sed -i "s/1.[0-9][0-9].99/1.82/" cmake/versions.cmake
# sed -i "s/MINOR [0-9][0-9]/MINOR 82/" lib/version.h
# sed -i "s/1.[0-9][0-9] dev/1.82/" man/manual.docbook
# sed -i "s/1.[0-9][0-9] dev/1.82/" win_installer/productInfo.wxi
# sed -i "s/1.[0-9][0-9].99/1.82/" win_installer/productInfo.wxi
# Verify:
# grep '\.99' */*.[ch]* && grep '[0-9][0-9] dev' */*.[ch]*
# git commit -a -m "1.43: Set versions"
#
# Update the Makefile:
# make dmake && ./dmake --release
# git commit -a -m "1.43: Updated Makefile"
#
# Build and test the windows installer
#
# Tag:
# git tag 1.43
# git push --tags
#
# Create a release folder on sourceforge:
# https://sourceforge.net/projects/cppcheck/files/cppcheck/
#
# Create release:
# ./createrelease 1.43
#
# Restore the Makefile:
# make dmake && ./dmake
# git commit -a -m "Makefile: Set debug mode"
#
# Update download link on index.php main page
#
#
# write a news
#
# save "cppcheck --doc" output on wiki, write new release date on wikis
#
# compile new democlient:
# ssh -t danielmarjamaki,cppcheck@shell.sourceforge.net create
# ./build-cppcheck.sh 1.43
#
# run daca with new release

# Tag to use
tag=$1

# Name of release
releasename=cppcheck-$tag

set -e

cd ~/cppcheck

mkdir upload

# Create archives..
git archive --format=tar --prefix=$releasename/ $tag | gzip > upload/$releasename.tar.gz
git archive --format=tar --prefix=$releasename/ $tag | bzip2 > upload/$releasename.tar.bz2
git archive --format=zip -9 --prefix=$releasename/ $tag > upload/$releasename.zip
cd upload
wget https://www.pkeus.de/~philipp/Temp/$releasename-x64-Setup.msi
#wget https://www.pkeus.de/~philipp/Temp/$releasename-x86-Setup.msi
scp $releasename.* danielmarjamaki,cppcheck@frs.sourceforge.net:/home/frs/project/c/cp/cppcheck/cppcheck/$tag/
rm $releasename.*
cd ..

# Generate the manual.pdf, manual.html and version.txt
make -j4
./cppcheck --version > upload/version.txt
cd ~/cppcheck/man
./buildman.sh
mv manual.pdf ../upload/
mv manual.html ../upload/
mv reference-cfg-format.pdf ../upload/
mv reference-cfg-format.html ../upload/

cd ~/cppcheck/upload
scp * danielmarjamaki,cppcheck@web.sourceforge.net:htdocs/

cd ~/cppcheck
rm -rf upload