7h SrSSKJr SSKJr SSKJrJr SSKrSSK r SSK r SSK J r SSK r SSKr\"SS55r"S S 5rS \4S jrg) z&fixperms sys.argv cli argument parsing) dataclass)Logger)ArgumentParserArgumentTypeErrorN)Literalc|\rSrSr%Sr\S\S'\\\S'\\\S'\ \S'\ \S'\ \S '\ \S '\ \S 'S r g )Argsz3Dataclass for more strict type hints for parse_args)CWPcPanelWP3roleusersskipnoopprocs skip_mail preserve_execloggerN) __name__ __module__ __qualname____firstlineno____doc__r__annotations__setstrboolintr__static_attributes__r!/usr/lib/fixperms/fixperms_cli.pyr r s== ( )) s8O c(N J JO Nr"r c\rSrSrSrS SjrS\S\4Sjr\S\S\4Sj5r \S\S\4S j5r \S\S\ 4S j5r S r g) ArgValidatorzValidates custom argsreturnNc[5Ul[R(a3SUl[R "5UlUR Ulg[R(aSUlURUlg[RRS5(aSUlURUlg[R "S5 g)Nr r z!/etc/ansible/wordpress-ultrastackr z.fixperms requires a cPanel, CWP, or WP3 server)r_all_cwp_userscwpHAS_CWPr all_users _cwp_useruserrads HAS_CPANEL _cpanel_userospathexists _wp3_usersysexit)selfs r#__init__ArgValidator.__init__s!e ;;DI"%--/D DI __ DI))DI WW^^? @ @DIDI HHE Fr"valc@XR;aU$[US35e)Nz is not a valid CWP user)r)r)r8r;s r#r-ArgValidator._cwp_user.s& %% %J3%'? @AAr"cX[R"U5(aU$[US35e)Nz is not a valid cPanel user)r/ is_cpuserrr;s r#r1ArgValidator._cpanel_user3s) >>#  J3%'B CDDr"c|US:Xa[R"U5 U$[US35e![a Nf=f)N wordpressz is not a valid WP3 user)pwdgetpwnamKeyErrorrr@s r#r5ArgValidator._wp3_user9sI +   S!  3%'? @AA  s . ;;cD[U5nUS:aU$[US35e)zTest an arg is an int >= 1z must be >= 1)r rr@s r#positiveArgValidator.positiveCs+#h !8J3%} 566r")r)rr.)r'N)rrrrrr9rr- staticmethodr1r5r rJr!rr"r#r%r%s GBSBSB E#E#EE BsBsBB7c7c77r"r%r'c [5n[SURS3S9nUR5nUR SSUR SSSS 9 UR S S S S S9 UR SSS SS9 UR SSS SS9 UR S[ RRSS/SS9 UR SSSSS9 URS:waUR S S S!S9 UR S"SS#URS$S%9 UR5nUR(aS&nOUR(aS'nOS(n[R"U5n[UR[!UR"5[!UR$5UR&UR(URS:wa UR*OS)UR,US*9$)+zParse sys.argvz'Safely corrects permission issues on a z user) descriptionz-pz--procsNUMzHmax users to process at once, if multiple were requested (defaults to 4))typedefaultmetavarhelpz-vz --verbose store_truez/show verbose output of every permissions change)actionrTz-qz--quietzhide all output but errorsz-nz--noopz0Test mode; Make no actual changes to the accountz--skipPATH+zbpath(s) to skip changing permissions on. If you want to skip etc and mail, use --skip-mail instead)rQrSnargsrRrTz--no-preserve-execr store_falsez'Don't preserve the execute bit on files)destrVrTr z --skip-mailz;Do not run mailperm to fix permissions on etc and mail dirsrUSERzcPanel user(s))rYrSrQrTDEBUGERRORINFOT)rrrrrrrr)r%rradd_mutually_exclusive_group add_argumentrJr2r3realpathr. parse_argsverbosequietr/setup_verbosityr rrrrrrr) custom_argsparsergroupargsloglevelrs r#rcrcLs.K =    E#F  / / 1E  ik22Au   k, >  i 3O  h| ? rww''sBD  ?= 65  ,N            D ||   ! !( +F    $**o ^ YYjj$/$4$4$=$..4((  r")r dataclassesrloggingrargparserrr2rDr6typingrr/r*r r%rcrr"r#rpsU,!6       -7-7`@D@r"