# Build and bundle for multiple platforms from the command line

**URL:** <https://forum.defold.com/t/build-and-bundle-for-multiple-platforms-from-the-command-line/2577>\
**Category:** The Defoldmine\
**Created:** [August 8, 2016, 9:40am UTC](https://forum.defold.com/t/build-and-bundle-for-multiple-platforms-from-the-command-line/2577 "2016-08-08T09:40:26Z")\
**Posts on this page:** 1\
**Showing post:** 20

<div class="post-metadata">

**Author:** ![Pkeod](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/pkeod/32/606_2.png) [@Pkeod](https://forum.defold.com/u/Pkeod)\
**Post date:** [March 4, 2019, 9:31am UTC](https://forum.defold.com/t/build-and-bundle-for-multiple-platforms-from-the-command-line/2577/20 "2019-03-04T09:31:33Z")

</div>

Here is current version I’ve used multiple times to upload release builds multiple times to live users now

```lua
#!/bin/bash
title=$(less game.project | grep "^title = " | cut -d "=" -f2 | sed -e 's/^[[:space:]]*//')
title_no_space=$(echo -e "${title}" | tr -d '[[:space:]]')

echo "Project: ${title}"

if [! -f bob.jar]
	then
		echo "Unable to find bob.jar. Download it from d.defold.com."
		exit 1
fi

bob() {
	java -jar bob.jar $@
}

build() {
	platform=$1
	shift 1
	rm -rf build
	bob --archive clean resolve build --build-report-html "build-report-${platform}.html" --texture-compression true --variant "release" --platform "${platform}" -e a@a.com -u fake_token
}

bundle() {
	platform=$1
	echo "${platform}"
	shift 1
	bob --platform ${platform} --bundle-output build/${platform} $@ bundle
}

archive() {
	platform=$1
	if ["${platform}" == "armv7-android"]
		then
			echo "${title_no_space}.apk"
			mv "build/${platform}/${title}/${title}.apk" "${title_no_space}.apk"
	elif ["${platform}" == "armv7-darwin"]
		then
			echo "${title_no_space}.ipa"
			mv "build/${platform}/${title}/${title}.ipa" "${title_no_space}.ipa"
	elif ["${platform}" == "x86_64-darwin"]
		then
			echo "${title_no_space}_${platform}.zip"
			rm -rf "${title_no_space}_${platform}.zip"
			cd build/${platform}
			zip -r -q "../../${title_no_space}_${platform}.zip" *
			cd ../..	
	else
		echo "${title_no_space}_${platform}.zip"
		rm -rf "${title_no_space}_${platform}.zip"
		cd "build/${platform}/${title}"
		zip -r -q "../../../${title_no_space}_${platform}.zip" *
		cd ../../..
	fi
}

do_platform() {
	platform=$1
	shift 1
	echo -e "\n[Building ${platform}]"
	build ${platform}
	echo -e "\n[Bundling ${platform}]"
	bundle ${platform}
	echo -e "\n[Archiving ${platform}]"
	archive ${platform}
	echo -e "\n[${platform} Done]"
}

# build / bundle / archive platforms

do_platform x86_64-win32
do_platform x86_64-darwin
do_platform x86_64-linux

# play some music to let us known it's done

ffplay fanfare.mp3 -autoexit -nodisp

```

---

_[View the full topic](https://forum.defold.com/t/build-and-bundle-for-multiple-platforms-from-the-command-line/2577)._
