
    ,j                         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l	m	Z	 d dl
Z
d dlmZ d Zd Zddedee   d	ee   fd
Zddedee   fdZd Zd Zd Zd Zd Zy)    N)Logger)tqdm)Optionalc            	         d} t         j                  j                  dd       Tt         j                  j	                  ddt         j                  j                  dt         j                  d         ddd	      } n2t         j                  j	                  t         j                  d   dd	      } t         j                  j                  |       st        j                  |        | S )
N XDG_CACHE_HOME/home	SUDO_USERUSERz.cachezwaydroid-script	downloads)osenvirongetpathjoinexistsmakedirs)download_locs    ,/home/ubuntu/waydroid_script/tools/helper.pyget_download_dirr      s    L	zz~~&-5ww||CF+2-.68I;
 ww||JJ'(*;[
 77>>,'
L!    c            	          t         j                  j                  ddt         j                  j	                  dt         j                  d         dddd      S )	Nr	   r
   r   r   z.localsharewaydroiddata)r   r   r   r   r    r   r   get_data_dirr      s=    77<<VRZZ^^KFAS%TV^`gisu{||r   argsenvignorec                    t        j                  | |t         j                  t         j                        }|j                  r|j                  j	                  d      }|rt        j                  ||      r|S t        j                  |       t        j                  |j                  |j                  |j                        |S )N)r   r    stdoutstderrutf-8
returncodecmdr$   )
subprocessrunPIPEr$   decoderematchr   errorCalledProcessErrorr'   r   )r   r    r!   resultr/   s        r   r*   r*   "   s    ^^	F }}$$W-bhhvu-MU++((==
 	

 Mr   argc                    t        j                  g dt         j                  t         j                  t         j                        }t        j                  ddg|j                  t         j                        j	                          |r@t        j                  d|g|j                  t         j                        j	                          t        j                  d| g|j                  t         j                        j	                          |j                  j                          |j                  j                         rrt        j                  |j                  j                         j                  d             t        j                  |j                  |j                  |j                        |j                  j                         j                  d      S )N)sudor   shell)r   stdinr#   r$   echoa  export BOOTCLASSPATH=/apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jar)r   r#   r6   r%   r&   )r)   Popenr+   r6   communicatecloser$   readr   r/   r,   r0   r'   r   r#   )r2   r    as      r   r5   r5   8   s;   *oo		A   b  cwwoo km
#77//	
 +-c]wwoo kmGGMMOxx}}QXX]]_++G45++||88
 	

 88==?!!'**r   c                 n   d}t        j                  | d      }t        |j                  j                  dd            }d}t	        |dd      }t        |d	      5 }|j                  |      D ]-  }|j                  t        |             |j                  |       / 	 d d d        |j                          t        |d
      5 }	|	j                         }
t        j                  |
      j                         }d d d        |dk7  r|j                  |k7  rt!        d      |S # 1 sw Y   xY w# 1 sw Y   6xY w)Nr   T)streamzcontent-lengthr   i   iB)totalunit
unit_scalewbrbz&Something went wrong while downloading)requestsr   intheadersr   openiter_contentupdatelenwriter:   r;   hashlibmd5	hexdigestn
ValueError)urlf_namerN   responsetotal_size_in_bytes
block_sizeprogress_barfiler   fbytess              r   download_filer[   \   s   
C||C-Hh..223CQGHJ1NL	fd	 t))*5 	DD	*JJt	 	fd	 -qkk% **,- aLNN6I$IABBJ 
- -s   AD4D+D(+D4c                  4   t        j                         } dddddd}| |v rX||    dk(  rKt        d      5 }d|j                         vrt	        j
                  d	       	 d d d        y	 d d d        ||    S ||    S t        d
| z   dz         # 1 sw Y   ||    S xY w)N)x86    )x86_64@   )z	arm64-v8ar`   )zarmeabi-v7ar^   )i686r_   aarch64armv7larmv8lr_   z/proc/cpuinfosse4_2z:x86_64 CPU does not support SSE4.2, falling back to x86...zplatform.machine 'z' architecture is not supported)platformmachinerH   r;   r   warningrQ   )rg   mappingrY   s      r   hostrj   n   s     G  $%%G '7x'o& '!1668+NN#_`&' '+' www
)G3 76 6 7 7' ws   )B

Bc                      t        j                         dk7  r+t        j                  d       t	        j
                  d       y y )Nr   z*This script must be run as root. Aborting.   )r   geteuidr   r/   sysexitr   r   r   
check_rootrp      s-    	zz|qAB r   c                     | dz   }t        j                  |d      5 }t        | d      5 }|j                  |j                                d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N.gzrC   rD   )gziprH   rL   r;   r   gz_filenamef_gzrY   s       r   backuprw      sh    u*K	;	% !$ 	!JJqvvx 	!! !	! 	!! !s"   A& A	A&A#	A&&A/c                     | dz   }t        j                  |      5 }t        | d      5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrr   rC   )rs   GzipFilerH   
writelinesrt   s       r   restorer{      s`    u*K	{	# t$ 	LL	 	 	 s!   AAAA	AA )NN)N)rs   r   r-   rf   r)   rn   rE   tools.loggerr   r   rM   typingr   r   r   liststrr*   r5   r[   rj   rp   rw   r{   r   r   r   <module>r      s     	 	  	  
     }d # x} ,"+s "+# "+H$7*
!r   