Improvements to the puppet snippets by Nikola Petrov.

This commit is contained in:
Holger Rapp 2013-05-17 06:57:22 +02:00
parent 064dfac638
commit b272949b51
2 changed files with 42 additions and 2 deletions

View File

@ -1,7 +1,46 @@
# Snippets for Puppet # Snippets for Puppet
snippet /^class/ "Class declaration" r global !p
class ${1:name} { import vim
import os.path
def get_module_namespace_and_basename():
"""This function will try to guess the current class or define name you are
trying to create. Note that for this to work you should be using the module
structure as per the style guide. Examples inputs and it's output
* /home/nikolavp/puppet/modules/collectd/manifests/init.pp -> collectd
* /home/nikolavp/puppet/modules/collectd/manfistes/mysql.pp -> collectd::mysql
"""
current_file_path_without_ext = vim.eval('expand("%:p:r")') or ""
if not current_file_path_without_ext:
return "name"
parts = os.path.split(current_file_path_without_ext)
namespace = ''
while parts[0] and parts[0] != '/':
# Skip the init.pp files because they don't create a deeper namespace
# and are special. Note this might break things like
# modules/collectd/init/test.pp. But I am not even sure if puppet will
# work for those.
if parts[1] == 'init':
parts = os.path.split(parts[0])
continue
if parts[1] == 'manifests':
return os.path.split(parts[0])[1] + '::' + namespace.rstrip(':')
else:
namespace = parts[1] + '::' + namespace
parts = os.path.split(parts[0])
# couldn't guess the namespace. The user is editing a raw file in no module like the site.pp file
return "name"
endglobal
snippet define "Definition" b
define ${1:`!p snip.rv = get_module_namespace_and_basename()`} {
${0:# body}
}
endsnippet
snippet class "Class declaration" b
class ${1:`!p snip.rv = get_module_namespace_and_basename()`} {
${0:# body} ${0:# body}
} }
endsnippet endsnippet

View File

@ -1369,6 +1369,7 @@ Contributors listed in chronological order:
Danilo Bargen (dbrgn) Danilo Bargen (dbrgn)
Bernhard Vallant (lazerscience) Bernhard Vallant (lazerscience)
Von Welch (von) Von Welch (von)
Nikola Petrov (nikolavp)
Thank you for your support. Thank you for your support.