code: func Pack(opts PackOptions) error {
  	pwd, err := os.Getwd()
  	if err != nil {
  		return err
  	}
  
  	opts.Roots = append(opts.Roots, pwd)
  	if err := Clean(opts.Roots...); err != nil {
  		return err
  	}
  
  	p, err := parser.NewFromRoots(opts.Roots, &parser.RootsOptions{
  		IgnoreImports: opts.IgnoreImports,
  	})
  	if err != nil {
  		return err
  	}
  	boxes, err := p.Run()
  	if err != nil {
  		return err
  	}
  
  	// reduce boxes - remove ones we don't want
  	// MB: current assumption is we want all these
  	// boxes, just adding a comment suggesting they're
  	// might be a reason to exclude some
  
  	plog.Logger.Debugf("found %d boxes", len(boxes))
  
  	if len(opts.StoreCmd) != 0 {
  		return ShellPack(opts, boxes)
  	}
  
  	var st store.Store = store.NewDisk("", "")
  
  	if opts.Legacy {
  		st = store.NewLegacy()
  	}
  
  	for _, b := range boxes {
  		if b.Name == store.DISK_GLOBAL_KEY {
  			continue
  		}
  		if err := st.Pack(b); err != nil {
  			return err
  		}
  	}
  	if cl, ok := st.(io.Closer); ok {
  		return cl.Close()
  	}
  	return nil
  }
docs: // Pack the roots given + PWD