
    uiR                        d Z ddlZddlZddlmZ ddlZddlmZm	Z	 i ddddd	d
ddddddddddddddddddddddd d!d"dd#d
dd$d%d&d'd(d)Z
d* Zd+ Zd, Zd- Zd. Zd/ Zd0 Zd1 Zed2k(  r e        yy)3za
PipMaster CLI: The Ultimate Python Package Warrior
Enhanced with ASCIIColors Rich UI Components
    N)Path)ASCIIColorsrichforgeu   🔨equipu   📦banishu   🗑️scoutu   🔍scanu   🛡️successu   ✅erroru   ❌warningu   ⚠️infou   ℹ️packagepythonu   🐍staru   ⭐rocketu   🚀sparklesu   ✨gearu   ⚙️shieldtrashu   ✓u   ✗u   ➜u   •u   🔥)magcheckcrossarrowbulletfirec           	      L   | dk(  s| t        j                         S t        |       }	 t        j                  t	        |            S # t
        $ rS}t        j                  dt        d    d|  d| dt        d    dd	d
       t        j                  d       Y d}~yd}~ww xY w)z;Helper to get the correct PackageManager based on env path..N)	venv_path
[bold red]r   z Failed to load environment at z:[/bold red]
 Error[/bold red]redroundtitleborder_stylebox   )pmget_pip_managerr   PackageManagerstr	Exceptionr   panelEMOJIsysexit)env_pathpathes      N/mnt/e/genesis-system/.venv/lib/python3.12/site-packages/pipmaster/cli/main.pyget_target_pmr6   (   s    3(*!!##>D	  3t955 w((GzQ_`a_bcuW~..?@		
 	s   A 	B#A	BB#c                      dt         d    dt         d    dt         d    d} t        j                  | dd	d
       t                y)z%Print the beautiful PipMaster header.[bold cyan]r   z\ PipMaster[/bold cyan] [dim]v1.1.0[/dim]
[white]The Ultimate Python Package Warrior[/white] r   z*
[dim]Your packages, your way, with style r   [/dim]	bold cyandoubler(      r&   r'   paddingN)r/   r   r.   print)header_contents    r5   print_headerrB   9   s_     eHo& '>>CFm_ M449*4E3Ff	N   	 
G    c                    dt         d    dt         d    d| j                   dt         d    d| j                   d	t         d
    d}t        j                  |dt         d    dddd       	 t        j
                  dt         d    d| j                   ddd      5 }t        j                  | j                  | j                        }|j                  dt         d    d| j                   d       ddd       dt         d    dt         d    dj                   d t         d    d!t         d"    
}t        j                  |dt         d    d#d$dd       | j                  rd%t         d    d&d'j                  | j                  D cg c]  }d(t         d)    d*| d+ c}      z   }t        j                  |dt         d    d,d-d.       t        j                  d/t         d
    d0      5 }t        | j                        }t        | j                  d1      D ]e  \  }	}|j                  t        j                   j#                  dt         d    d2|	 d3| d4| d5t         d
    
             d6dl}
|
j'                  d7       g |j                  t        j                   j#                  dt         d    d8             ddd       |j)                  | j                  d9:      }|sNt        j                  d;t         d<    d=t         d>    d?d;t         d@    dAdBdC.       t+        j,                  d1       t        j                  dt         d    dDt        | j                         dEd$dF       yy# 1 sw Y   yxY wc c}w # 1 sw Y   xY w# t.        $ r\}t        j                  d;t         d@    dG| dHt         d>    dId;t         d@    dJdKdCd       t+        j,                  d1       Y d}~yd}~ww xY w)Lz=Handle the 'forge' command (Create Env with specific Python).r8   r   z- Forging New Python Environment[/bold cyan]

r   z [bold]Version:[/bold] [green]z	[/green]
r   z [bold]Location:[/bold] [blue]z[/blue]
r   z6 [bold]Status:[/bold] [yellow]Initializing...[/yellow][bold]z FORGE[/bold]cyanr#   r<   r%   r&   r'   r?   r   z Summoning portable Python z...[/bold cyan]moonr:   spinnerspinner_style[bold green]r   z Python z ready![/bold green]Nr   z0 Environment Forged Successfully![/bold green]

z  [dim]Interpreter:[/dim] [white]z	[/white]
z4 [dim]Status:[/dim] [green]Ready for action[/green] r   z Success[/bold green]green[bold blue]z' Initial Package Manifest[/bold blue]


  r    [cyan][/cyan]z Packages[/bold]bluer$   [dim]z) Preparing installation sequence...[/dim]r(   z Installing /z:[/bold cyan] [white]z	[/white] r   g?z% All packages installed![/bold green]Fverboser    r   z, Failed to install some packages[/bold red]
r   z Check the logs for details.r   r!   r"   r;   z Installed z package(s)[/bold green]r&   r'   z Forge Failed[/bold red]

[red][/red]

[dim]z? Try a different Python version or check your connection.[/dim]z Critical Error[/bold red]bold red)r/   r   r3   r   r.   statusr)   get_pip_manager_for_versionupdatetarget_python_executablepackagesjoinlivelen	enumerater   Textfrom_markuptimesleepinstall_multipler0   r1   r-   )argsforge_contentr[   pm_instancesuccess_contentpkgpkg_contentra   totalirf   r   r4   s                r5   handle_forgerq   I   sG    eGn%%T?
9$++j
:499+Y=/O	Q  uW~&m4U%/**Edkk]Rab%
 	d 88diiPKMMLw(8Mabc	d 5+,,^X?@d@d?eeoW~RSXY_S`Rac 	 	 y!1 22GH 	
 == eI.//XY))RVR_R_`3r%/!2'#gF`ab 
 uY/00@A#	 !!f&OP DMM*'q9 $FAsKK		 5 5%eHo%6l1#Qug N""%if@! 
  JJsO$ DII11"5#3"44YZ " "224==%2PG!! w 00]V}o%AC&uW~&66GH!&   uY/0C<N;OOgh$Y /	d 	d6 a F  
w( )3 &M?"ac uW~..HI#	
 	
sZ   ,0N AM'0BN M4
AN *CM97B.N 'M1,N 9N>N 	O*AO%%O*c                    | j                   dk(  rdn| j                   }| j                  D cg c]  }t        d    d| ddg }}t        j                  t        d    dt        d    d	|d
| dddd      }t        j
                  dt        d    dddd       t        j                  |       | j                  r#t        j
                  dt        d    ddd       t        | j                         }t        j                  dt        d    dt        | j                         d| ddd !      5 }|j                  | j                  | j                  d"#      }|r|j                  dt        d$    d%       d&d&d&       r]dt        d'    d(t        d    d)t        | j                         d*t        d+    d,	}t        j
                  |dt        d$    d-ddd./       y&t        j
                  d0t        d1    d2t        d3    d4t        d5    d6t        d5    d7t        d5    d8d0t        d9    d:d;d<=       t        j                  d>       y&c c}w # 1 sw Y   xY w)?z%Handle the 'equip' command (Install).r   current environmentr   rQ   rR   z[green]Install/Update[/green]z Packager   z Actionz[dim]Target: r9   r#   TrF   )rowsr%   r'   
show_linesr&   rL   r   u/    EQUIP — Arming Your Environment[/bold green]rM   )r   r=   r>   [bold yellow]r   uR    Dry Run Mode[/bold yellow]
[dim]No changes will be made — simulation only[/dim]yellowrX   r   z Equipping z package(s) into z...[/bold green]r   z
bold greenrI   F)dry_runrW   r   z$ Installation complete![/bold green]Nr   z& Successfully Equipped![/bold green]

z [white]z%[/white] package(s) ready for action
r   z' Your environment is now more powerful!z Complete[/bold green]r<   rG   r    r   z0 Failed to equip some packages[/bold red]

[dim]r   z/ Check logs for details. Common fixes:[/dim]
  r   z" Check your internet connection
  z$ Verify package names are correct
  z$ Try with --verbose for more detailsr   r!   r"   r;   r$   r(   )envr_   r/   r   tabler.   r   r@   rx   r6   r[   rb   rh   r]   r0   r1   )	ri   	env_labelrm   pkg_rows	pkg_tablemanagerr[   r   rl   s	            r5   handle_equipr      s   )-S%dhhI  ==* )$%WSE9;Z[ *H * !!
H%%-'@i[/I 
uW~&&UV	 	JJy||E),- .E F!		
 DHH%G 
		
uX'{3t}}3E2FFWXaWbbrs"
 _ 
**MMLL + 

 MMLw(88\]^_  5+,,TY T]]);(<<bZ !!HJ 	 	 w 00FG 	
 	w( )&M? #x! "x! "x!!E	G
 uW~..?@		
 	O*@_ _s   I3AIIc           
      b   | j                   dk(  rdn| j                   }dj                  | j                  D cg c]  }dt        d    d| d c}      }dt        d	    d
| d| dt        d    d	}t	        j
                  |dt        d    dddd       t        | j                         }t	        j                  dt        d    ddd      5 }|j                  | j                  d      }|r|j                  dt        d    d       ddd       rFt	        j
                  dt        d    dt        | j                         d dt        d    d!d"d#$       yt	        j
                  dt        d    d%dt        d&    d'd(d#$       t        j                  d)       yc c}w # 1 sw Y   xY w)*z(Handle the 'banish' command (Uninstall).r   rs   rO   rP   r   z [red]z[/red]r    r   u{    BANISH — Package Removal[/bold red]

The following packages will be [bold red]permanently removed[/bold red] from:
[dim]z[/dim]

z


[yellow]r   z' This action cannot be undone.[/yellow]z Confirm Removal[/bold red]rZ   r;   r<   rG   r   z! Banishing packages...[/bold red]pulserI   FrV   rL   r   z" Banishment complete![/bold green]Nr   z, Successfully Banished[/bold green]

[white]z,[/white] package(s) removed from your realm.z Banished[/bold green]rM   r#   r$   z* Failed to banish some packages[/bold red]r   r!   r"   r(   )ry   r`   r_   r/   r   r.   r6   r[   uninstall_multipler]   rb   r0   r1   )ri   r{   rm   pkg_listbanish_contentr~   r[   r   s           r5   handle_banishr      s   )-S%dhhI yyDMMZSBuW~.fSE@Z[H U8_% &{** #$$K		M  5+,,GH DHH%G 
		
U7^$$EF 
 
] 
,,MM - 
 MMLw(88Z[\
] 5+, -$--())UW w 00FG 	
 	w((RSuW~..?@		
 	a [*
] 
]s   F <F%%F.c                    t        | j                        }t        j                  dt        d    d| j
                   dddd       |j                  | j
                        sTt        j                  d	| j
                   d
t        d    dt        d    d| j
                   d	dt        d    ddd       y|j                  | j
                        }|j                  | j
                        }|rR|j                         j                  d      D cg c]&  }|j                         rd|v r|j                         ( }}g }g d}|D ]j  }|D ]c  }|j                  |dz         s|j                  dd      \  }	}
|j                  dt        d    d|	 dd|
j                         dd  d g        j l |D ]W  }d|v s|j                  dd      \  }	}
|	|vs"|j                  d!t        d    d|	 d"d!|
j                         dd#  d$g       Y t        j                  t        d%    d&t        d    d'|dd( dd)d*+      }nd!t        d    d,}t        j                  |d-t        d.    d| j
                   d/| d0d1dd2       yc c}w )3z"Handle the 'scout' command (Info).rN   r	   uC    SCOUT — Reconnaissance Mission[/bold blue]
Investigating: [cyan]rR   rS   r#   r<   r>   zPackage '[bold]z/[/bold]' is [bold red]NOT installed[/bold red] r   z

[dim]r   z Use 'pipmaster equip z' to install it.[/dim]r    r   z Not Found[/bold red]r"   r$   NrO   :)NameVersionSummaryz	Home-pageAuthorLicenseLocationRequiresr(   r8   r    z:[/bold cyan]z[white]<   z[/white]rT   z:[/dim]2   r9   r   z	 Propertyz Value   FrF   )rt   r'   ru   r&   z) No detailed intelligence available[/dim]rL   r   z vz[/bold green]rM   rG   )r6   ry   r   r.   r/   r   is_installedget_installed_versionget_package_infostripsplit
startswithappendrz   )ri   r~   versionr   line
info_lines	info_rowspriority_fieldsfieldkeyval
info_tables               r5   handle_scoutr   7  s   DHH%G 
eGn% &  $~W	6 -dll^+Z[`ah[iZj k&M?"8F\^uW~..CD	
 	++DLL9G##DLL1D /3zz|/A/A$/G 6t

 jjl 6
 6	= % 	E" ??53;/#zz#q1HC$$%eHo%6auMJ!#))+cr"2!38<&  	  	Dd{::c1-So-$$h0#g>		CR 018& 		 !&&U|nI&5=/(@3B

 U6]O+TU
 U9-.a~RyVO6s   +Jc                 "   t        | j                        }t        j                  dt        d    dt        d    dddd	       t        j
                  dt        d    d
dd      5 }|j                         \  }}|s|j                  dt        d    d       ddd       rj                  d      dd }t        j                  dt        d    dt        d      j                  |       dt        d    dt        d    dt        d    dt        d    ddt        d    dd d!d"       t        j                  d#       yt        j                  dt        d$    d%t        d    d&t        d'    d(dt        d    d)d*dd"       y# 1 sw Y   xY w)+z,Handle the 'scan' command (Vulnerabilities).rv   r
   z SECURITY SCAN[/bold yellow]
r   z5 Scanning for vulnerabilities and security threats...rw   r#   r<   r>   z, Analyzing package security...[/bold yellow]r   zbold yellowrI   rL   r   u*    Scan complete — all clear![/bold green]NrO      r    r   z, VULNERABILITIES DETECTED![/bold red]

[dim]
   z[/dim]

[bold red]r   z, Immediate action recommended:[/bold red]
  r   zG Update affected packages with 'pipmaster equip <package> --upgrade'
  z% Review the full security advisory
  z. Consider alternative packages if unmaintainedz Security Alert[/bold red]rZ   r;   rG   r(   r   z( No Vulnerabilities Found[/bold green]

z0 Your environment is secure and protected.
[dim]r   z7 Keep your packages updated for continued safety.[/dim]z Secure[/bold green]rM   )r6   ry   r   r.   r/   r[   check_vulnerabilitiesr]   r   chrr`   r0   r1   )ri   r~   r[   foundreportreport_liness         r5   handle_scanr     s   DHH%G 
f&D?
P	R 
		
h((TU#
 e 
557vMMLw(88bcde ||D)#2.y)* +GLL./ 0"6]O ,x! "x! "x!!OQ uX//IJ#	
 	5+,,VX  *%&&]_ !x 11EF 	
7e es   '2FFc                  Z   t        j                  ddt         j                  t        d    dt        d    dt        d    dt        d	    d
t        d    dt        d    d      } | j	                  dd      }|j                  dt        d    d      }|j                  dddd       |j                  dddd       |j                  dddd !       |j                  dt        d    d"      }|j                  d#d$d%!       |j                  d&d'd(d)*       |j                  d+d,d-.       |j                  d	t        d	    d/      }|j                  d#d$d0!       |j                  d&d'd(d)*       |j                  dt        d    d1      }|j                  d2d3       |j                  d&d'd(d)*       |j                  dt        d    d4      }|j                  d&d'd(d)*       | j                         }t                |j                  skd5t        d    d6t        d    d7t        d	    d8t        d    d9t        d    d:}t        j                  |d;t        d<    d=d>d?d@A       | j                          y 	 |j                  dk(  rt        |       y |j                  dk(  rt        |       y |j                  d	k(  rt        |       y |j                  dk(  rt!        |       y |j                  dk(  rt#        |       y y # t$        $ r; t        j                  dBt        dC    dDdEd?F       t'        j(                  dG       Y y t*        $ r[}	t        j                  dHt        dI    dJ|	 dKt        d<    dLdHt        dM    dNdOdPQ       t'        j(                  dR       Y d }	~	y d }	~	ww xY w)SNz2PipMaster CLI: The Ultimate Python Package Warrior	pipmasterr   z Examples:
  r   z6 pipmaster forge -p 3.12 -d ./myenv -k numpy pandas
  r   z- pipmaster equip requests flask -e ./myenv
  r   z+ pipmaster banish old-package -e ./myenv
  r	   z pipmaster scout requests
  r
   z pipmaster scan -e ./myenv)descriptionprogformatter_classepilogcommandzChoose your action)desthelpz8 Create a new environment with a specific Python version)r   z-pz--pythonTz'Target Python version (e.g. 3.10, 3.12))requiredr   z-dz--pathz$Destination path for the environmentz-kz
--packages*zInitial packages to install)nargsr   z% Install packages into an environmentr_   +zPackages to installz-ez--envr   z&Path to environment (default: current))defaultr   z	--dry-run
store_truezSimulate execution)actionr   z' Uninstall packages from an environmentzPackages to uninstallz$ Get info about an installed packager   zPackage namez" Scan for security vulnerabilitiesz$[bold]Available Commands:[/bold]

  u:    [cyan]forge[/cyan]   — Create new Python environment
  u/    [green]equip[/green]   — Install packages
  u-    [red]banish[/red]  — Uninstall packages
  u0    [blue]scout[/blue]   — Package information
  us    [yellow]scan[/yellow]    — Security vulnerability scan

[dim]Use --help with any command for more details.[/dim]rE   r   z Commands[/bold]rF   r#   r<   rG   rv   r   zX Interrupted by user[/bold yellow]
[dim]Operation cancelled. No changes were made.[/dim]rw   rX      r    r   z# Unexpected Error[/bold red]

[red]rY   z7 Please report this issue with the error details.[/dim]r   z Fatal Error[/bold red]rZ   r;   r$   r(   )argparseArgumentParserRawTextHelpFormatterr/   add_subparsers
add_parseradd_argument
parse_argsrB   r   r   r.   
print_helprq   r   r   r   r   KeyboardInterruptr0   r1   r-   )
parser
subparsersp_forgep_equipp_banishp_scoutp_scanri   commands_showcaser4   s
             r5   mainr     so   $$H 55*%& '> > ? > =/+/	
F &&I<P&QJ ##gWX $ G zDF  Hx$C  E|3:  < ##gDE $ G 35JKwE  G\1  3 $$h  GH % H *C6MN$F  H ##gCD $ G 8wE  G ""f@A # F gsD  F D N<<w  !w  !x! "w  !v  GH 	 	5=/)9:	
 	<<7"\\W$\\X%$\\W$\\V# $ E),- .D E!		
 	 	w( )3 &M?"Y[ uW~..EF#	
 		s8   <L L 2L L (L AN*N*AN%%N*__main__)__doc__r   r0   pathlibr   r   r)   ascii_colorsr   r   r/   r6   rB   rq   r   r   r   r   r   __name__ rC   r5   <module>r      sI  
  
   *	V	V	 i	 V		
 I	 u	 U	 x	 H	 v	 f	 E	 f	 	 H	  i!	" Y#	$ /	4" gRL\5nIV1
fxt zF rC   