diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2021-06-08 13:24:51 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2021-06-08 13:24:51 -0700 |
commit | 14b86639825699489ac1c18700da12f593f41188 (patch) | |
tree | 79055fbc98bc890be5358bffb14c8cbeb8ded79d /src/property/file.lisp | |
parent | 463654cf07b06cab40d6b4a08ed6a6a456850fbe (diff) | |
download | consfigurator-14b86639825699489ac1c18700da12f593f41188.tar.gz |
add FILE:HAS-OWNERSHIP
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/property/file.lisp')
-rw-r--r-- | src/property/file.lisp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/property/file.lisp b/src/property/file.lisp index 4ee33e6..214b69f 100644 --- a/src/property/file.lisp +++ b/src/property/file.lisp @@ -68,6 +68,19 @@ CONTENT can be a list of lines or a single string." (with-change-if-changes-file (path) (mrun (format nil "chmod ~O ~A" mode path))))) +(defprop has-ownership :posix (path &key user group) + "Ensure that a file has particular ownership and group ownership." + (:desc (format nil "~A has~:[~; owner ~:*~A~]~:[~;~2:*~:[~;,~] group ~A~]" + path user group)) + (:hostattrs + (unless (or user group) + (inapplicable-property "Not enough arguments."))) + (:apply + (with-change-if-changes-file (path) + (if user + (mrun "chown" "-h" (format nil "~A~:[~;:~:*~A~]" user group) path) + (mrun "chgrp" "-h" group path))))) + (defprop does-not-exist :posix (&rest paths) "Ensure that files do not exist." (:desc (if (cdr paths) |