(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {<nim>}
          spids: [12]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<0.17.0>}
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: {(DQ <'A systems and applications programming language'>)}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'https://nim-lang.org/'>)}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <all>)}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <MIT>)}
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:checkdepends)
          op: assign_op.Equal
          rhs: {(DQ <'sqlite-libs nodejs'>)}
          spids: [41]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:subpackages)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$pkgname') <'-doc nimsuggest niminst'>)}
          spids: [46]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'https://nim-lang.org/download/'> ($ Id.VSub_DollarName '$pkgname') <-> 
                ($ Id.VSub_DollarName '$pkgver') <'.tar.xz\n'> <'\t'> ($ Id.VSub_DollarName '$pkgname') <-csources-> ($ Id.VSub_DollarName '$pkgver') 
                <'.tar.gz::https://github.com/nim-lang/csources/archive/v'> ($ Id.VSub_DollarName '$pkgver') <'.tar.gz\n'> <'\tniminst-fix-paths.patch\n'> 
                <'\tnim-config-fix-paths.patch'>
              )
            }
          spids: [52]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$pkgname') <-> 
                ($ Id.VSub_DollarName '$pkgver')
              )
            }
          spids: [70]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$CARCH'))}
      arms: [
        (case_arm
          pat_list: [{<armhf>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:options)
                  op: assign_op.Equal
                  rhs: {(DQ <'!check'>)}
                  spids: [95]
                )
              ]
            )
          ]
          spids: [92 93 99 -1]
        )
      ]
    )
    (command.ShFunction
      name: prepare
      body: 
        (BraceGroup
          children: [
            (C {<mv>} 
              {(DQ ($ Id.VSub_DollarName '$srcdir')) <'/csources-'> ($ Id.VSub_DollarName '$pkgver')} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/csources'>}
            )
            (C {<default_prepare>})
          ]
        )
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/csources'>})
            (C {<msg2>} {(DQ <'Building nim csources...'>)})
            (C {<'./build.sh'>})
            (C {<cd>} {<..>})
            (C {<msg2>} {(DQ <'Building koch...'>)})
            (C {<'./bin/nim'>} {<compile>} {<-d> <Id.Lit_Colon ':'> <release>} {<koch>})
            (C {<msg2>} {(DQ <'Building nim...'>)})
            (C {<'./koch'>} {<boot>} {<-d> <Id.Lit_Colon ':'> <release>})
            (C {<msg2>} {(DQ <'Building nimsuggest...'>)})
            (C {<'./bin/nim'>} {<compile>} {<-d> <Id.Lit_Colon ':'> <release>} 
              {<'nimsuggest/nimsuggest.nim'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: check
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<'./koch'>} {<tests>} {<--pedantic>} {<--targets> <Id.Lit_Equals '='> (DQ <'c js'>)} 
                  {<all>}
                )
                (C {<true>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.Simple
              words: [{<'./koch'>} {<install>} {<'/usr/bin'>}]
              more_env: [
                (env_pair
                  name: DESTDIR
                  val: {(DQ ($ Id.VSub_DollarName '$pkgdir'))}
                  spids: [272]
                )
              ]
              do_fork: T
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$pkgdir'))})
            (C {<mkdir>} {<-p>} {<'usr/include'>})
            (command.Sentence child:(C {<local>} {<file>}) terminator:<Id.Op_Semi _>)
            (command.ForEach
              iter_name: file
              iter_words: [{<'usr/lib/nim/'> <Id.Lit_Star '*'> <.h>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<mv>} {($ Id.VSub_DollarName '$file')} {<'usr/include/'>})
                    (C {<ln>} {<-s>} 
                      {<'../../include/'> 
                        (braced_var_sub
                          token: <Id.VSub_Name file>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VOp1_DPound '##'>
                              arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                            )
                        )
                      } 
                      {<'usr/lib/nim/'> 
                        (braced_var_sub
                          token: <Id.VSub_Name file>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VOp1_DPound '##'>
                              arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                            )
                        )
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: nimsuggest
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'idetools for the nim language'>)}
                  spids: [358]
                )
              ]
            )
            (C {<install>} {<-D>} {<-m>} {<755>} 
              {(DQ ($ Id.VSub_DollarName '$builddir')) <'/nimsuggest/nimsuggest'>} {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/bin/nimsuggest'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: niminst
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'A tool to generate an installer for a Nim program'>)}
                  spids: [395]
                )
              ]
            )
            (C {<install>} {<-D>} {<-m>} {<755>} 
              {(DQ ($ Id.VSub_DollarName '$builddir')) <'/tools/niminst/niminst'>} {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/usr/bin/niminst'>}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'90d709b39746fac5582b9df69d3eb9e3b7a39563a98f7a3002f00716b936e4e0d2be47d8b877878318692e6e2b85c08077dfcc20d9059573a1967402c244894b  nim-0.17.0.tar.xz\n'
                > 
                <
'fbf64d347e25da48d5237eef35209774f0e542975465c5d2cd98878f10ea0ab62ad1404758131543b8cf634afabc90d85e9e59dec96eae9bb60fffb88d204d92  nim-csources-0.17.0.tar.gz\n'
                > 
                <
'4ab36c5d8772567ba09b536e3dd91ddcf253892056751318ccbfce7ac24f0a646bfcd94f5dadc823c9a8394bea9614fede20c1805638052ebdbe7b5bafba4f05  niminst-fix-paths.patch\n'
                > 
                <
'813eb4cb93b0e9f12cb7666bef65c583390008ec09bc850f43f621688dc809bc51c105898095a8ef6316fbef49ac657a7abc75d74ad7b8cb3919c8f1a721af02  nim-config-fix-paths.patch'
                >
              )
            }
          spids: [425]
        )
      ]
    )
  ]
)