mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-04 17:24:46 +00:00
Merge pull request #109 from SirAiedail/feature/jinja-helper-exists-in-path
Add jinja helper to test executable in PATH
This commit is contained in:
@@ -6,8 +6,14 @@ jinja2 helper methods
|
||||
"""
|
||||
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
||||
def exists(path):
|
||||
"""return true when path exists"""
|
||||
return os.path.exists(os.path.expandvars(path))
|
||||
|
||||
|
||||
def exists_in_path(name, path=None):
|
||||
"""return true when executable exists in os path"""
|
||||
return shutil.which(name, os.F_OK | os.X_OK, path) is not None
|
||||
|
||||
@@ -49,6 +49,7 @@ class Templategen:
|
||||
self.env.globals['header'] = self._header
|
||||
# adding helper methods
|
||||
self.env.globals['exists'] = jhelpers.exists
|
||||
self.env.globals['exists_in_path'] = jhelpers.exists_in_path
|
||||
|
||||
def generate(self, src):
|
||||
"""render template from path"""
|
||||
|
||||
@@ -83,6 +83,19 @@ echo "{%@@ if exists('/dev/abcdef') @@%}" >> ${tmps}/dotfiles/abc
|
||||
echo "this should not exist" >> ${tmps}/dotfiles/abc
|
||||
echo "{%@@ endif @@%}" >> ${tmps}/dotfiles/abc
|
||||
|
||||
# test exists_in_path
|
||||
cat >> ${tmps}/dotfiles/abc << _EOF
|
||||
{%@@ if exists_in_path('cat') @@%}
|
||||
this should exist too
|
||||
{%@@ endif @@%}
|
||||
_EOF
|
||||
|
||||
cat >> ${tmps}/dotfiles/abc << _EOF
|
||||
{%@@ if exists_in_path('a_name_that_is_unlikely_to_be_chosen_for_an_executable') @@%}
|
||||
this should not exist either
|
||||
{%@@ endif @@%}
|
||||
_EOF
|
||||
|
||||
#cat ${tmps}/dotfiles/abc
|
||||
|
||||
# install
|
||||
@@ -92,6 +105,8 @@ cd ${ddpath} | ${bin} install -f -c ${cfg} -p p1 -V
|
||||
|
||||
grep '^this should exist' ${tmpd}/abc >/dev/null
|
||||
grep -v '^this should not exist' ${tmpd}/abc >/dev/null
|
||||
grep '^this should exist too' ${tmpd}/abc >/dev/null
|
||||
grep -v '^this should not exist either' ${tmpd}/abc >/dev/null
|
||||
|
||||
#cat ${tmpd}/abc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user