This repository contains snippets files for SaltStack state files.
gen-snippets.py
: script used for generating snippets from salt sourcesnippets/*
: generated snippets go here
You need to install a snippet engine first. Currently neosnippet is supported, and thanks to neosnippet's compatibility to vim-snipmate, it is also supported.
I will only cover configuration for neosnippet, since I only use this. You are welcome to help me complete this instruction.
-
Save the
snippets/
directory somewhere vim can find, like:cd ~/.vim/ git clone https://github.com/StephenPCG/vim-snippets-salt/ # you may also only copy the snippets/ directory here
-
Add the
snippets/
directory tog:neosnippet#snippets_directory
:" g:neosnippet#snippets_directory is a comma-seperated string or list, " I prefer using list. let g:neosnippet#snippets_directory = [$HOME . "/.vim/vim-snippets-salt/snippets/"]
-
Since different versions of salt have different amount of states functions, you can generate snippets for each version you need. Snippets are named as
sls-$version.sls
, so you need to setg:neosnippet#scope_alias
to tell neosnippet which file to use. e.g." g:neosnippet#scope_aliases is a dictionary, initialize it if you haven't done it let g:neosnippet#scope_aliases = {} let g:neosnippet#scope_aliases['sls'] = 'sls-0.17.2'
scope_aliases[filetype]
is a comma-seperated string, all listed variant snippets will be loaded, so make sure you only list one here, or multiple versions if you realy need.For vim-snipmate, there is also a
g:snipMate.scope_aliases
which does the same thing.
You can generate snippets by yourself. You have to get saltstack source code
and make sure salt
is importable. The gen-snippets.py
will import salt.states.*
and find functions for each module, if any required library is missing, the generation will fail.
# This will try to import salt from system, detect its version, and save output to snippets/sls-$version.snippets
./gen-snippets.py
If you have salt source stored elsewhere, or want to generate for a specific version, you can do like this:
cd ~/salt/
git checkout v0.17.2
/path/to/gen-snippets.py -p ~/salt/
Sometimes, we would like to ignore function argument name
, since in most cases we don't need it,
you can ignore it:
./gen-snippets.py -i name
-i
may be specified multiple times to ignore multiple args.
I have added two pre-generated snippets for version 0.17.2
and 2014.1.5
with name
ignored.