HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/cmd/devel/__pycache__/make_mime.cpython-310.pyc
o

�Ad��@s�dZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZdZ
e�e
�Zd	Zd
d�Zdd
�Zddd�Zddd�Zdd�Zdd�ZedkrWe�e��dSdS)z0Generate multi-part mime messages for user-data.�N)�
MIMEMultipart)�MIMEText)�log)�addLogHandlerCLI)�INCLUSION_TYPES_MAPz	make-mimezUExample: make-mime -a config.yaml:cloud-config -a script.sh:x-shellscript > user-datacCs�g}g}t|�D]8\}\}}}|��}t||t���}|�dd|�|����}	|	t�vr;d|	|df}
|�	|
�|�	|�qt
�}|D]}
|�|
�qF||fS)NzContent-Dispositionzattachment; filename="%s"z3content type %r for attachment %s may be incorrect!�)�	enumerate�readr�sys�getdefaultencoding�
add_header�get_content_type�lower�get_content_types�appendr�attach)�files�sub_messages�errors�i�fh�filename�format_type�contents�sub_message�content_type�msg�combined_message�r�?/usr/lib/python3/dist-packages/cloudinit/cmd/devel/make_mime.py�create_mime_messages&�

�
r c
CsRz|�dd�\}}t|d�||��fWSty(}z	t�|d|�|�d}~ww)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^|st��}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--attachrrz<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/r1z-fz--forcez$Ignore unknown content-type warnings)r'�ArgumentParser�__doc__�description�EPILOG�epilog�add_argumentr+)�parserrrr�
get_parser9s:�
��r:Fcst�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)�.0�ctype��strip_prefixrr�
<listcomp>fs��z%get_content_types.<locals>.<listcomp>)�sortedr�valuesr?rr?rras

��rcCs�tt|jrtjntj�|jrtd�t	dd���dSt
|j�\}}|rG|jr)dnd}|D]}t
j�|�d|�d��q-t
j�d�|jsGd	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.
    �
Tr?r�WARNING�ERRORz: z-Invalid content-types, override with --force
r)r�LOG�debugr�DEBUGrE�
list_types�print�joinrr r�forcer
�stderr�write)�name�argsrr�level�errorrrr�handle_argsms	rTcCst���}tt|�S�N)r:�
parse_argsrT�NAME)rQrrr�main�s

rX�__main__rU)F)r4r'r
�email.mime.multipartr�email.mime.textr�	cloudinitr�cloudinit.cmd.develr�cloudinit.handlersrrW�	getLoggerrGr6r r+r:rrTrX�__name__�exitrrrr�<module>s*
�

(�