name : make_mime.cpython-39.pyc
a

'�DgZ�@s�dZddlZddlZddlZddlmZddlmZddlm	Z	dZ
e�e�Z
dZdd	�Zd
d�Zddd
�Zddd�Zdd�Zdd�Zedkr�e�e��dS)z0Generate multi-part mime messages for user-data.�N)�
MIMEMultipart)�MIMEText)�INCLUSION_TYPES_MAPz	make-mimezUExample: make-mime -a config.yaml:cloud-config -a script.sh:x-shellscript > user-datacCs�g}g}t|�D]p\}\}}}|��}t||t���}|�dd|�|����}	|	t�vrvd|	|df}
|�	|
�|�	|�qt
�}|D]}
|�|
�q�||fS)NzContent-Dispositionzattachment; filename="%s"z3content type %r for attachment %s may be incorrect!�)�	enumerate�readr�sys�getdefaultencodingZ
add_headerZget_content_type�lower�get_content_types�appendrZattach)�filesZsub_messages�errors�iZfh�filenameZformat_type�contentsZsub_message�content_type�msg�combined_message�r�A/usr/lib/python3.9/site-packages/cloudinit/cmd/devel/make_mime.py�create_mime_messages(�
�
rc
Csbz&|�dd�\}}t|d�||��fWSty\}zt�|d|�|�WYd}~n
d}~00dS)z@Return file content type by reading the first line of the input.�:r�rzInvalid value for %rN)�split�open�strip�
ValueError�argparse�
ArgumentError)�textrr�errr�file_content_type.s��r"c
Cs^|st��}t|_t|_|jdddtdgddd�|jdd	d
ddd
�|jddd
ddd
�|S)aBuild or extend and arg parser for make-mime utility.

    @param parser: Optional existing ArgumentParser instance representing the
        subcommand which will be extended to support the args of this utility.

    @returns: ArgumentParser with proper argument configuration.
    z-az--attachr
rz<file>:<content-type>z3attach the given file as the specified content-type)�dest�type�action�default�metavar�helpz-lz--list-types�
store_trueFz&List support cloud-init content types.)r%r&r(z-fz--forcez$Ignore unknown content-type warnings)r�ArgumentParser�__doc__�description�EPILOG�epilog�add_argumentr")�parserrrr�
get_parser9s:�
��r1Fcst�fdd�t��D��S)z�Return a list of cloud-init supported content types.  Optionally
    strip out the leading 'text/' of the type if strip_prefix=True.
    cs g|]}�r|�dd�n|�qS)ztext/�)�replace)�.0Zctype�Zstrip_prefixrr�
<listcomp>fs�z%get_content_types.<locals>.<listcomp>)�sortedr�valuesr5rr5rras

��rcCs�|jrtd�tdd���dSt|j�\}}|rv|jr:dnd}|D]}tj�	|�d|�d��qBtj�	d�|jsvd	St|�dS)
a<Create a multi-part MIME archive for use as user-data.  Optionally
       print out the list of supported content types of cloud-init.

    Also setup CLI log handlers to report to stderr since this is a development
    utility which should be run by a human on the CLI.

    @return 0 on success, 1 on failure.
    �
Tr5rZWARNINGZERRORz: z-Invalid content-types, override with --force
r)
Z
list_types�print�joinrrr
�forcer�stderr�write)�name�argsrr�level�errorrrr�handle_argsms	rCcCst���}tt|�S)N)r1�
parse_argsrC�NAME)r@rrr�main�s
rF�__main__)N)F)r+rZloggingrZemail.mime.multipartrZemail.mime.textrZcloudinit.handlersrrEZ	getLogger�__name__ZLOGr-rr"r1rrCrF�exitrrrr�<module>s$
�
(


© 2025 Cubjrnet7