proc gethgversion { make clean make local || make local PURE=--pure global HG := ""$PWD/hg"" $HG version > /dev/null || do { echo 'abort: hg version failed!'; exit 1 ; } global hgversion := $[$HG version | sed -ne 's/.*(version \(.*\))$/\1/p] if echo $hgversion | grep -- '-' > /dev/null !2 > !1 { # nightly build case, version is like 1.3.1+250-20b91f91f9ca global version := $[echo $hgversion | cut -d- -f1] global release := $[echo $hgversion | cut -d- -f2 | sed -e 's/+.*//] } else { # official tag, version is like 1.3.1 global version := $[echo $hgversion | sed -e 's/+.*//] global release := ''0'' } } (CommandList children: [ (FuncDef name: gethgversion body: (BraceGroup children: [ (C {(make)} {(clean)}) (AndOr children: [ (C {(make)} {(Assign_Local local)}) (C {(make)} {(Assign_Local local)} {(Lit_VarLike "PURE=") (--pure)}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HG) op: Equal rhs: {(DQ ($ VSub_Name "$PWD") (/hg))} spids: [26] ) ] spids: [26] ) (AndOr children: [ (SimpleCommand words: [{($ VSub_Name "$HG")} {(version)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[38])] ) (BraceGroup children: [ (Sentence child: (C {(echo)} {(SQ <"abort: hg version failed!">)}) terminator: ) (Sentence child:(C {(exit)} {(1)}) terminator:) ] spids: [44] ) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:hgversion) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {($ VSub_Name "$HG")} {(version)}) (C {(sed)} {(-ne)} {(SQ <"s/.*(version \\(.*\\))$/\\1/p">)}) ] negated: False ) ] ) left_token: spids: [64 78] ) } spids: [63] ) ] spids: [63] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(echo)} {($ VSub_Name "$hgversion")}) (SimpleCommand words: [{(grep)} {(--)} {(SQ <->)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [98] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [102] ) ] ) ] negated: False ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name "$hgversion")}) (C {(cut)} {(-d-)} {(-f1)}) ] negated: False ) ] ) left_token: spids: [114 126] ) } spids: [113] ) ] spids: [113] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:release) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name "$hgversion")}) (C {(cut)} {(-d-)} {(-f2)}) (C {(sed)} {(-e)} {(SQ <"s/+.*//">)}) ] negated: False ) ] ) left_token: spids: [130 152] ) } spids: [129] ) ] spids: [129] ) ] spids: [-1 106] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name "$hgversion")}) (C {(sed)} {(-e)} {(SQ <"s/+.*//">)}) ] negated: False ) ] ) left_token: spids: [163 177] ) } spids: [162] ) ] spids: [162] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:release) op: Equal rhs: {(SQ <0>)} spids: [180] ) ] spids: [180] ) ] spids: [155 186] ) ] spids: [4] ) spids: [0 3] ) ] )