| 149 | } |
| 150 | |
| 151 | func formatProjectGroupForBasic(opts *ViewOptions, projectGroup *projectgroups.ProjectGroup, projects []*projects.Project) string { |
| 152 | var result strings.Builder |
| 153 | |
| 154 | // header |
| 155 | result.WriteString(fmt.Sprintf("%s %s\n", output.Bold(projectGroup.GetName()), output.Dimf("(%s)", projectGroup.GetID()))) |
| 156 | |
| 157 | // description |
| 158 | if projectGroup.Description == "" { |
| 159 | result.WriteString(fmt.Sprintln(output.Dim(constants.NoDescription))) |
| 160 | } else { |
| 161 | result.WriteString(fmt.Sprintln(output.Dim(projectGroup.Description))) |
| 162 | } |
| 163 | |
| 164 | // projects |
| 165 | result.WriteString(fmt.Sprint(output.Cyan("\nProjects:\n"))) |
| 166 | for _, project := range projects { |
| 167 | result.WriteString(fmt.Sprintf("%s (%s)\n", output.Bold(project.GetName()), project.Slug)) |
| 168 | } |
| 169 | |
| 170 | // footer with web URL |
| 171 | url := util.GenerateWebURL(opts.Host, projectGroup.SpaceID, fmt.Sprintf("projects?projectGroupId=%s", projectGroup.GetID())) |
| 172 | result.WriteString(fmt.Sprintf("\nView this project group in Octopus Deploy: %s\n", output.Blue(url))) |
| 173 | |
| 174 | if opts.flags.Web.Value { |
| 175 | browser.OpenURL(url) |
| 176 | } |
| 177 | |
| 178 | return result.String() |
| 179 | } |