summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/DiskImage.hs
diff options
context:
space:
mode:
authorJoey Hess2017-07-25 17:48:47 -0400
committerJoey Hess2017-07-25 17:48:47 -0400
commitd35c1c7ad1539da24e6ab071d8d669912f330f0c (patch)
tree489bdecd13326907d4cc827b4371d17f4c057e8e /src/Propellor/Property/DiskImage.hs
parent0f1f0b7a75398bbf1155d429612bd20415731bd1 (diff)
new properties
* Added Rsync.installed property. * Added DiskImage.vmdkBuilt property which is useful for booting a disk image in VirtualBox.
Diffstat (limited to 'src/Propellor/Property/DiskImage.hs')
-rw-r--r--src/Propellor/Property/DiskImage.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Propellor/Property/DiskImage.hs b/src/Propellor/Property/DiskImage.hs
index 950da58c..dd42265d 100644
--- a/src/Propellor/Property/DiskImage.hs
+++ b/src/Propellor/Property/DiskImage.hs
@@ -13,6 +13,7 @@ module Propellor.Property.DiskImage (
imageRebuilt,
imageBuiltFrom,
imageExists,
+ vmdkBuilt,
Grub.BIOS(..),
) where
@@ -409,3 +410,18 @@ toSysDir :: FilePath -> FilePath -> FilePath
toSysDir chrootdir d = case makeRelative chrootdir d of
"." -> "/"
sysdir -> "/" ++ sysdir
+
+-- | Builds a VirtualBox .vmdk file for the specified disk image file.
+vmdkBuilt :: FilePath -> RevertableProperty DebianLike UnixLike
+vmdkBuilt diskimage = (setup <!> cleanup)
+ `describe` (vmdkfile ++ " built")
+ where
+ vmdkfile = diskimage ++ ".vmdk"
+ setup = cmdProperty "VBoxManage"
+ [ "internalcommands", "createrawvmdk"
+ , "-filename", vmdkfile
+ , "-rawdisk", diskimage
+ ]
+ `changesFile` vmdkfile
+ `requires` Apt.installed ["virtualbox"]
+ cleanup = File.notPresent vmdkfile