Skip to content

Instantly share code, notes, and snippets.

@jameskyle
Created January 17, 2016 06:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jameskyle/38b53179547e5600820b to your computer and use it in GitHub Desktop.
Save jameskyle/38b53179547e5600820b to your computer and use it in GitHub Desktop.
#!/usr/bin/env zsh
# set: ft=sh
set -e
setopt extendedglob
ROOT=/Applications/VMware\ Fusion.app/Contents/Library/
if ! pwd | grep vmwarevm > /dev/null 2>&1; then
echo "Doesn't look like we're in a vmware image directory!"
exit 1
fi
if ! ${ROOT}vmrun stop *.vmx; then
echo "VM is not running."
else
echo "VM has been shut down."
fi
# just another check, make sure the files in this directory look like vmware
# virtual machine files
ls -d *.(vmxf|nvram|vmsd|vmx|vmdk) > /dev/null 2>&1
# remove all files that are not essential for a vagrant box
rm -irf $(ls -d *~*.(vmxf|nvram|vmsd|vmx|vmdk))
# defragment and shrink the main vmware disk
for disk in $(ls *.vmdk);do
echo "converting to disk type 0..."
${ROOT}/vmware-vdiskmanager -r "${disk}" -t 0 temp.vmdk.new
rm "${disk}"
mv temp.vmdk.new "${disk}"
echo "defragging ${disk}...."
${ROOT}/vmware-vdiskmanager -d -- "${disk}"
echo "shrinking ${disk}...."
${ROOT}/vmware-vdiskmanager -k -- "${disk}"
done
# create the metadata.json for vmware fusion
cat <<EOF > metadata.json
{
"provider":"vmware_desktop"
}
EOF
# box it up using the virtual machine name as the box name.
box_name=$(basename "${PWD}" .vmwarevm)
tar cvzf "${box_name}.box" ./*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment