o
    f                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZ dZe jZeeZdddZdd	d
Zdd ZedkrNeeee   dS dS )z,Debug jinja template rendering of user-data.    N)read_cfg_paths)JinjaLoadErrorJinjaSyntaxParsingExceptionNotJinjaErrorrender_jinja_payload_from_filerenderc                 C   sR   | s	t jttd} | jdtdd | jddtdt d | jdd	d
ddd | S )a  Build or extend and arg parser for jinja render 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.
    )progdescription	user_dataz$Path to the user-data file to render)typehelpz-iz--instance-dataz6Optional path to instance-data.json file. Defaults to z-dz--debug
store_trueFz+Add verbose messages during template render)actiondefaultr   )argparseArgumentParserNAME__doc__add_argumentstrCLOUDINIT_RUN_DIR)parser r   </usr/lib/python3/dist-packages/cloudinit/cmd/devel/render.py
get_parser   s*   	r   Fc              
   C   s|  |r|}n't  }t }|d}|dkr*|d}tj|s)td|| |}n|}tj|s:td| dS zt	| }|
 }W d   n1 sNw   Y  W n tyd   td|  Y dS w zt|| ||rnd	nd
d}	W n8 ttfy }
 ztdt|
 W Y d}
~
dS d}
~
w ty }
 ztd| t|
 W Y d}
~
dS d}
~
ww |	std|  dS tj|	 dS )zRender the provided user-data template file using instance-data values.

    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.
    instance_datar   instance_data_sensitivez4Missing root-readable %s. Using redacted %s instead.z#Missing instance-data.json file: %s   NzMissing user-data file: %sTF)payload
payload_fninstance_data_filedebugz5Cannot render from instance data due to exception: %sz2Failed to render templated user-data file '%s'. %sz#Unable to render user-data file: %s)r   osgetuidget_runpathpathexistsLOGwarningerroropenreadIOErrorr   r   r   reprr   r   sysstdoutwrite)user_data_pathinstance_data_pathr!   instance_data_fnpathsuidredacted_data_fnstreamr
   rendered_payloader   r   r   render_template:   sn   





r:   c                 C   s   t |j|j|jS N)r:   r
   r   r!   )_nameargsr   r   r   handle_argsv   s   r>   __main__r;   )NF)r   r   loggingr"   r.   cloudinit.cmd.develr   !cloudinit.handlers.jinja_templater   r   r   r   r   run_dirr   	getLogger__name__r'   r   r:   r>   exit
parse_argsr   r   r   r   <module>   s    


 <