code: func ProjectNames(c context.Context, a cfgclient.Authority) ([]types.ProjectName, error) {
  	configPath := ProjectConfigPath(c)
  
  	var metas []*config.Meta
  	if err := cfgclient.Projects(c, a, configPath, nil, &metas); err != nil {
  		log.WithError(err).Errorf(c, "Failed to load project configs.")
  		return nil, err
  	}
  
  	// Iterate through our Metas and extract the project names.
  	projects := make([]types.ProjectName, 0, len(metas))
  	for _, meta := range metas {
  		if projectName := meta.ConfigSet.Project(); projectName != "" {
  			projects = append(projects, types.ProjectName(projectName))
  		}
  	}
  	sort.Sort(projectNameSlice(projects))
  	return projects, nil
  }
docs: // ProjectNames returns a sorted list of the names of all of the projects
  // that the supplied authority can view.