PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/usr/share/zsh/5.5.1/functions/
Upload File :
Current File : //usr/share/zsh/5.5.1/functions/_baz
#compdef baz

autoload -z is-at-least
local BAZ=$words[1]
local baz_version
local hide_short

# ask the user which version of baz this is
if ! zstyle -s ":completion:${curcontext}:" baz-version baz_version; then
  # ask baz instead
  baz_version="${${$($BAZ --version)#baz Bazaar version }%% \(thelove@canonical.com*}"
fi

# test whether to hide short options from completion
if zstyle -s ":completion:${curcontext}:" hide-shortopts hide_short; then
  case $hide_short in
    true|yes|on|1) hide_short='!' ;;
    *) hide_short='' ;;
  esac
fi

# completion functions
(( $+functions[_baz_archives] )) ||
_baz_archives () { _arch_archives baz "$@" }

(( $+functions[_baz_categories] )) ||
_baz_categories () { _arch_namespace baz 1 "$argv[@]" }

(( $+functions[_baz_branches] )) ||
_baz_branches () { _arch_namespace baz 2 "$argv[@]" }

(( $+functions[_baz_versions] )) ||
_baz_versions () { _arch_namespace baz 3 "$argv[@]" }

(( $+functions[_baz_revisions] )) ||
_baz_revisions () { _arch_namespace baz 4 "$argv[@]" }

(( $+functions[_baz_local_revisions] )) ||
_baz_local_revisions () {
  local expl1 expl2 tree_version=`$BAZ tree-version`
  _description -V applied-patches expl1 "patches from this version"
  _description -V other-patches expl2 "patches from other versions"
  compadd "$expl1[@]" `$BAZ logs`
  compadd "$expl2[@]" `$BAZ logs --full $($BAZ log-versions | grep -v $tree_version)`
  # This is incredibly slow.
  # Should complete based on -A, -R, -d
}

(( $+functions[_baz_config] )) ||
_baz_config () {
  local configdir root ret=1 n expl

  n=$opt_args[(i)(-d|--dir)]
  [[ -n "$n" ]] && configdir=$opt_args[$n]
  root="$(_call_program baz $BAZ tree-root ${configdir} 2>&1)"
  if (( $? )); then
    if [[ -d "configs" ]]; then
      root=.
    else
      _message -e messages "Error: $root"
      return $ret
    fi
  fi

  if [[ -d "$root/configs" ]]; then
    configdir=("$root/configs")
    _description files expl '%Bconfig file%b'
    _files -W configdir "$expl[@]" && ret=0
  else
    _message -e messages "No configs/ directory in tree whose root is $root"
  fi
  return $ret
}

(( $+functions[_baz_limit] )) ||
_baz_limit () { #presently only does push-mirror style limits
  [[ $words[$CURRENT] == *@* ]] && return 1

  local expl archive
  archive=${words[(r)*@*]:-$($BAZ my-default-archive 2> /dev/null)}
  if [ $archive ]; then

    if [[ $PREFIX != *--* ]]; then
      _description -V categories expl "categories in $archive"
      compadd -q -S -- "$expl[@]" `$BAZ categories $archive`
    else
      _baz_namespace_branches 3
    fi
  fi
}

(( $+functions[_baz_tree_or_rev] )) ||
_baz_tree_or_rev () {
  _alternative 'trees:tree:_files -/' 'revisions:revision:_baz_revisions'
}

(( $+functions[_baz_libraries] )) ||
_baz_libraries () {
  local libraries expl
  libraries=($(_call_program baz $BAZ my-revision-library))
  _description -V libraries expl "revision libraries"
  compadd "$expl[@]" -a libraries
}

(( $+functions[_baz_my_revision_library] )) ||
_baz_my_revision_library () {
  if [[ -n $words[(r)-d] ]] || [[ -n $words[(r)--delete] ]]; then
    _baz_libraries
  else
    _files -/
  fi
}

(( $+functions[_baz_log_versions] )) ||
_baz_log_versions () {
  local logs expl
  logs=($(_call_program baz $BAZ log-versions))
  _description -V versions expl "log versions"
  compadd "$expl[@]" -a logs
}

# command argument definitions
# commands with different versions

local cmd_register_archive cmd_archives cmd_ls_archives cmd_redo
local cmd_redo_changes cmd_what_changed cmd_categories
local cmd_branches cmd_versions cmd_cacherev cmd_logs cmd_log_versions
local cmd_log_ls cmd_update cmd_join_branch cmd_replay cmd_deltapatch
local cmd_delta_patch cmd_apply_delta cmd_sync_tree cmd_make_sync_tree
local cmd_delta cmd_revdelta cmd_library_categories cmd_library_branches
local cmd_library_versions cmd_library_revisions
local cmd_status cmd_diff

cmd_log_ls=('*:version:_baz_log_versions')
cmd_log_versions=()
# the options should only complete items that are in the tree

cmd_register_archive=('::archive:_baz_archives' ':location:_files -/')
cmd_archives=('::regex:')
cmd_redo=('::changeset:_files -/')
cmd_status=('::dir:_files -/')
cmd_diff=('::revision:_baz_revisions'
  #  ':separator:(--)' '*::limit:_files'
  #don't understand the limit usage
)
cmd_categories=('::archive:_baz_archives')
cmd_branches=('::category:_baz_categories')
cmd_versions=('::branch:_baz_branches')
cmd_cacherev=('::revision:_baz_revisions')
#should only complete non-cached revisions

cmd_logs=($cmd_log_ls)
cmd_update=('::revision:_baz_revisions')
cmd_join_branch=(':revision:_baz_revisions')
#should only complete continuation revisions

cmd_replay=('*::revision:_baz_revisions')
cmd_deltapatch=(':FROM:_baz_tree_or_rev' ':TO:_baz_tree_or_rev')
cmd_sync_tree=(':revision:_baz_revisions')
cmd_delta=(':FROM:_baz_tree_or_rev' ':TO:_baz_tree_or_rev' '::DEST:_files -/')
cmd_library_categories=('::archive:_baz_archives --library')
cmd_library_branches=('::category:_baz_categories --library')
cmd_library_versions=('::branch:_baz_branches --library')
cmd_library_revisions=('::version:_baz_versions --library')

cmd_ls_archives=($cmd_archives)
cmd_redo_changes=($cmd_redo)
cmd_what_changed=($cmd_changes)
cmd_delta_patch=($cmd_deltapatch)
cmd_apply_delta=($cmd_deltapatch)
cmd_make_sync_tree=($cmd_sync_tree)
cmd_revdelta=($cmd_delta)

# commands the same in all versions

local cmd_help
cmd_help=()

local cmd_my_id
cmd_my_id=('::id-string:')

local cmd_my_default_archive
cmd_my_default_archive=('::archive:_baz_archives')

local cmd_whereis_archive
cmd_whereis_archive=(':archive:_baz_archives')

local cmd_init_tree
cmd_init_tree=('::version:_baz_versions')

local cmd_tree_id
cmd_tree_id=('::directory:_files -/')

local cmd_tree_root
cmd_tree_root=('::directory:_files -/')

local cmd_tree_version
cmd_tree_version=(':version:_baz_versions')

local cmd_build_config cmd_buildcfg
cmd_build_config=(':config:_baz_config')
cmd_buildcfg=($cmd_build_config)

local cmd_cat_config cmd_catcfg cmd_cfgcat
cmd_cat_config=(':config:_baz_config')
cmd_catcfg=($cmd_cat_config)
cmd_cfgcat=($cmd_cat_config)

local cmd_undo cmd_undo_changes
cmd_undo=('::revision:_baz_revisions')
cmd_undo_changes=($cmd_undo)

local cmd_file_diffs
cmd_file_diffs=(':file:_files' '::revision:_baz_revisions')

local cmd_file_find
cmd_file_find=(':file:_files' '::revision:_baz_revisions')

local cmd_inventory cmd_srcfind
cmd_inventory=('::separator:(--)' '*:directory:_files -/')
cmd_srcfind=($cmd_inventory)

local cmd_lint
cmd_lint=('::directory:_files -/')

local cmd_id cmd_invtag
cmd_id=('*:file:_files')
cmd_invtag=($cmd_id)

local cmd_id_tagging_method cmd_tagging_method methods
cmd_id_tagging_method=('::tagging method:(($methods))')
methods=(
  'names:use naming conventions only'
  'implicit:use naming conventions but permit for inventory tags'
  'tagline:use naming conventions but permit for inventory tags'
  'explicit:require explicit designation of source'
)
cmd_tagging_method=($cmd_id_tagging_method)

local cmd_add cmd_add_id cmd_add_tag
cmd_add=('*:files to add:_files')
cmd_add_id=($cmd_add)
cmd_add_tag=($cmd_add)

local cmd_delete cmd_delete_id cmd_delete_tag
cmd_delete=('*:files to delete:_files')
cmd_delete_id=($cmd_delete)
cmd_delete_tag=($cmd_delete)

local cmd_move cmd_move_id cmd_move_tag
cmd_move_id=(':old name:_files' ':new name:_files')
cmd_move_id=($cmd_move)
cmd_move_tag=($cmd_move)
#would be nice not to offer dirs for newname if oldname is a file, and
#vice versa

local cmd_mv
cmd_mv=('*:file:_files')
# not really right, but close enough

local cmd_default_id cmd_explicit_default cmd_default_tag
cmd_default_id=('::TAG-PREFIX:')
cmd_explicit_default=($cmd_default_id)
cmd_default_tag=($cmd_default_id)

local cmd_tagging_defaults cmd_id_tagging_defaults
cmd_tagging_defaults=()
cmd_id_tagging_defaults=($cmd_tagging_defaults)

local cmd_changeset cmd_mkpatch
cmd_changeset=(
  ':ORIG:_files -/'
  ':MOD:_files -/'
  ':DEST:_files -/'
  '*:files:_files'
)
cmd_mkpatch=("$cmd_changeset[@]")

local cmd_dopatch cmd_do_changeset cmd_apply_changeset
cmd_dopatch=(':changeset:_files -/' ':target:_files -/')
cmd_do_changeset=($cmd_dopatch)
cmd_apply_changeset=($cmd_dopatch)

local cmd_show_changeset
cmd_show_changeset=('::changeset:_files -/')

local cmd_make_archive
cmd_make_archive=('::name:' ':location:_files -/')

local cmd_archive_setup
cmd_archive_setup=('*:versions:_baz_branches --trailing-dashes')

local cmd_make_category
cmd_make_category=(':category:_baz_archives -S /')

local cmd_make_branch
cmd_make_branch=(':branch:_baz_categories --trailing-dashes')

local cmd_make_version
cmd_make_version=(':version:_baz_branches --trailing-dashes')

local cmd_import cmd_imprev
cmd_import=('::version:_baz_versions')
cmd_imprev=($cmd_import)

local cmd_commit cmd_cmtrev
cmd_commit=('*:files:_files')
cmd_cmtrev=($cmd_commit)

local cmd_get cmd_getrev
cmd_get=(':revision:_baz_revisions' '::directory:_files -/')
cmd_getrev=($cmd_get)

local cmd_get_patch cmd_get_changeset
cmd_get_patch=(':revision:_baz_revisions' '::dir:_files -/')
cmd_get_changeset=($cmd_get_patch)

local cmd_lock_revision
cmd_lock_revision=(':revision:_baz_revisions')

local cmd_push_mirror cmd_archive_mirror
cmd_push_mirror=(
  '::FROM or MINE:_baz_archives'
  '::TO:_baz_archives'
  '::LIMIT:_baz_limit'
)
cmd_archive_mirror=($cmd_push_mirror)

local cmd_revisions
cmd_revisions=('::version:_baz_versions')

local cmd_ancestry
cmd_ancestry=('::revision:_baz_revisions')

local cmd_ancestry_graph
cmd_ancestry_graph=('::revision:_baz_revisions')

local cmd_cat_archive_log
cmd_cat_archive_log=(':revision:_baz_revisions')

local cmd_cachedrevs
cmd_cachedrevs=(':version:_baz_versions')

local cmd_uncacherev
cmd_uncacherev=(':revision:_baz_revisions' '::dir:_files -/')

local cmd_archive_meta_info
cmd_archive_meta_info=(':item-name:((name\:foo mirror\:bar))')

local cmd_archive_snapshot
cmd_archive_snapshot=(':dir:_files -/' '::limit:_baz_revisions')

local cmd_archive_version
cmd_archive_version=()

local cmd_archive_fixup
cmd_archive_fixup=()

local cmd_make_log
cmd_make_log=('::version:_baz_versions')

local cmd_add_log cmd_add_log_version
cmd_add_log=(':version:_baz_versions')
cmd_add_log_version=($cmd_add_log)

local cmd_remove_log cmd_remove_log_version
cmd_remove_log=(':version:_baz_log_versions')
cmd_remove_log_version=($cmd_remove_log)

local cmd_abrowse
cmd_abrowse=('::LIMIT:_baz_revisions')

local cmd_cat_log
cmd_cat_log=(':revision-spec:_baz_local_revisions')

local cmd_changelog
cmd_changelog=('::version:_baz_versions')

local cmd_log_for_merge
cmd_log_for_merge=('::version:_baz_versions')

local cmd_merges
cmd_merges=(':INTO:_baz_revisions' '::FROM:_baz_revisions')

local cmd_new_merges
cmd_new_merges=('::version:_baz_versions')

local cmd_branch
cmd_branch=(':SOURCE-REVISION:_baz_revisions' ':TAG-VERSION:_baz_versions')

local cmd_merge
cmd_merge=(':FROM:_baz_revisions')

local cmd_missing cmd_whats_missing
cmd_missing=('::revision:_baz_revisions')
cmd_whats_missing=($cmd_missing)

local cmd_pristines cmd_ls_pristines
cmd_pristines=('::limit:_baz_revisions')
cmd_ls_pristines=($cmd_pristines)

local cmd_lock_pristine
cmd_lock_pristine=(':revision:_baz_revisions')

local cmd_add_pristine
cmd_add_pristine=(':revision:_baz_revisions')

local cmd_find_pristine
cmd_find_pristine=(':revision:_baz_revisions')

local cmd_my_revision_library
cmd_my_revision_library=(':library:_baz_my_revision_library')

local cmd_library_find
cmd_library_find=(':revision:_baz_revisions --library')

local cmd_library_add
cmd_library_add=(':revision:_baz_revisions --exclude-library-revisions')

local cmd_library_remove
cmd_library_remove=(':revision:_baz_revisions --library')

local cmd_library_archives
cmd_library_archives=()

local cmd_library_log
cmd_library_log=(':revision:_baz_revisions --library')

local cmd_library_file
cmd_library_file=(':file:_files' ':revision:_baz_revisions --library')

local cmd_grab
cmd_grab=(':location:_files')

local cmd_parse_package_name
cmd_parse_package_name=(':name:')

local cmd_valid_package_name
cmd_valid_package_name=(':name:')

local cmd_library_config
cmd_library_config=(':library:_baz_libraries')

local cmd_rbrowse
cmd_rbrowse=('::regular expression:')

local cmd_rm
cmd_rm=('*:file:_files')

local cmd_escape
cmd_escape=(':string:')

local cmd_switch
cmd_switch=(':revision:_baz_revisions')

#mutually exclusive options

local -A excludes
excludes=(
# This first line means that if --output was given, don't complete
# --no-output or --keep. The converse is not true.
--output '--no-output --keep'
--no-output --output

--silent  '         --quiet --report --verbose --debug'
--quiet   '--silent         --report --verbose --debug'
--report  '--silent --quiet          --verbose --debug'
--verbose '--silent --quiet --report           --debug'
--debug   '--silent --quiet --report --verbose        '

--sparse --non-sparse
--non-sparse --sparse

--files       '        --directories --both'
--directories '--files               --both'
--both        '--files --directories       '

--mirror --mirror-from
--mirror-from --mirror

--no-cached --cached-tags
--cached-tags --no-cached

--non-greedy --greedy
--greedy --non-greedy
)

_baz_main () {
  typeset -A opt_args
  local arguments
  if (( CURRENT > 2 )); then
    local cmd=${words[2]}
    local var_cmd=cmd_${cmd//-/_}
    curcontext="${curcontext%:*:*}:baz-$cmd:"
    (( CURRENT-- ))
    shift words

    arguments=()
    local input
    input=(${${(M)${(f)"$($BAZ $cmd -h)"}:#  *}#  })

    local i j=1
    local short long arg desc action
    short=()
    long=()
    arg=()
    desc=()
    action=()
    for (( i=1 ; i <= ${#input} ; i++ )); do
      [[ "$input[i]" != *[^\ ]* ]] && continue # stupid blank lines
      short[j]="${${${input[i]}[1,2]}#--}"
      long[j]="${${input[i]#-?, }%% *}"

      arg[j]="${${${input[i]%%  *}##* }##-*}"
      [[ $long[j] == --archive ]] && arg[j]=ARCHIVE # baz doesn't mention this

      desc[j]="${input[i]##*  }"
      if [[ "$input[i+1]" == \ *[^\ ]* ]]; then # description continues
        (( i++ ))
        desc[j]="$desc[j] ${input[i]##*  }"
      fi
      [[ "$short[j]" == -[hHV] ]] && continue
      desc[j]="${${desc[j]//\[/\\[}//\]/\\]}" # escape brackets

      case $arg[j] in
      DIR|PATCH-DIR|DEST|OUTPUT|PATH)
        action[j]='_files -/' ;;
      FILES|FILE|SNAP-FILE)
        action[j]='_files' ;;
      MASTER|MASTER-SOURCE|ARCHIVE)
        action[j]='_baz_archives' ;;
      CATEGORY)
        action[j]='_baz_categories' ;;
      BRANCH)
        action[j]='_baz_branches' ;;
      VERSION)
        action[j]='_baz_versions' ;;
      CFG)
        action[j]='_baz_configs' ;;
      LIB)
        action[j]='_baz_libraries' ;;
#      PATCH,FILE) # not sure how to complete this
#        action[j]='_baz_patch_file' ;;
      *)
        action[j]='' ;;
      esac

      (( j++ ))

    done

    local excluded k
    for (( i = 1 ; i < j ; i++ )); do
      excluded=($short[i] $long[i])
      foreach opt (${=excludes[$long[i]]})
        k=$long[(i)$opt]
        excluded=($excluded $short[k] $long[k])
        #excludes matching short options too :-)
      end


      # generate arguments to _arguments ;-)
      # make long and short options mutually exclusive
      [ $short[i] ] && arguments=("$arguments[@]"
        "${hide_short}(${excluded})${short[i]}[${desc[i]}]${arg[i]:+:$arg[i]:$action[i]}")
      [ $long[i] ] && arguments=("$arguments[@]"
        "(${excluded})${long[i]}[${desc[i]}]${arg[i]:+:$arg[i]:$action[i]}")
    done

    arguments=("$arguments[@]" "${(@P)var_cmd-*:FILE:_files}")
  else
    local help
    local -U cmds
    help=(${(f)"$($BAZ help)"})
    cmds=(${${${${(M)help:#* :*}/ #: #/:}%% ##}## #})
    arguments=(':commands:(($cmds))')
  fi
  _arguments -S -A '-*' \
    {"${hide_short}(: -)-V",'(: -)--version'}'[display version]' \
    {"${hide_short}(: -)-h",'(: -)--help'}'[display help]' \
    '(: -)-H[display verbose help]' \
    "$arguments[@]"
}

_baz_main "$@"