[Beaker-devel] Using shell "if" to conditionalize snippet inclusion is error-prone?

Junichi Nomura j-nomura at ce.jp.nec.com
Fri Oct 31 02:06:44 UTC 2014


On 10/31/14 10:41, Dan Callaghan wrote:
> Ironically, the reason I kept the condition outside the snippet in the 
> first place was to avoid breaking existing snippets :-) The previous 
> version had the template conditional outside the snippets, like this:
> 
>     {% if distro is osmajor('RedHatEnterpriseLinux6', 'RedHatEnterpriseLinuxGrid6') %}
>     {% snippet 'readahead_sysconfig' %}
>     {% endif %}
> 
> So if I moved the conditional inside the snippet, then a custom snippet 
> would suddenly become unconditional (unless the admin also updated their 
> custom snippet to add the conditional).

Ah...

> However I clearly didn't account for the fact that an empty snippet 
> would make it a syntax error.
> 
> Probably the best solution is to just add a dummy statement after the 
> "then" statement to make it syntactically valid even if the snippet is 
> empty. I guess this should work:
> 
>     if [ -f /etc/sysconfig/readahead ] ; then
>         :
>         {% snippet 'readahead_sysconfig' %}
>     fi

Yeah, it seems the right solution.
Actually I changed my local "readahead_sysconfig" to just contain ":"
to work around the current situation.

-- 
Jun'ichi Nomura, NEC Corporation


More information about the Beaker-devel mailing list