code: func (a *application) splitPath(p string) (types.ProjectName, string, bool, error) {
  	if a.project != "" {
  		return a.project, p, false, nil
  	}
  
  	parts := strings.SplitN(p, types.StreamNameSepStr, 2)
  
  	project := types.ProjectName(parts[0])
  	if err := project.Validate(); err != nil {
  		return "", "", false, fmt.Errorf("invalid project name %q: %v", project, err)
  	}
  
  	if len(parts) == 2 {
  		p = parts[1]
  	} else {
  		p = ""
  	}
  	return project, p, true, nil
  }
docs: // splitPath converts between a possible user-facing "unified" stream path
  // (e.g., "project/path...") to separate project/path values.
  //
  // If a project is supplied via command-line, the path is returned directly
  // along with the project. If no project is supplied, the first slash-delimited
  // component of "p" is used as the project name.