2023-08-03 14:44:02 -05:00
|
|
|
#!env xonsh
|
|
|
|
|
# vim: set ft=xonsh:
|
|
|
|
|
import argparse
|
|
|
|
|
import pathlib
|
|
|
|
|
import re
|
2023-08-10 14:10:58 -05:00
|
|
|
import sys
|
2023-08-03 14:44:02 -05:00
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_vagrant_provider(provider):
|
|
|
|
|
"Vagrant provider is not always the same as Packer provider"
|
|
|
|
|
if provider.startswith("qemu"):
|
|
|
|
|
return "libvirt"
|
|
|
|
|
elif provider.startswith("virtualbox"):
|
|
|
|
|
return "virtualbox"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_providers():
|
|
|
|
|
"List of providers as defined in sources/"
|
2023-08-10 14:10:58 -05:00
|
|
|
providers: set[str] = {
|
2023-08-03 14:44:02 -05:00
|
|
|
"virtualbox-iso.x86_64",
|
|
|
|
|
"qemu.x86_64"
|
2023-08-10 14:10:58 -05:00
|
|
|
}
|
2023-08-03 14:44:02 -05:00
|
|
|
return providers
|
|
|
|
|
|
|
|
|
|
|
2023-08-10 14:10:58 -05:00
|
|
|
def get_parser(args, unsupported=set()):
|
2023-08-03 15:46:44 -05:00
|
|
|
parser = argparse.ArgumentParser("Builder")
|
|
|
|
|
parser.add_argument("--headless", action="store_true")
|
|
|
|
|
parser.add_argument("--upload", action="store_true")
|
2023-08-10 14:10:58 -05:00
|
|
|
parser.add_argument("--provider", action="append")
|
2023-08-03 15:46:44 -05:00
|
|
|
parsed = parser.parse_args(args)
|
|
|
|
|
opts = {}
|
|
|
|
|
if parsed.headless:
|
2023-08-10 14:10:58 -05:00
|
|
|
opts["headless"] = "headless=true"
|
2023-08-03 15:46:44 -05:00
|
|
|
else:
|
|
|
|
|
opts["headless"] = "headless=false"
|
|
|
|
|
if parsed.upload:
|
|
|
|
|
opts["upload"] = ""
|
|
|
|
|
else:
|
|
|
|
|
opts["upload"] = "-except=upload"
|
2023-08-10 14:10:58 -05:00
|
|
|
if parsed.provider:
|
|
|
|
|
opts["providers"] = set(parsed.provider)
|
|
|
|
|
else:
|
|
|
|
|
opts["providers"] = get_providers()
|
|
|
|
|
# Filter providers
|
|
|
|
|
opts["providers"] -= unsupported
|
2023-08-03 15:46:44 -05:00
|
|
|
return opts
|
|
|
|
|
|
|
|
|
|
|
2023-08-03 14:44:02 -05:00
|
|
|
def main():
|
|
|
|
|
# Equivalent of `set -e` in Bash
|
2023-08-10 14:10:58 -05:00
|
|
|
#$RAISE_SUBPROC_ERROR = True
|
|
|
|
|
for box in g`*.box`:
|
|
|
|
|
sed -e f's#@@BOX@@#file:///home/greg/src/vms/vms/{box}#' -e f's/@@BOX_NAME@@/{box}/' Vagrantfile.in > Vagrantfile
|
|
|
|
|
vagrant up --provider libvirt
|
|
|
|
|
vagrant destroy -f
|
|
|
|
|
rm -rf .vagrant
|
2023-08-03 14:44:02 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
main()
|