(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:pkgname spids:[6])
          op: Equal
          rhs: {(ruby-ffi)}
          spids: [6]
        )
      ]
      spids: [6]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:_gemname spids:[9])
          op: Equal
          rhs: {(ffi)}
          spids: [9]
        )
      ]
      spids: [9]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:pkgver spids:[12])
          op: Equal
          rhs: {(1.9.18)}
          spids: [12]
        )
      ]
      spids: [12]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:pkgrel spids:[15])
          op: Equal
          rhs: {(0)}
          spids: [15]
        )
      ]
      spids: [15]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:pkgdesc spids:[18])
          op: Equal
          rhs: {(DQ ('Ruby FFI library'))}
          spids: [18]
        )
      ]
      spids: [18]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:url spids:[23])
          op: Equal
          rhs: {(DQ ('https://github.com/ffi/ffi'))}
          spids: [23]
        )
      ]
      spids: [23]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:arch spids:[28])
          op: Equal
          rhs: {(DQ (all))}
          spids: [28]
        )
      ]
      spids: [28]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:license spids:[33])
          op: Equal
          rhs: {(DQ (BSD))}
          spids: [33]
        )
      ]
      spids: [33]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:makedepends spids:[38])
          op: Equal
          rhs: {(DQ ('libffi-dev ruby ruby-dev'))}
          spids: [38]
        )
      ]
      spids: [38]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:install spids:[43])
          op: Equal
          rhs: {(DQ ($ VSub_DollarName '$pkgname') (.post-install))}
          spids: [43]
        )
      ]
      spids: [43]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:source spids:[49])
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_DollarName '$pkgname') (-) ($ VSub_DollarName '$pkgver') 
                ('.tar.gz::https://github.com/ffi/') ($ VSub_DollarName '$_gemname') (/archive/) ($ VSub_DollarName '$pkgver') (.tar.gz)
              )
            }
          spids: [49]
        )
      ]
      spids: [49]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:builddir spids:[61])
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_DollarName '$srcdir') (/) ($ VSub_DollarName '$_gemname') (-) 
                ($ VSub_DollarName '$pkgver')
              )
            }
          spids: [61]
        )
      ]
      spids: [61]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:options spids:[70])
          op: Equal
          rhs: {(DQ ('!check'))}
          spids: [70]
        )
      ]
      spids: [70]
    )
    (command.FuncDef
      name: build
      body: 
        (command.BraceGroup
          children: [
            (C {(cd)} {(DQ ($ VSub_DollarName '$builddir'))})
            (C {(gem)} {(build)} {($ VSub_DollarName '$_gemname') (.gemspec)})
            (C {(gem)} {(install)} {(--local)} {(--install-dir)} {(dist)} {(--ignore-dependencies)} 
              {(--no-document)} {(--verbose)} {($ VSub_DollarName '$_gemname') (-) ($ VSub_DollarName '$pkgver') (.gem)}
            )
          ]
          spids: [83]
        )
      spids: [79 82]
    )
    (command.FuncDef
      name: check
      body: 
        (command.BraceGroup
          children: [
            (C {(cd)} {(DQ ($ VSub_DollarName '$builddir'))})
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dev_deps spids:[173])
                  op: Equal
                  rhs: 
                    {
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(gem)} {(install)} {(--explain)} {(--development)} 
                                    {(--minimal-deps)} {($ VSub_DollarName '$_gemname') (-) ($ VSub_DollarName '$pkgver') (.gem)}
                                  )
                                  (C {(head)} {(-n)} {(-1)})
                                  (C {(sed)} {(-En)} {(SQ <'s/-([^-]+)$/:\\1/p'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [174 209]
                      )
                    }
                  spids: [173]
                )
              ]
              spids: [171]
            )
            (C {(gem)} {(install)} {(--instal-dir) (Lit_Other '=') (.gem)} {(--conservative)} 
              {($ VSub_DollarName '$dev_deps')}
            )
            (command.SimpleCommand
              words: [{(.gem/bin/rspec)}]
              more_env: [(env_pair name:GEM_PATH val:{(SQ <'dist:.gem'>)} spids:[226])]
            )
          ]
          spids: [140]
        )
      spids: [136 139]
    )
    (command.FuncDef
      name: package
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:gemdir spids:[245])
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_DollarName '$pkgdir') (/) 
                        (word_part.CommandSubPart
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(ruby)} {(-rubygems)} {(-e)} {(SQ <'puts Gem.default_dir'>)})
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [249 259]
                        )
                      )
                    }
                  spids: [245]
                )
              ]
              spids: [243]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:carch spids:[266])
                  op: Equal
                  spids: [266]
                )
              ]
              spids: [264]
            )
            (command.Case
              to_match: {(DQ ($ VSub_DollarName '$CARCH'))}
              arms: [
                (case_arm
                  pat_list: [{(x86)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:carch spids:[281])
                          op: Equal
                          rhs: {(DQ (i386))}
                          spids: [281]
                        )
                      ]
                      spids: [281]
                    )
                  ]
                  spids: [278 279 285 16777215]
                )
                (case_arm
                  pat_list: [{(arm) (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:carch spids:[292])
                          op: Equal
                          rhs: {(DQ (arm))}
                          spids: [292]
                        )
                      ]
                      spids: [292]
                    )
                  ]
                  spids: [288 290 296 16777215]
                )
                (case_arm
                  pat_list: [{(ppc64le)}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:carch spids:[302])
                          op: Equal
                          rhs: {(DQ (powerpc64))}
                          spids: [302]
                        )
                      ]
                      spids: [302]
                    )
                  ]
                  spids: [299 300 306 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:carch spids:[312])
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$CARCH'))}
                          spids: [312]
                        )
                      ]
                      spids: [312]
                    )
                  ]
                  spids: [309 310 316 16777215]
                )
              ]
              spids: [269 275 319]
            )
            (C {(cd)} {(DQ ($ VSub_DollarName '$builddir')) (/dist)})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$gemdir'))})
            (C {(cp)} {(-r)} {(extensions)} {(gems)} {(specifications)} 
              {(DQ ($ VSub_DollarName '$gemdir')) (/)}
            )
            (C {(find)} {(DQ ($ VSub_DollarName '$gemdir')) (/extensions/)} {(-name)} {(mkmf.log)} 
              {(-delete)}
            )
            (C {(cd)} 
              {(DQ ($ VSub_DollarName '$gemdir')) (/gems/) ($ VSub_DollarName '$_gemname') (-) 
                ($ VSub_DollarName '$pkgver')
              }
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-r)} {(ext/)} {(gen/)} {(libtest/)} {(spec/)} {(lib/) (Lit_Other '*') (.so)} 
                  {(Rakefile)} {(Lit_Other '*') (.md)}
                )
                (C {(true)})
              ]
            )
            (C {(find)} {(lib/ffi/platform/) (Lit_Other '*')} {(-prune)} {(KW_Bang '!')} {(-name)} 
              {(DQ ($ VSub_DollarName '$carch') (-linux))} {(-exec)} {(rm)} {(-rf)} {(Lit_LBrace '{') (Lit_RBrace '}')} {(Lit_Other '+')}
            )
          ]
          spids: [240]
        )
      spids: [236 239]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:sha512sums spids:[444])
          op: Equal
          rhs: 
            {
              (DQ 
                (
'49c52e5e42e436b7969c35a34b28bd7929d75372638ac5373486a1d624026c12dc682009bc101e4a2c8f1442ed6f1ba17b438cda2e02d4256622b489c4bd9945  ruby-ffi-1.9.18.tar.gz'
                )
              )
            }
          spids: [444]
        )
      ]
      spids: [444]
    )
  ]
)