(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-e)})
    (C {(Id.KW_Set set)} {(-x)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:21)
                command_list: (command.CommandList children:[(C {(git)} {(describe)} {(--always)})])
              ) (-linux-x86)
            }
          spids: [20]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DEST)
          op: assign_op.Equal
          rhs: {(dist/) ($ Id.VSub_DollarName '$VERSION')}
          spids: [32]
        )
      ]
    )
    (C {(rm)} {(-rf)} {($ Id.VSub_DollarName '$DEST')})
    (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$DEST')})
    (command.Pipeline
      children: [
        (C {(git)} {(archive)} {(HEAD)})
        (C {(tar)} {(x)} {(-C)} {($ Id.VSub_DollarName '$DEST')})
      ]
      negated: F
    )
    (C {(make)} {(-BC)} {($ Id.VSub_DollarName '$DEST') (/generator/proto)})
    (C {(cp)} {($ Id.VSub_DollarName '$DEST') (/generator/nanopb_generator.py)} 
      {($ Id.VSub_DollarName '$DEST') (/generator/protoc-gen-nanopb.py)}
    )
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence
              child: (C {(cd)} {($ Id.VSub_DollarName '$DEST') (/generator)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:102)
            )
            (C {(bbfreeze)} {(nanopb_generator.py)} {(protoc-gen-nanopb.py)})
          ]
        )
    )
    (C {(mv)} {($ Id.VSub_DollarName '$DEST') (/generator/dist)} 
      {($ Id.VSub_DollarName '$DEST') (/generator-bin)}
    )
    (C {(rm)} {($ Id.VSub_DollarName '$DEST') (/generator/protoc-gen-nanopb.py)})
    (C {(cp)} 
      {
        (command_sub
          left_token: (Token id:Id.Left_Backtick val:'`' span_id:135)
          command_list: (command.CommandList children:[(C {(which)} {(protoc)})])
        )
      } {($ Id.VSub_DollarName '$DEST') (/generator-bin/protoc.bin)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIBPROTOC)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:147)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(ldd)} 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:150)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(which)} {(protoc)})]
                                  )
                              )
                            }
                          )
                          (C {(grep)} {(-o)} 
                            {(SQ (Token id:Id.Lit_Chars val:'/.*libprotoc[^ ]*' span_id:165))}
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [146]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIBPROTOBUF)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:170)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(ldd)} 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:173)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(which)} {(protoc)})]
                                  )
                              )
                            }
                          )
                          (C {(grep)} {(-o)} 
                            {(SQ (Token id:Id.Lit_Chars val:'/.*libprotobuf[^ ]*' span_id:188))}
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [169]
        )
      ]
    )
    (C {(cp)} {($ Id.VSub_DollarName '$LIBPROTOC')} {($ Id.VSub_DollarName '$LIBPROTOBUF')} 
      {($ Id.VSub_DollarName '$DEST') (/generator-bin/)}
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:203)
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$DEST') (/generator-bin/protoc)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:208)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 241
          stdin_parts: [
            ('#!/bin/bash\n')
            ('SCRIPTDIR=')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:214)
            )
            ('(dirname ')
            (Id.Right_DoubleQuote '"')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:217)
            )
            (0)
            (Id.Right_DoubleQuote '"')
            (')\n')
            ('export LD_LIBRARY_PATH=')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:222)
            )
            ('SCRIPTDIR\n')
            ('export PATH=')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:225)
            )
            ('SCRIPTDIR:')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:227)
            )
            ('PATH\n')
            ('exec ')
            (Id.Right_DoubleQuote '"')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:231)
            )
            (SCRIPTDIR/protoc.bin)
            (Id.Right_DoubleQuote '"')
            (' ')
            (Id.Right_DoubleQuote '"')
            (word_part.EscapedLiteral
              token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:236)
            )
            ('@')
            (Id.Right_DoubleQuote '"')
            ('\n')
          ]
        )
      ]
    )
    (C {(chmod)} {(Id.Lit_Other '+') (x)} {($ Id.VSub_DollarName '$DEST') (/generator-bin/protoc)})
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence
              child: (C {(cd)} {(dist)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:259)
            )
            (C {(tar)} {(-czf)} {($ Id.VSub_DollarName '$VERSION') (.tar.gz)} 
              {($ Id.VSub_DollarName '$VERSION')}
            )
          ]
        )
    )
  ]
)