�
܍~cV � � � d dl Z d dlZd dlmZ d dlZdZ ej dez � � ej d� � ej d� � gZd� Z G d� d ej � � Z
dS )
� N)�StringIOz[a-zA-Z_]+[a-zA-Z0-9_]*z\$z\$[0-9#\?\-@\*]z\$\{.+\}c �J � t D ]}|� | � � r dS �dS )NTF)�SHELL_VAR_REGEXES�search)�text�rs �D/usr/lib/python3/dist-packages/cloudinit/distros/parsers/sys_conf.py�_contains_shell_variabler
$ s4 � �
� � ���8�8�D�>�>� ��4�4� ��5� c �, � e Zd ZdZd� Zd� Zdd�Zd� ZdS ) �SysConfa A configobj.ConfigObj subclass specialised for sysconfig files.
:param contents:
The sysconfig file to parse, in a format accepted by
``configobj.ConfigObj.__init__`` (i.e. "a filename, file like object,
or list of lines").
c �L � t j � | |dd�� � d S )NFT)�
interpolation�write_empty_values)� configobj� ConfigObj�__init__)�self�contentss r r zSysConf.__init__4 s5 � ���$�$��(�%�D� %�
�
�
�
�
r c �< � | � � � }t � � }t |t t f� � r)|� d� |� � � � n"|� t
|� � � � |� � � S )N�
)�writer �
isinstance�list�tuple�join�str�getvalue)r r �out_contentss r �__str__zSysConf.__str__9 s} � ��:�:�<�<���z�z���h��u�
�.�.� .����t�y�y��2�2�3�3�3�3����s�8�}�}�-�-�-��$�$�&�&�&r Fc �8 � � t |t � � st d|z � � �t |� � dk rdS d }|d dv r#|d dv rt |� � dk r� fd�}n�|� � � � d� � r(|� � � � d � � rnQt j d
|� � r<t |� � r!t j d|� � r� fd�}n� fd
�}nt j }|s|S ||� � S )NzValue "%s" is not a stringr � )�"�'���� c �4 �� �� | � � | z S �N��_get_single_quote��xr s �r �<lambda>z SysConf._quote.<locals>.<lambda>K s �� �d�4�4�Q�7�7�!�;� r z$(�)z [\t\r\n ]z[\n\"']c �4 �� �� | � � | z S r( )�_get_triple_quoter+ s �r r- z SysConf._quote.<locals>.<lambda>Y � �� �$�*@�*@��*C�*C�a�*G� r c �4 �� �� | � � | z S r( r) r+ s �r r- z SysConf._quote.<locals>.<lambda>] r1 r )r r �
ValueError�len�strip�
startswith�endswith�rer r
�pipes�quote)r �value� multiline� quot_funcs ` r �_quotezSysConf._quoteB sJ �� ��%��%�%� E��9�U�C�D�D�D��u�:�:��?�?��2�� ���8�z�!�!�e�B�i�:�&=�&=��5�z�z�Q���;�;�;�;� ��
�{�{�}�}�'�'��-�-�
0�%�+�+�-�-�2H�2H��2M�2M�
0���9�\�5�1�1� 0�/��6�6�
0� �9�Z��7�7� � G� G� G� G� &�I�
!H� G� G� G� &�I� %*�K� �� ��L��y����r c �� � | � | � |� � � � }| � | � |� � � � }| � |� � }|�|�d�|�|��S )N�=)�_decode_elementr> |