install.fairie/.config/taskfiles/vagrant/Taskfile.yml
Brian Zalewski f42899b107 Latest
2022-12-24 15:04:59 -05:00

60 lines
2.5 KiB
YAML

---
version: '3'
tasks:
up:
deps:
- :install:software:jq
- :install:software:vagrant
desc: Select which virtualization platform to run the image on using an interactive prompt
vars:
PROMPT_OPTIONS:
sh: |
TMP="$(mktemp)"
if type qemu-system-x86_64 &> /dev/null; then
echo 'KVM' > "$TMP"
fi
if [[ '{{OS}}' == 'darwin' ]] && mdfind -name 'Parallels Desktop.app' &> /dev/null; then
echo 'Parallels' > "$TMP"
fi
if type vboxmanage &> /dev/null; then
echo 'VirtualBox' > "$TMP"
fi
if [[ '{{OS}}' == 'linux' ]] && type vmware &> /dev/null; then
echo 'VMWare Workstation' > "$TMP"
fi
if [[ '{{OS}}' == 'darwin' ]] && type vmrun &> /dev/null; then
echo 'VMWare Fusion' > "$TMP"
fi
LIST_LENGTH="$(jq -R -s -c -r 'split("\n") | length' < "$TMP")"
if [ "$LIST_LENGTH" != '0' ]; then
echo "\""$(jq -R -s -c -r 'split("\n") | join("\" \"")' < "$TMP")"\""
else
echo "None"
fi
cmds:
- |
if [[ '{{.PROMPT_OPTIONS' == 'None' ]]; then
.config/log error 'No virtualization platforms installed. Install a platform (e.g. VirtualBox, VMWare, QEMU) to continue.' && exit 1
else
.config/log prompt 'Which desktop OS would you like to launch?'
.config/log info 'Select "Other" to launch any OS from VagrantUp.com (TODO Implement feature)'
OS_CHOICE="$(.config/log choose 'ArchLinux' 'CentOS' 'Debian' 'Fedora' 'macOS' 'Ubuntu' 'Windows' 'Other')"
.config/log prompt 'Which virtualization platform would you like to use?'
PLATFORM_CHOICE="$(.config/log choose '{{.PROMPT_OPTIONS}}')"
if [[ "$PLATFORM_CHOICE" == 'KVM' ]]; then
VAGRANT_UP_PROVIDER="libvirt"
elif [[ "$PLATFORM_CHOICE" == 'Parallels' ]]; then
VAGRANT_UP_PROVIDER="parallels"
elif [[ "$PLATFORM_CHOICE" == 'VirtualBox' ]]; then
VAGRANT_UP_PROVIDER="virtualbox"
elif [[ "$PLATFORM_CHOICE" == 'VMWare Workstation' ]]; then
VAGRANT_UP_PROVIDER="vmware_workstation"
elif [[ "$PLATFORM_CHOICE" == 'VMWare Fusion' ]]; then
VAGRANT_UP_PROVIDER="vmware_fusion"
else
.config/log error 'Unrecognized platform selection.'
fi
.config/log warn 'TODO Unfinished task - need to add in OS_CHOICE to vagrant up'
vagrant up --provider="$VAGRANT_UP_PROVIDER"
fi