(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (C {<source>} {<'build/common.sh'>})
    (command.ShFunction
      name: get-cpplint
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {<_tmp>})
            (C {<wget>} {<--directory>} {<_tmp>} 
              {<https> <Id.Lit_Colon ':'> 
                <'//raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py'>
              }
            )
            (C {<chmod>} {<Id.Lit_Other '+'> <x>} {<'_tmp/cpplint.py'>})
          ]
        )
    )
    (command.ShFunction
      name: cpplint
      body: 
        (BraceGroup
          children: [
            (C {<'_tmp/cpplint.py'>} {<--filter>} 
              {<'-readability/todo'> <Id.Lit_Comma ','> <'-legal/copyright'>} (word.BracedTree parts:[<Id.Lit_Star '*'> <.> (word_part.BracedTuple words:[{<cc>} {<h>}])]) 
              (word.BracedTree
                parts: [<'shell/'> <Id.Lit_Star '*'> <.> (word_part.BracedTuple words:[{<cc>} {<h>}])]
              )
            )
          ]
        )
    )
    (command.ShFunction
      name: clang-format
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$CLANG_DIR') <'/bin/clang-format'>} 
              {<-style> <Id.Lit_Equals '='> (DQ <'{BasedOnStyle: Google, IndentCaseLabels: false}'>)} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: format-oil
      body: 
        (BraceGroup
          children: [
            (C {<clang-format>} {<-i>} 
              (word.BracedTree
                parts: [<Id.Lit_Star '*'> <.> (word_part.BracedTuple words:[{<cc>} {<h>}])]
              ) 
              (word.BracedTree
                parts: [<'shell/'> <Id.Lit_Star '*'> <.> (word_part.BracedTuple words:[{<cc>} {<h>}])]
              )
            )
            (C {<git>} {<diff>})
          ]
        )
    )
    (command.ShFunction
      name: format-demo
      body: 
        (BraceGroup
          children: [
            (C {<clang-format>} {<-i>} {<'demo/'> <Id.Lit_Star '*'> <.cc>})
            (C {<git>} {<diff>})
          ]
        )
    )
    (command.ShFunction
      name: bin-pep8
      body: 
        (BraceGroup
          children: [
            (C {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/.local/bin/pep8'>} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: find-src
      body: 
        (BraceGroup
          children: [
            (C {<find>} {<.>} {(SQ <'('>)} {<-type>} {<d>} {<-a>} {<-name>} {(SQ <'_*'>)} {<-o>} {<-name>} 
              {<testdata>} {<-o>} {<-name>} {($ Id.VSub_DollarName '$PY27')} {(SQ <')'>)} {<-a>} {<-prune>} {<-o>} {(SQ <'('>)} {<-name>} 
              {(SQ <'*.py'>)} {<-o>} {<-name>} {(SQ <'*.sh'>)} {<-o>} {<-name>} {(SQ <'*.asdl'>)} {<-o>} {<-name>} {(SQ <'*.[ch]'>)} 
              {(SQ <')'>)} {<-a>} {<-print>}
            )
          ]
        )
    )
    (command.ShFunction
      name: find-tabs
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<find-src>})
                (C {<xargs>} {<grep>} {<-n>} 
                  {
                    (single_quoted
                      left: <Id.Left_DollarSingleQuote '$\''>
                      tokens: [<Id.Char_OneChar '\\t'>]
                      multiline: F
                    )
                  }
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: find-long-lines
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<find-src>})
                (C {<xargs>} {<grep>} {<-n>} {(SQ <'^.\\{81\\}'>)})
                (C {<grep>} {<-v>} {(SQ <http>)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: bin-flake8
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'ubuntu_flake8='> <Id.Lit_TildeLike '~'> <'/.local/bin/flake8'>}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$ubuntu_flake8'))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {($ Id.VSub_DollarName '$ubuntu_flake8')} {(DQ ($ Id.VSub_At '$@'))})]
                  spids: [466 477]
                )
              ]
              else_action: [(C {<flake8>} {(DQ ($ Id.VSub_At '$@'))})]
            )
          ]
        )
    )
    (command.ShFunction
      name: flake8-all
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<-a>} 
              {<Id.Lit_VarLike 'dirs='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [{<asdl>} {<bin>} {<core>} {<osh>} {<opy>}]
                )
              }
            )
            (C {<local>} {<-a>} 
              {<Id.Lit_VarLike 'exclude='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [
                    {<--exclude>}
                    {(SQ <'opy/_regtest,opy/byterun,opy/tools/astgen.py,opy/lib/opcode.py'>)}
                  ]
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'fatal_errors='> (SQ <'E901,E999,F821,F822,F823,F401'>)})
            (C {<bin-flake8>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name dirs>
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              } {(DQ (braced_var_sub token:<Id.VSub_Name exclude> bracket_op:(bracket_op.WholeArray op_id:Id.Lit_At)))} 
              {<--count>} {<--select>} {(DQ ($ Id.VSub_DollarName '$fatal_errors'))} {<--show-source>} {<--statistics>}
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'ignored='> 
                (SQ 
                  <
'E125,E701,E241,E121,E111,E114,E128,E262,E226,E302,E265,E290,E202,E203,C901,E261,E301,W293,E402,E116,E741,W391,E127'
                  >
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'ignored_for_now='> (SQ <'W291,E501,E303'>)})
            (C {<bin-flake8>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name dirs>
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  )
                )
              } {(DQ (braced_var_sub token:<Id.VSub_Name exclude> bracket_op:(bracket_op.WholeArray op_id:Id.Lit_At)))} 
              {<--ignore>} {(DQ ($ Id.VSub_DollarName '$ignored') <','> ($ Id.VSub_DollarName '$ignored_for_now'))} {<--count>} 
              {<--exit-zero>} {<--max-complexity> <Id.Lit_Equals '='> <10>} {<--max-line-length> <Id.Lit_Equals '='> <127>} 
              {<--statistics>}
            )
          ]
        )
    )
    (command.ShFunction name:travis body:(BraceGroup children:[(C {<flake8-all>})]))
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)