
    S`                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 ddZd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zy)    N   IS_WINDOWS_PLATFORMc                     t        |       j                         j                         }|dk(  s|dk(  ry|dk(  s|dk(  ry|dk(  r|S y)	z
    Prompt the user for a yes or no.

    Can optionally specify a default value, which will only be
    used if they enter a blank line.

    Unrecognised input (anything other than "y", "n", "yes",
    "no" or "") will return None.
    yyesTnnoF N)inputstriplower)promptdefaultanswers      3/usr/lib/python3/dist-packages/compose/cli/utils.pyyesnor      sN     6]  "((*F}%	3&D.	2    c                     t         j                  j                  |        t         j                  j                          t         j                  j                         j                  d      S )z
    Version of input (raw_input in Python 2) which forces a flush of sys.stdout
    to avoid problems where the prompt fails to appear due to line buffering
    
)sysstdoutwriteflushstdinreadlinerstrip)r   s    r   r   r   %   sD    
 JJVJJ99&&t,,r   c                      t        t        j                  d      5 }	 t        j                  | ||d|cddd       S # t
        $ r Y ddd       yw xY w# 1 sw Y   yxY w)zO
    Like subprocess.call(), but redirects stdout and stderr to /dev/null.
    w)r   stderrN   )openosdevnull
subprocesscallOSError)argskwargsshutups      r   call_silentlyr+   /   sh     
bjj#	 &	??DQ&Q   	  	 s&   A>	AAAAAc                  0    t        j                         dk(  S )NDarwin)platformsystem r   r   is_macr1   <   s    ??((r   c                  h    t        j                         dk(  xr t        j                         d   dk(  S )NLinuxr   Ubuntu)r.   r/   distrolinux_distributionr0   r   r   	is_ubuntur7   @   s,    ??'VF,E,E,G,Jh,VVr   c                      t         S Nr   r0   r   r   
is_windowsr:   D   s    r   c                 H   dj                  t        j                  t                     }| dk(  r|S | dk(  rUdj                  |t        j
                  t        j                         t        j                         t        j                        S t        dj                  |             )Nz#docker-compose version {}, build {}composefullz;{}
docker-py version: {}
{} version: {}
OpenSSL version: {}z{} is not a valid version scope)formatr<   __version__get_build_versiondockerversionr.   python_implementationpython_versionsslOPENSSL_VERSION
ValueError)scopeversioninfos     r   get_version_inforJ   H   s    7>>K 	" &NN**,##%!
	! 6==eD
EEr   c                  V   t         j                  j                  t         j                  j                  t        j
                        d      } t         j                  j                  |       syt        |       5 }|j                         j                         cd d d        S # 1 sw Y   y xY w)NGITSHAunknown)
r#   pathjoindirnamer<   __file__existsr"   readr   )filenamefhs     r   r@   r@   _   sj    ww||BGGOOG,<,<=xHH77>>(#	h !2wwy ! ! !s   7BB(c                  X    t               xr t        j                  j                  d      S )Nz/Applications/Docker.app)r1   r#   rN   isdirr0   r   r   is_docker_for_mac_installedrX   h   s    8A&@AAr   c                  R   dj                  t        j                        dj                  t        j                        g} 	 t	        j
                         }t	        j                         }| j                  dj                  ||             dj                  |       S # t        $ r Y w xY w)Nzdocker-compose/{}zdocker-py/{}z{}/{} )
r>   r<   r?   rA   r.   r/   releaseappendr'   rO   )partsp_system	p_releases      r   generate_user_agentr`   l   s    ""7#6#67f001E:??$$$&	 	W^^Hi8988E?	  s    (B 	B&%B&c                     g d}| rt        t        j                  | d            nd}|t        |      k\  rt        |      dz
  }dj	                  | t        d|dz        z  ||         S )N)BkBMBGBTBPBEBi  r   r!   z	{:.4g} {}
      )intmathloglenr>   pow)sizesuffixesorders      r   human_readable_file_sizers   {   sg    :H)-Ct$%1EHH!s2uqy!! r   c                     t        | t              s| S t        r	 | j                  d      S | j                  dd      S # t        $ r Y w xY w)Nzwindows-1250zutf-8replace)
isinstancebytesr   decodeUnicodeDecodeError)ss    r   binarystr_to_unicoder{      sO    a	88N++ 88GY'' " 		s   = 	A	A	r9   )rl   r#   r.   rE   r%   r   r5   rA   r<   constr   r   r   r+   r1   r7   r:   rJ   r@   rX   r`   rs   r{   r0   r   r   <module>r}      sb     	  
  
    ',-
)WF.!B		(r   