# koji completion -*- shell-script -*- proc _koji_search { global COMPREPLY := '( '$( compgen -W \ '$( "$1" -q search $2 "$cur*" 2>/dev/null )' -- "$cur" ) ) } proc _koji_build { _koji_search $1 build } proc _koji_package { _koji_search $1 package } proc _koji_user { _koji_search $1 user } proc _koji_tag { global COMPREPLY := '( '$( compgen -W '$( "$1" -q list-tags 2>/dev/null )' \ -- "$cur" ) ) } proc _koji_target { global COMPREPLY := '( '$( compgen -W '$( "$1" -q list-targets 2>/dev/null | awk "{ print \$1 }" )' -- "$cur" ) ) } proc _koji { var cur = '', prev = '', words = '', cword = '', split = '' _init_completion -s || return var commandix = '', command = '' for (( commandix=1; commandix < cword; commandix++ )); do if [[ ${words[commandix]} != -* ]]; then command=${words[commandix]} break fi done matchstr $prev { -h|--help|--help-commands { return } -c|--config|--keytab|-o { _filedir return } --runas|--user|--editor|--by { _koji_user $1 return } --authtype { global COMPREPLY := '( '$( compgen -W 'noauth ssl password kerberos' \ -- "$cur" ) ) return } --topdir { _filedir -d return } --type { matchstr $command { latest-pkg|list-tagged { global COMPREPLY := '( '$( compgen -W 'maven' -- "$cur" ) ) } } return } --name { matchstr $command { list-targets { _koji_target $1 } } return } --owner { _koji_user $1 return } --tag|--latestfrom { _koji_tag $1 return } --package { _koji_package $1 return } --build { _koji_build $1 return } --build-target { _koji_target $1 return } } $split && return if [[ $command ]] { if [[ $cur == -* ]] { global COMPREPLY := '( '$( compgen -W \ '$( _parse_help "$1" "$command --help" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace return } # How many'th non-option arg (1-based) for $command are we completing? var i = '', nth = '1' for (( i=commandix+1; i < cword; i++ )); do [[ ${words[i]} == -* ]] || (( nth++ )) done matchstr $command { build|maven-build|win-build { matchstr $nth { 1 { _koji_target $1 } 2 { _filedir src.rpm } } } cancel { _koji_build $1 } chain-build { matchstr $nth { 1 { _koji_target $1 } } } download-build { matchstr $nth { 1 { _koji_build $1 } } } import-comps { matchstr $nth { 1 { _filedir xml } 2 { _koji_tag $1 } } } latest-by-tag { _koji_package $1 } latest-pkg|list-groups|list-tag-inheritance|show-groups { matchstr $nth { 1 { _koji_tag $1 } } } list-tagged { matchstr $nth { 1 { _koji_tag $1 } 2 { _koji_package $1 } } } list-untagged { matchstr $nth { 1 { _koji_package $1 } } } move-pkg { matchstr $nth { 1|2 { _koji_tag $1 } * { _koji_package $1 } } } search { matchstr $nth { 1 { global COMPREPLY := '( '$( compgen -W 'package build tag target user host rpm' -- "$cur" ) ) } } } tag-pkg|untag-pkg { matchstr $nth { 1 { _koji_tag $1 } * { _koji_package $1 } } } taginfo { _koji_tag $1 } wait-repo { matchstr $nth { 1 { for (( i=commandix+1; i < cword; i++ )); do if [[ ${words[i]} == --target ]]; then _koji_target "$1" return fi done _koji_tag $1 } } } } return } if [[ $cur == -* ]] { global COMPREPLY := '( '$( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace } elif [[ ! $command ]] { global COMPREPLY := '( '$( compgen -W '$( "$1" --help-commands 2>/dev/null | \ awk "/^( +|\t)/ { print \$1 }" )' -- "$cur" ) ) } } && complete -F _koji koji arm-koji ppc-koji s390-koji sparc-koji # ex: ts=4 sw=4 et filetype=sh (CommandList children: [ (FuncDef name: _koji_search body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <"$( \"$1\" -q search $2 \"$cur*\" 2>/dev/null )">)} {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [14 32] ) } ] ) } spids: [11] ) ] spids: [11] ) ] spids: [8] ) spids: [4 7] ) (FuncDef name: _koji_build body: (BraceGroup children: [(C {(_koji_search)} {(DQ ($ VSub_Number "$1"))} {(build)})] spids: [43] ) spids: [39 42] ) (FuncDef name: _koji_package body: (BraceGroup children: [(C {(_koji_search)} {(DQ ($ VSub_Number "$1"))} {(package)})] spids: [61] ) spids: [57 60] ) (FuncDef name: _koji_user body: (BraceGroup children: [(C {(_koji_search)} {(DQ ($ VSub_Number "$1"))} {(user)})] spids: [79] ) spids: [75 78] ) (FuncDef name: _koji_tag body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <"$( \"$1\" -q list-tags 2>/dev/null )">)} {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [103 121] ) } ] ) } spids: [100] ) ] spids: [100] ) ] spids: [97] ) spids: [93 96] ) (FuncDef name: _koji_target body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ <"$( \"$1\" -q list-targets 2>/dev/null |\n"> <" awk \"{ print \\$1 }\" )"> ) } {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [138 155] ) } ] ) } spids: [135] ) ] spids: [135] ) ] spids: [132] ) spids: [128 131] ) (AndOr children: [ (FuncDef name: _koji body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:cur) op:Equal spids:[171]) (assign_pair lhs:(LhsName name:prev) op:Equal spids:[173]) (assign_pair lhs:(LhsName name:words) op:Equal spids:[175]) (assign_pair lhs:(LhsName name:cword) op:Equal spids:[177]) (assign_pair lhs:(LhsName name:split) op:Equal spids:[179]) ] spids: [169] ) (AndOr children: [ (C {(_init_completion)} {(-s)}) (ControlFlow token:) ] op_id: Op_DPipe ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:commandix) op: Equal spids: [194] ) (assign_pair lhs:(LhsName name:command) op:Equal spids:[196]) ] spids: [192] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:commandix) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:commandix) right: (ArithVarRef name:cword) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:commandix)) body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (BracedVarSub token: bracket_op: (ArrayIndex expr: (ArithVarRef name:commandix) ) spids: [229 234] ) } right: {(-) (Lit_Other "*")} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:command) op: Equal rhs: { (BracedVarSub token: bracket_op: (ArrayIndex expr:(ArithVarRef name:commandix)) spids: [248 253] ) } spids: [247] ) ] spids: [247] ) (ControlFlow token: ) ] spids: [-1 244] ) ] spids: [-1 259] ) ] spids: [222 262] ) ) (Case to_match: {($ VSub_Name "$prev")} arms: [ (case_arm pat_list: [{(-h)} {(--help)} {(--help-commands)}] action: [(ControlFlow token:)] spids: [273 278 284 -1] ) (case_arm pat_list: [{(-c)} {(--config)} {(--keytab)} {(-o)}] action: [(C {(_filedir)}) (ControlFlow token:)] spids: [287 294 303 -1] ) (case_arm pat_list: [{(--runas)} {(--user)} {(--editor)} {(--by)}] action: [ (C {(_koji_user)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token:) ] spids: [306 313 326 -1] ) (case_arm pat_list: [{(--authtype)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <"noauth ssl password kerberos">)} {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [336 354] ) } ] ) } spids: [333] ) ] spids: [333] ) (ControlFlow token:) ] spids: [329 330 362 -1] ) (case_arm pat_list: [{(--topdir)}] action: [(C {(_filedir)} {(-d)}) (ControlFlow token:)] spids: [365 366 377 -1] ) (case_arm pat_list: [{(--type)}] action: [ (Case to_match: {($ VSub_Name "$command")} arms: [ (case_arm pat_list: [{(latest-pkg)} {(list-tagged)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ )} {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [400 416] ) } ] ) } spids: [397] ) ] spids: [397] ) ] spids: [391 394 421 -1] ) ] spids: [384 388 424] ) (ControlFlow token:) ] spids: [380 381 430 -1] ) (case_arm pat_list: [{(--name)}] action: [ (Case to_match: {($ VSub_Name "$command")} arms: [ (case_arm pat_list: [{(list-targets)}] action: [(C {(_koji_target)} {(DQ ($ VSub_Number "$1"))})] spids: [444 445 455 -1] ) ] spids: [437 441 458] ) (ControlFlow token:) ] spids: [433 434 464 -1] ) (case_arm pat_list: [{(--owner)}] action: [ (C {(_koji_user)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token:) ] spids: [467 468 481 -1] ) (case_arm pat_list: [{(--tag)} {(--latestfrom)}] action: [ (C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token:) ] spids: [484 487 500 -1] ) (case_arm pat_list: [{(--package)}] action: [ (C {(_koji_package)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token:) ] spids: [503 504 517 -1] ) (case_arm pat_list: [{(--build)}] action: [ (C {(_koji_build)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token:) ] spids: [520 521 534 -1] ) (case_arm pat_list: [{(--build-target)}] action: [ (C {(_koji_target)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token:) ] spids: [537 538 551 -1] ) ] spids: [266 270 554] ) (AndOr children: [ (C {($ VSub_Name "$split")}) (ControlFlow token:) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(WordTest w:{($ VSub_Name "$command")})) terminator: ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$cur")} right: {(-) (Lit_Other "*")} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ < "$( _parse_help \"$1\" \"$command --help\" )" > ) } {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [598 616] ) } ] ) } spids: [595] ) ] spids: [595] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$COMPREPLY")} right: {(Lit_Other "*") (BoolBinary_GlobEqual "=")} ) ) (C {(compopt)} {(-o)} {(nospace)}) ] op_id: Op_DAmp ) (ControlFlow token: ) ] spids: [-1 592] ) ] spids: [-1 644] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:i) op: Equal spids: [654] ) (assign_pair lhs: (LhsName name:nth) op: Equal rhs: {(1)} spids: [656] ) ] spids: [652] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:commandix) right: (ArithWord w:{(Lit_Digits 1)}) ) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithVarRef name:cword) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: bracket_op: (ArrayIndex expr:(ArithVarRef name:i)) spids: [690 695] ) } right: {(-) (Lit_Other "*")} ) ) (DParen child: (UnaryAssign op_id: Node_PostDPlus child: (LhsName name:nth) ) ) ] op_id: Op_DPipe ) ] spids: [685 715] ) ) (Case to_match: {($ VSub_Name "$command")} arms: [ (case_arm pat_list: [{(build)} {(maven-build)} {(win-build)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_target)} {(DQ ($ VSub_Number "$1"))})] spids: [741 742 752 -1] ) (case_arm pat_list: [{(2)}] action: [(C {(_filedir)} {(src.rpm)})] spids: [755 756 764 -1] ) ] spids: [734 738 767] ) ] spids: [726 731 770 -1] ) (case_arm pat_list: [{(cancel)}] action: [(C {(_koji_build)} {(DQ ($ VSub_Number "$1"))})] spids: [773 774 784 -1] ) (case_arm pat_list: [{(chain-build)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_target)} {(DQ ($ VSub_Number "$1"))})] spids: [798 799 809 -1] ) ] spids: [791 795 812] ) ] spids: [787 788 815 -1] ) (case_arm pat_list: [{(download-build)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_build)} {(DQ ($ VSub_Number "$1"))})] spids: [829 830 840 -1] ) ] spids: [822 826 843] ) ] spids: [818 819 846 -1] ) (case_arm pat_list: [{(import-comps)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_filedir)} {(xml)})] spids: [860 861 869 -1] ) (case_arm pat_list: [{(2)}] action: [(C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))})] spids: [872 873 883 -1] ) ] spids: [853 857 886] ) ] spids: [849 850 889 -1] ) (case_arm pat_list: [{(latest-by-tag)}] action: [(C {(_koji_package)} {(DQ ($ VSub_Number "$1"))})] spids: [892 893 903 -1] ) (case_arm pat_list: [ {(latest-pkg)} {(list-groups)} {(list-tag-inheritance)} {(show-groups)} ] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))})] spids: [923 924 934 -1] ) ] spids: [916 920 937] ) ] spids: [906 913 940 -1] ) (case_arm pat_list: [{(list-tagged)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))})] spids: [954 955 965 -1] ) (case_arm pat_list: [{(2)}] action: [(C {(_koji_package)} {(DQ ($ VSub_Number "$1"))})] spids: [968 969 979 -1] ) ] spids: [947 951 982] ) ] spids: [943 944 985 -1] ) (case_arm pat_list: [{(list-untagged)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_package)} {(DQ ($ VSub_Number "$1"))})] spids: [999 1000 1010 -1] ) ] spids: [992 996 1013] ) ] spids: [988 989 1016 -1] ) (case_arm pat_list: [{(move-pkg)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)} {(2)}] action: [(C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))})] spids: [1030 1033 1043 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(_koji_package)} {(DQ ($ VSub_Number "$1"))})] spids: [1046 1047 1057 -1] ) ] spids: [1023 1027 1060] ) ] spids: [1019 1020 1063 -1] ) (case_arm pat_list: [{(search)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ < "package build tag target\n" > <" user host rpm"> ) } {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [1084 1101] ) } ] ) } spids: [1081] ) ] spids: [1081] ) ] spids: [1077 1078 1106 -1] ) ] spids: [1070 1074 1109] ) ] spids: [1066 1067 1112 -1] ) (case_arm pat_list: [{(tag-pkg)} {(untag-pkg)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))})] spids: [1128 1129 1139 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(_koji_package)} {(DQ ($ VSub_Number "$1"))})] spids: [1142 1143 1153 -1] ) ] spids: [1121 1125 1156] ) ] spids: [1115 1118 1159 -1] ) (case_arm pat_list: [{(taginfo)}] action: [(C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))})] spids: [1162 1163 1173 -1] ) (case_arm pat_list: [{(wait-repo)}] action: [ (Case to_match: {($ VSub_Name "$nth")} arms: [ (case_arm pat_list: [{(1)}] action: [ (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:commandix) right: (ArithWord w:{(Lit_Digits 1)}) ) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithVarRef name:cword) ) update: (UnaryAssign op_id: Node_PostDPlus child: (LhsName name:i) ) body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: bracket_op: (ArrayIndex expr: (ArithVarRef name: i ) ) spids: [1223 1228] ) } right: {(--target)} ) ) terminator: ) ] action: [ (C {(_koji_target)} {(DQ ($ VSub_Number "$1"))}) (ControlFlow token: ) ] spids: [-1 1237] ) ] spids: [-1 1250] ) ] spids: [1216 1253] ) ) (C {(_koji_tag)} {(DQ ($ VSub_Number "$1"))}) ] spids: [1187 1188 1263 -1] ) ] spids: [1180 1184 1266] ) ] spids: [1176 1177 1269 -1] ) ] spids: [719 723 1272] ) (ControlFlow token:) ] spids: [-1 575] ) ] spids: [-1 1278] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$cur")} right: {(-) (Lit_Other "*")} ) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <"$( _parse_help \"$1\" )">)} {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [1302 1318] ) } ] ) } spids: [1299] ) ] spids: [1299] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$COMPREPLY")} right: {(Lit_Other "*") (BoolBinary_GlobEqual "=")} ) ) (C {(compopt)} {(-o)} {(nospace)}) ] op_id: Op_DAmp ) ] spids: [-1 1296] ) (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child:(WordTest w:{($ VSub_Name "$command")})) ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ < "$( \"$1\" --help-commands 2>/dev/null | \\\n" > <" awk \"/^( +|\\t)/ { print \\$1 }\" )"> ) } {(--)} {(DQ ($ VSub_Name "$cur"))} ) ] ) left_token: spids: [1360 1377] ) } ] ) } spids: [1357] ) ] spids: [1357] ) ] spids: [1343 1354] ) ] spids: [-1 1382] ) ] spids: [166] ) spids: [162 165] ) (C {(complete)} {(-F)} {(_koji)} {(koji)} {(arm-koji)} {(ppc-koji)} {(s390-koji)} {(sparc-koji)}) ] op_id: Op_DAmp ) ] )