(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {(_have)} {(grep-status)}) (command.BraceGroup children: [ (command.ShFunction name: _comp_dpkg_hold_packages body: (command.BraceGroup children: [ (C {(grep-status)} {(-P)} {(-e)} {(DQ ('^') ($ Id.VSub_Number '$1'))} {(-a)} {(-FStatus)} {(SQ (Token id:Id.Lit_Chars val:hold span_id:35))} {(-n)} {(-s)} {(Package)} ) ] ) ) ] ) (command.BraceGroup children: [ (command.ShFunction name: _comp_dpkg_hold_packages body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(command)} {(grep)} {(-B)} {(2)} {(SQ (Token id:Id.Lit_Chars val:hold span_id:68))} {(/var/lib/dpkg/status)} ) (C {(awk)} { (DQ ('/Package: ') ($ Id.VSub_Number '$1') ('/ { print ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:83) ) ('2 }') ) } ) ] negated: F ) ] ) ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShFunction name: _aptitude body: (command.BraceGroup children: [ (C {(local)} {(cur)} {(prev)} {(words)} {(cword)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(_init_completion)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:114) ) ] ) (C {(local)} {(Id.Lit_VarLike 'dashoptions=') (SQ (Token id: Id.Lit_Chars val: '-S -u -i -h --help --version -s --simulate -d\n' span_id: 122 ) (Token id: Id.Lit_Chars val: ' --download-only -P --prompt -y --assume-yes -F --display-format -O\n' span_id: 123 ) (Token id: Id.Lit_Chars val: ' --sort -w --width -f -r -g --with-recommends -R -G --without-recommends\n' span_id: 124 ) (Token id: Id.Lit_Chars val: ' -t --target-release -V --show-versions -D --show-deps -Z -v --verbose\n' span_id: 125 ) (Token id:Id.Lit_Chars val:' --purge-unused --schedule-only' span_id:126) ) } ) (C {(local)} {(special)} {(i)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:147)) right: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:153) prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: (sh_lhs_expr.Name name:i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:177) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 179 ) ) ) ) } right: { (word_part.ExtGlob op: (Token id:Id.ExtGlob_At val:'@(' span_id:185) arms: [ { (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 186 ) arms: [{} {(re)}] ) (install) } { (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 192 ) arms: [{} {(un)}] ) (hold) } { (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 198 ) arms: [{} {(un)}] ) (markauto) } { (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 204 ) arms: [{(dist)} {(full)} {(safe)}] ) (-upgrade) } {(download)} {(show)} {(forbid-version)} {(purge)} {(remove)} {(changelog)} {(why) (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 226 ) arms: [{} {(-not)}] ) } {(keep) (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 232 ) arms: [{} {(-all)}] ) } {(build-dep)} { (word_part.ExtGlob op: (Token id: Id.ExtGlob_At val: '@(' span_id: 239 ) arms: [{(add)} {(remove)}] ) (-user-tag) } {(versions)} ] ) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:250) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:special) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:257) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 259 ) ) ) ) } spids: [255] ) ] ) ] spids: [172 252] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:274) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 276 ) ) ) ) } right: {(SQ (Token id:Id.Lit_Chars val:-u span_id:283))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dashoptions) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:dashoptions span_id:292) suffix_op: (suffix_op.PatSub pat: {(-i)} replace_mode: Id.Undefined_Tok ) ) } spids: [290] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: (Token id:Id.VSub_Name val:words span_id:301) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: i span_id: 303 ) ) ) ) } right: {(SQ (Token id:Id.Lit_Chars val:-i span_id:310))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dashoptions) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:dashoptions span_id:319) suffix_op: (suffix_op.PatSub pat: {(-u)} replace_mode: Id.Undefined_Tok ) ) } spids: [317] ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$special'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:340) ) ] action: [ (command.Case to_match: {($ Id.VSub_DollarName '$special')} arms: [ (case_arm pat_list: [ {(install)} {(hold)} {(markauto)} {(unmarkauto)} {(dist-upgrade)} {(full-upgrade)} {(safe-upgrade)} {(download)} {(show)} {(changelog)} {(why)} {(why-not)} {(build-dep)} {(add-user-tag)} {(remove-user-tag)} {(versions)} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:393) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 395 ) command_list: (command.CommandList children: [ (command.Simple words: [ {(apt-cache)} {(pkgnames)} {($ Id.VSub_DollarName '$cur')} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 403 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } ] ) } spids: [392] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:412) arg_word: {(0)} ) ] spids: [352 389 417 -1] ) (case_arm pat_list: [{(purge)} {(remove)} {(reinstall)} {(forbid-version)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:431) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 435 ) command_list: (command.CommandList children: [ (C {(_xfunc)} {(dpkg)} {(_comp_dpkg_installed_packages)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [430] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:452) arg_word: {(0)} ) ] spids: [420 427 457 -1] ) (case_arm pat_list: [{(unhold)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:465) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 467 ) command_list: (command.CommandList children: [ (C {(_comp_dpkg_hold_packages)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [464] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:480) arg_word: {(0)} ) ] spids: [460 461 485 -1] ) ] ) ] spids: [329 342] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [ {(autoclean)} {(clean)} {(forget-new)} {(search)} {(upgrade)} {(update)} {(keep-all)} ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:522) arg_word: {(0)} ) ] spids: [506 519 527 -1] ) (case_arm pat_list: [{(-S)}] action: [ (C {(_filedir)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:537) arg_word: {(0)} ) ] spids: [530 531 542 -1] ) (case_arm pat_list: [{(-t)} {(--target-release)} {(--default-release)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:554) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 556 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(apt-cache)} {(policy)}) (C {(command)} {(grep)} { (DQ ('release.o=Debian,a=') ($ Id.VSub_DollarName '$cur') ) } ) (C {(sed)} {(-e)} { (DQ ('s/.*a=') (Id.Lit_Other '\\') ('(') (Id.Lit_Other '\\') ('w*') (Id.Lit_Other '\\') (').*/') (Id.Lit_Other '\\') (1/) ) } ) (command.Simple words: [{(uniq)}] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 599 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] negated: F ) ] ) ) } ] ) } spids: [553] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:608) arg_word: {(0)} ) ] spids: [545 550 613 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$cur'))} right: {(-) (Id.Lit_Other '*')} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:634) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:640) words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 642 ) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ Id.VSub_DollarName '$dashoptions'))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [639] ) ] ) ] spids: [620 636] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMPREPLY) op: assign_op.Equal rhs: { (sh_array_literal left: (Token id:Id.Op_LParen val:'(' span_id:667) words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:669) command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ (Token id: Id.Lit_Chars val: 'update upgrade safe-upgrade forget-new\n' span_id: 676 ) (Token id: Id.Lit_Chars val: ' clean autoclean install reinstall remove hold unhold purge markauto\n' span_id: 677 ) (Token id: Id.Lit_Chars val: ' unmarkauto why why-not dist-upgrade full-upgrade download search\n' span_id: 678 ) (Token id: Id.Lit_Chars val: ' show forbid-version changelog keep-all build-dep add-user-tag\n' span_id: 679 ) (Token id:Id.Lit_Chars val:' remove-user-tag versions' span_id:680) ) } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))} ) ] ) ) } ] ) } spids: [666] ) ] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:698) arg_word: {(0)} ) ] ) ) (C {(complete)} {(-F)} {(_aptitude)} {(-o)} {(default)} {(aptitude)}) ] ) ] )