88 lines
2.6 KiB
Org Mode
88 lines
2.6 KiB
Org Mode
#+TITLE: CFEngine layer
|
|
#+PROPERTY: header-args :eval never-export
|
|
|
|
[[file:./img/agent.png]]
|
|
|
|
* Table of Contents :TOC_4_gh:noexport:
|
|
- [[#description][Description]]
|
|
- [[#features][Features:]]
|
|
- [[#install][Install]]
|
|
- [[#configuration][Configuration]]
|
|
- [[#set-file-permission-on-save][Set file permission on save]]
|
|
- [[#indendation][Indendation]]
|
|
- [[#execution-of-cfengine3-src-blocks][Execution of =cfengine3= SRC blocks]]
|
|
- [[#key-bindings][Key bindings]]
|
|
|
|
* Description
|
|
This layer adds support for CFEngine policies to Spacemacs.
|
|
|
|
** Features:
|
|
- Syntax highlighting
|
|
- On the fly syntax checking via =flycheck= integration.
|
|
- Auto completion via =company= integration.
|
|
- Execution of =cfengine3= =SRC= blocks in =org-mode= via =ob-cfengine3= package.
|
|
|
|
* Install
|
|
Add =cfengine= to the =dotspacemacs-configuration-layers= in your =~/.spacemacs=
|
|
to use this layer.
|
|
|
|
* Configuration
|
|
** Set file permission on save
|
|
Here is a function to set permissions to 600 on save, this can help avoid
|
|
errors like:
|
|
|
|
=File ./example.cf (owner 1000) is writable by others (security exception)=
|
|
|
|
#+BEGIN_SRC elisp
|
|
(defun cfengine-permissions-policy-owner-only ()
|
|
"If file starts with a shebang, make `buffer-file-name' executable"
|
|
(save-excursion
|
|
(set-file-modes buffer-file-name #o600)
|
|
(message (concat "Made " buffer-file-name " accessibly only by the owner (600)."))))
|
|
|
|
(add-hook 'after-save-hook 'cfengine-permissions-policy-owner-only nil 'make-it-local)
|
|
#+END_SRC
|
|
|
|
** Indendation
|
|
If you like attributes to be intended from the promiser set =Indentation amount
|
|
from anchor= to =2=. For example:
|
|
|
|
#+begin_src cfengine3
|
|
bundle agent main
|
|
{
|
|
vars:
|
|
|
|
"promiser"
|
|
string => "value",
|
|
comment => "Indented 2 spaces from promiser";
|
|
}
|
|
#+end_src
|
|
|
|
* Execution of =cfengine3= SRC blocks
|
|
This layers add support for =cfengine3= source blocks in org files.
|
|
With the insertion point inside the SRC block press ~,,~ or ~CTRL-c Ctrl-c~
|
|
|
|
#+BEGIN_SRC cfengine3
|
|
bundle agent main
|
|
{
|
|
reports:
|
|
|
|
"Hello World!";
|
|
}
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
: R: Hello World!
|
|
|
|
See the ob-cfengine3 [[https://github.com/nickanderson/ob-cfengine3/blob/master/README.org][README]] for information on controlling inclusion of the
|
|
stdlib, definition of classes and controlling the =bundlesequence= using header
|
|
args.
|
|
|
|
To suppress the confirmation when executing a block set
|
|
=(setq org-confirm-babel-evaluate nil)= in =dotspacemacs/user-config()=.
|
|
|
|
* Key bindings
|
|
|
|
| Key Binding | Description |
|
|
|-------------+-----------------------|
|
|
| ~SPC m j~ | Reformats JSON string |
|