1#!/bin/bash
2#
3# bash script to create destination structure of files/directories to be ready for release new version
4# arguments:
5# 1: version number
6# 2: destination directory
7# example: ./make-package.sh 2.05 /home/me/ReleasedMandelbulbers
8
9if [ $# = 2 ]
10then
11	#source dir as current directory
12	sourceDir=${PWD}
13	releaseDir="$2"
14
15	if [ ! -f "$sourceDir/make-package.sh" ]; then
16		echo "this script has to be executed in mandelbulber root directory";
17		exit 2;
18	fi
19
20	# create release dir, if not already exists
21	mkdir -vp "$releaseDir"
22	if [ ! -d "$releaseDir" ]; then
23		echo "could not create releaseDir: $releaseDir";
24		exit 3;
25	fi
26	cd "$releaseDir"
27
28	#names of destination folders
29	destNameLinux="mandelbulber2-"$1
30	destNameWin="mandelbulber2-win32-"$1
31	destNameWin64="mandelbulber2-win64-"$1
32
33	#clear already created folders
34	rm -r "$destNameLinux"
35	rm -r "$destNameWin"
36	rm -r "$destNameWin64"
37
38	#making directories
39	mkdir -vp "$destNameLinux"
40	mkdir -vp "$destNameWin"
41	mkdir -vp "$destNameWin64"
42
43	#copying README file
44	cp -vu "$sourceDir/deploy/README" "$destNameLinux"
45	sed -e 's/$/\r/' "$sourceDir/deploy/README-win32.txt" > "$destNameWin/README.txt"
46	sed -e 's/$/\r/' "$sourceDir/deploy/README-win32.txt" > "$destNameWin64/README.txt"
47
48	#copying NEWS file
49	cp -vu "$sourceDir/deploy/NEWS" "$destNameLinux"
50	sed -e 's/$/\r/' "$sourceDir/deploy/NEWS" > "$destNameWin/NEWS.txt"
51	sed -e 's/$/\r/' "$sourceDir/deploy/NEWS" > "$destNameWin64/NEWS.txt"
52
53	#copying COPYING file
54	cp -vu "$sourceDir/deploy/COPYING" "$destNameLinux"
55	sed -e 's/$/\r/' "$sourceDir/deploy/COPYING" > "$destNameWin/COPYING.txt"
56	sed -e 's/$/\r/' "$sourceDir/deploy/COPYING" > "$destNameWin64/COPYING.txt"
57
58	#copying install scripts
59	cp -vu "$sourceDir/deploy/linux/install" "$destNameLinux"
60	cp -vu "$sourceDir/deploy/linux/uninstall" "$destNameLinux"
61	#sed -e 's/$/\r/' "$sourceDir/deploy/win32/install.bat" > "$destNameWin/install.bat"
62
63	#copying desktop file
64	cp -vu "$sourceDir/deploy/linux/mandelbulber2.desktop" "$destNameLinux"
65	cp -vu "$sourceDir/deploy/win32/mandelbulber2.ico" "$destNameWin"
66	cp -vu "$sourceDir/deploy/win64/mandelbulber2.ico" "$destNameWin64"
67
68	#copying share folder
69	mkdir -vp "$destNameLinux/usr/"
70	cp -vurL "$sourceDir/deploy/share" "$destNameLinux/usr/"
71	cp -vurL "$sourceDir/deploy/share/mandelbulber2/"* "$destNameWin/"
72	cp -vurL "$sourceDir/deploy/share/mandelbulber2/"* "$destNameWin64/"
73
74	#copying fomula files
75	cp -vurL "$sourceDir/formula" "$destNameLinux/usr/share/mandelbulber2/"
76	cp -vurL "$sourceDir/formula"* "$destNameWin/"
77	cp -vurL "$sourceDir/formula"* "$destNameWin64/"
78
79	#moving formulas source code to formula directory
80	mkdir -vp "$destNameLinux/formula/"
81	mv -v "$destNameLinux/usr/share/mandelbulber2/formula/definition" "$destNameLinux/formula/"
82
83	#copying language files
84	cp -vurL "$sourceDir/language" "$destNameLinux/usr/share/mandelbulber2/"
85	cp -vurL "$sourceDir/language"* "$destNameWin/"
86	cp -vurL "$sourceDir/language"* "$destNameWin64/"
87
88	#copying opencl files
89	cp -vurL "$sourceDir/opencl" "$destNameLinux/usr/share/mandelbulber2/"
90	cp -vurL "$sourceDir/opencl"* "$destNameWin/"
91	cp -vurL "$sourceDir/opencl"* "$destNameWin64/"
92
93	#copying source files
94	mkdir -vp "$destNameWin/source"
95
96	cp -vurL "$sourceDir/src/" "$destNameLinux/"
97	cp -vurL "$sourceDir/src/" "$destNameWin/source"
98	cp -vurL "$sourceDir/src/" "$destNameWin64/source"
99
100	cp -vurL "$sourceDir/third-party/" "$destNameLinux/"
101	cp -vurL "$sourceDir/third-party/" "$destNameWin/source"
102	cp -vurL "$sourceDir/third-party/" "$destNameWin64/source"
103
104	cp -vurL "$sourceDir/qt/" "$destNameLinux/"
105	cp -vurL "$sourceDir/qt/" "$destNameWin/source"
106	cp -vurL "$sourceDir/qt/" "$destNameWin64/source"
107
108  cp -vurL "$sourceDir/opencl/" "$destNameLinux/"
109	cp -vurL "$sourceDir/opencl/" "$destNameWin/source"
110	cp -vurL "$sourceDir/opencl/" "$destNameWin64/source"
111
112	#create bin folder
113	mkdir -vp "$destNameLinux/usr/bin"
114
115	#copying makefiles
116	mkdir -vp "$destNameLinux/makefiles"
117	mkdir -vp "$destNameWin/source/makefiles"
118	mkdir -vp "$destNameWin64/source/makefiles"
119
120	cp -vu "$sourceDir/qmake/mandelbulber.pro" "$destNameLinux/makefiles/"
121	cp -vu "$sourceDir/qmake/mandelbulber-opencl.pro" "$destNameLinux/makefiles/"
122	cp -vu "$sourceDir/qmake/common.pri" "$destNameLinux/makefiles/"
123	cp -vu "$sourceDir/qmake/installer.pri" "$destNameLinux/makefiles/"
124
125	cp -vu "$sourceDir/qmake/mandelbulber.pro" "$destNameWin/source/makefiles/"
126	cp -vu "$sourceDir/qmake/mandelbulber-opencl.pro" "$destNameWin/source/makefiles/"
127	cp -vu "$sourceDir/qmake/common.pri" "$destNameWin/source/makefiles/"
128	cp -vu "$sourceDir/qmake/mandelbulber.pro" "$destNameWin64/source/makefiles/"
129	cp -vu "$sourceDir/qmake/mandelbulber-opencl.pro" "$destNameWin64/source/makefiles/"
130	cp -vu "$sourceDir/qmake/common.pri" "$destNameWin64/source/makefiles/"
131
132	#copying DLL files
133	cp -vur "$sourceDir/deploy/win32/dll/"* "$destNameWin"
134	cp -vur "$sourceDir/deploy/win64/dll/"* "$destNameWin64"
135
136	#copying windows exe files (needed to be compiled before)
137	cp -vu "$sourceDir/build-mandelbulber-MinGwQt-Release/release/mandelbulber2.exe" "$destNameWin"
138	cp -vu "$sourceDir/build-mandelbulber-MinGw64Qt-Release/release/mandelbulber2.exe" "$destNameWin64"
139
140	DOCFILE="$(curl -s https://api.github.com/repos/buddhi1980/mandelbulber_doc/releases | grep browser_download_url | head -n 1 | cut -d '"' -f 4)"
141
142	echo $DOCFILE
143
144	#copying documentation files
145	mkdir -vp "$destNameLinux/usr/share/doc/mandelbulber2"
146	mkdir -vp "$destNameWin/doc"
147	mkdir -vp "$destNameWin64/doc"
148	wget -O "$destNameLinux/usr/share/doc/mandelbulber2/Mandelbulber_Manual.pdf" $DOCFILE
149	cp -v "$destNameLinux/usr/share/doc/mandelbulber2/Mandelbulber_Manual.pdf" "$destNameWin/doc/"
150	cp -v "$destNameLinux/usr/share/doc/mandelbulber2/Mandelbulber_Manual.pdf" "$destNameWin64/doc/"
151
152	cp -vu "$sourceDir/deploy/NEWS" "$destNameLinux/usr/share/doc/mandelbulber2"
153	cp -vu "$sourceDir/deploy/NEWS" "$destNameWin/doc/"
154	cp -vu "$sourceDir/deploy/NEWS" "$destNameWin64/doc/"
155
156	cd "$releaseDir"
157
158	#delete temporary svn files
159	find . -name .svn -prune -exec rm -rf "{}" \;
160
161	echo release prepared to ${PWD}
162else
163	echo syntax: make-package.sh [number_new] [destination]
164fi
165