o
    th~                     @   sh   d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZ e eZG dd dejZdS )    N)distroshelperssubputil)PackageList)HostnameConf)
PER_ALWAYSPER_INSTANCEc                   @   s   e Zd ZdZdZddgZdd Zddd	Zd
efddZ	dd Z
dd Zedd ZdddZdd ZdddZddddZdS )Distroz/etc/locale.genzen_US.UTF-8zC.UTF8 UTF-8zen_US.UTF-8 UTF-8c                 C   s>   t j| ||| t  rd| _nd| _t|| _d| _d S )Nz/etc/hostnamez/etc/conf.d/hostnamegentoo)	r   r
   __init__uses_systemdhostname_conf_fnr   Runners_runnerosfamily)selfnamecfgpaths r   :/usr/lib/python3/dist-packages/cloudinit/distros/gentoo.pyr      s   
zDistro.__init__Nc                 C   sF   t j| jd| jdd tjdgdd tjddd	| jgdd d
S )zLocales need to be added to /etc/locale.gen and generated prior
        to selection. Default to en_US.UTF-8 for simplicity.
        
i  )modez
locale-genFcaptureeselectlocalesetN)r   
write_filelocale_gen_fnjoinlocalesr   default_locale)r   _out_fnr   r   r   apply_locale+   s
   
zDistro.apply_localepkglistc                 C   s   |    | jd|d d S )N )pkgs)update_package_sourcespackage_command)r   r'   r   r   r   install_packages9   s   zDistro.install_packagesc                 C   s   d }z|  |}W n ty%   t| jdd}|rntd Y d S Y nw |s,td}t	 r6|
| n|
d|  t|t|d d S )Ncreate_hostname_fileTz8create_hostname_file is False; hostname file not createdr(   zhostname="%s"i  )_read_hostname_confIOErrorr   get_cfg_option_bool_cfgLOGinfor   r   r   set_hostnamer   str)r   hostnamefilenameconfr-   r   r   r   _write_hostname=   s*   zDistro._write_hostnamec                 C   s   |  | j}| j|fS N)_read_hostnamer   )r   sys_hostnamer   r   r   _read_system_hostname^   s   
zDistro._read_system_hostnamec                 C   s   t t| }|  |S r:   )r   r   load_text_fileparse)r7   r8   r   r   r   r.   b   s   zDistro._read_hostname_confc                 C   s8   d }z
|  |}|j}W n	 ty   Y nw |s|S |S r:   )r.   r6   r/   )r   r7   defaultr6   r8   r   r   r   r;   h   s   

zDistro._read_hostnamec                 C   s   t j|| |d d S )N)tztz_file)r   set_etc_timezone_find_tz_file)r   rA   r   r   r   set_timezones   s   zDistro.set_timezonec                 C   s   dg}| d |dkr|ddg n1|d u rg }|r't|tr'| | n|r3t|tr3|| |r:| | td|}|| tj|dd d S )	Nemergez--quietupgradez--updateworldz%s-%sFr   )appendextend
isinstancer5   listr   expand_package_listr   )r   commandargsr)   cmdr'   r   r   r   r+   v   s   



zDistro.package_commandF)forcec                C   s$   | j jd| jdg|rtntd d S )Nzupdate-sourcesz--sync)freq)r   runr+   r   r	   )r   rQ   r   r   r   r*      s   

zDistro.update_package_sourcesr:   )NN)__name__
__module____qualname__r    r#   r"   r   r&   r   r,   r9   r=   staticmethodr.   r;   rE   r+   r*   r   r   r   r   r
      s    
!


r
   )logging	cloudinitr   r   r   r   cloudinit.distrosr   "cloudinit.distros.parsers.hostnamer   cloudinit.settingsr   r	   	getLoggerrT   r2   r
   r   r   r   r   <module>   s   

