
    8j                     z   d 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  ej                  ej                  d        ej                  e      Z ee      j                  j                  Zedz  Z ed      Z ej&                  d	d
      dk(  Zd Zd ZddZd Zedk(  r ej2                   e              yy)u   
Hugo 博客自动构建和部署脚本

用途：
1. 构建 Hugo 静态站点
2. 复制到 Nginx 目录
3. 设置正确的文件权限

用法：
    python3 build_and_deploy.py [--dry-run]
    N)Path)datetimez)%(asctime)s - %(levelname)s - %(message)s)levelformatpublicz/usr/share/nginx/html/blogENVIRONMENTdevelopment
productionc                     	 t        j                  ddgddd      } | j                  dk(  r1t        j	                  d| j
                  j                                 yt        j                  d       y	# t        $ r t        j                  d
       Y y	t        $ r"}t        j                  d|        Y d}~y	d}~ww xY w)u   检查 Hugo 是否安装hugoversionT   )capture_outputtexttimeoutr   zHugo installed: zHugo not foundFzHHugo not installed. Please install Hugo: https://gohugo.io/installation/zError checking Hugo: N)

subprocessrun
returncodeloggerinfostdoutstriperrorFileNotFoundError	Exceptionresultes     /tmp/build_and_deploy.pycheck_hugo_installedr    &   s    Y	
 !KK*6==+>+>+@*ABCLL)* _` ,QC01s$   AA3 A3 3B=B=B88B=c                  
   	 t         j                  dt                t        j                  ddgt        t              ddd      } | j                  dk(  r5t         j                  d       t         j                  | j                         yt         j                  d	| j                          y
# t        j                  $ r t         j                  d       Y y
t        $ r"}t         j                  d|        Y d}~y
d}~ww xY w)u   构建 Hugo 站点zBuilding Hugo site at r   z--minifyT   )cwdr   r   r   r   zHugo build successfulzHugo build failed: FzHugo build timeout (>30s)zBuild error: N)r   r   BLOG_BASE_DIRr   r   strr   r   r   stderrTimeoutExpiredr   r   s     r   build_hugo_siter(   =   s    ,]O<=Z M"
 !KK/0KK&LL.v}}o>?$$ 01 }QC()s$   BB. "B. .(DD C==Dc                    t         st        j                  d       yt        j	                         st        j                  dt                y	 | r$t        j                  dt         dt                yt        j	                         r{t        j                  dt        j                         j                  d       z  }t        j                  d	|        t        j                  t        t              t        |             t        j                  d
t         dt                t        j                  t        t              t        t                     t        j                  d       t        j                   dddt        t              gdd       t        j                  dt                y# t"        $ r"}t        j                  d|        Y d}~yd}~ww xY w)u   部署到 Nginx 目录z3Development environment - skipping Nginx deploymentTzPublic directory not found: Fz[DRY RUN] Would deploy z to blog_backup_z%Y%m%d_%H%M%SzBacking up old blog to zCopying zSetting permissions (755)chmodz-R755
   )checkr   zDeployed successfully to zDeployment failed: N)IS_PRODUCTIONr   r   BLOG_PUBLIC_DIRexistsr   NGINX_BLOG_DIRparentr   nowstrftimeshutilmover%   copytreer   r   r   )dry_run
backup_dirr   s      r   deploy_to_nginxr;   Z   sk   IJ!!#3O3DEFKK1/1B$~FVWX   "'..<@W@WXg@h?i1jjJKK1*>?KKN+S_= 	h/tN3CDEO,c..AB 	/0dE3~#67	
 	//?@A *1#./s   %F2 5D<F2 2	G;GGc                     dt         j                  v } | rt        j                  d       t        j                  d       t        j                  d       t        j                  d       t        j                  dt        rdnd        t        j                  dt
                t        j                  d	t                t        j                  d
t                t        j                  d       t               st        j                  d       yt               st        j                  d       yt        |       st        j                  d       yt        j                  d       t        j                  d       t        rt        j                  d       nt        j                  d       t        j                  d       y)u	   主函数z	--dry-runzRunning in DRY RUN modez<============================================================zHugo Blog Build and DeployzEnvironment: r
   r	   zBlog directory: zPublic directory: zNginx directory: zHugo not installed - aborting   zBuild failed - abortingzDeployment failedu   ✅ All done!z"Visit https://fetchchina.com/blog/z$Run 'hugo server' to preview locallyr   )sysargvr   r   r/   r$   r0   r2   r    r   r(   r;   )r9   s    r   mainr@      s5   SXX%G-.
KK
KK,-
KK
KK-=QRS
KK"=/23
KK$_$567
KK#N#345
KK  !45 ./ 7#()
KK
KK 89:;
KK    __main__)F)__doc__osr>   r   r6   loggingpathlibr   r   basicConfigINFO	getLogger__name__r   __file__r3   r$   r0   r2   getenvr/   r    r(   r;   r@   exit rA   r   <module>rO      s   
 
 
        
,,6 
		8	$ X%%,,(*23 		-7<G.:&R'T zCHHTV rA   