code: func MountPointFromString(mp string) (*MountPoint, error) {
  	var mount MountPoint
  
  	mp = "name=" + mp
  	mpQuery, err := common.MakeQueryString(mp)
  	if err != nil {
  		return nil, err
  	}
  
  	v, err := url.ParseQuery(mpQuery)
  	if err != nil {
  		return nil, err
  	}
  	for key, val := range v {
  		if len(val) > 1 {
  			return nil, fmt.Errorf("label %s with multiple values %q", key, val)
  		}
  
  		switch key {
  		case "name":
  			acn, err := NewACName(val[0])
  			if err != nil {
  				return nil, err
  			}
  			mount.Name = *acn
  		case "path":
  			mount.Path = val[0]
  		case "readOnly":
  			ro, err := strconv.ParseBool(val[0])
  			if err != nil {
  				return nil, err
  			}
  			mount.ReadOnly = ro
  		default:
  			return nil, fmt.Errorf("unknown mountpoint parameter %q", key)
  		}
  	}
  	err = mount.assertValid()
  	if err != nil {
  		return nil, err
  	}
  
  	return &mount, nil
  }
docs: // MountPointFromString takes a command line mountpoint parameter and returns a mountpoint
  //
  // It is useful for actool patch-manifest --mounts
  //
  // Example mountpoint parameters:
  // 	database,path=/tmp,readOnly=true