�
܍~c�4 � �� � d Z ddlZddlZddlZddlZddlmZ ej e� � Z ej
dddg� � Zd� Z G d� d e
� � Z dd
�Zdd�Zdd�Zd� Zdd�ZdS )z9Common utility functions for interacting with subprocess.� N)�ENOEXEC�
SubpResult�stdout�stderrc �~ � g }g }g }|D ]�}t |t � � r6|d �|dd� }n�|d | k r|� d| � � nft |t � � r.|� d| z � � s|� |� � n#|� t |� � � � ��|� |� � ��|r0t � d| | d� |� � � � |r7t d�
| d� |� � �� � � � �|S ) a� Ensure user-provided commands start with base_command; warn otherwise.
Each command is either a list or string. Perform the following:
- If the command is a list, pop the first element if it is None
- If the command is a list, insert base_command as the first element if
not present.
- When the command is a string not starting with 'base-command', warn.
Allow flexibility to provide non-base-command environment/config setup if
needed.
@commands: List of commands. Each command element is a list or string.
@return: List of 'fixed up' commands.
@raise: TypeError on invalid config item type.
r N� z%s z Non-%s commands in %s config:
%s�
zHInvalid {name} config. These commands are not a string or list:
{errors})�name�errors)�
isinstance�list�insert�str�
startswith�append�LOG�warning�join� TypeError�format)�base_command�commands�warningsr �fixed_commands�commands �0/usr/lib/python3/dist-packages/cloudinit/subp.py�prepend_base_commandr sl � �" |