MCPcopy Index your code
hub / github.com/coder/coder / renderDevcontainerRow

Function renderDevcontainerRow

cli/cliui/resources.go:194–284  ·  view source on GitHub ↗
(resources []codersdk.WorkspaceResource, devcontainer codersdk.WorkspaceAgentDevcontainer, index, total int, wro WorkspaceResourcesOptions)

Source from the content-addressed store, hash-verified

192}
193
194func renderDevcontainerRow(resources []codersdk.WorkspaceResource, devcontainer codersdk.WorkspaceAgentDevcontainer, index, total int, wro WorkspaceResourcesOptions) []table.Row {
195 var rows []table.Row
196
197 // If the devcontainer is running and has an associated agent, we want to
198 // display the agent's details. Otherwise, we just display the devcontainer
199 // name and status.
200 var subAgent *codersdk.WorkspaceAgent
201 displayName := devcontainer.Name
202 if devcontainer.Agent != nil && devcontainer.Status == codersdk.WorkspaceAgentDevcontainerStatusRunning {
203 for _, resource := range resources {
204 if agent, found := slice.Find(resource.Agents, func(agent codersdk.WorkspaceAgent) bool {
205 return agent.ID == devcontainer.Agent.ID
206 }); found {
207 subAgent = &agent
208 break
209 }
210 }
211 if subAgent != nil {
212 displayName = subAgent.Name
213 displayName += fmt.Sprintf(" (%s, %s)", subAgent.OperatingSystem, subAgent.Architecture)
214 }
215 }
216
217 if devcontainer.Container != nil {
218 displayName += " " + pretty.Sprint(DefaultStyles.Keyword, "["+devcontainer.Container.FriendlyName+"]")
219 }
220
221 // Build the main row.
222 row := table.Row{
223 fmt.Sprintf(" %s─ %s", renderPipe(index, total), displayName),
224 }
225
226 // Add status, health, and version columns.
227 if !wro.HideAgentState {
228 if subAgent != nil {
229 row = append(row, renderAgentStatus(*subAgent))
230 row = append(row, renderAgentHealth(*subAgent))
231 row = append(row, renderAgentVersion(subAgent.Version, wro.ServerVersion))
232 } else {
233 row = append(row, renderDevcontainerStatus(devcontainer.Status))
234 row = append(row, "") // No health for devcontainer without agent.
235 row = append(row, "") // No version for devcontainer without agent.
236 }
237 }
238
239 // Add access column.
240 if !wro.HideAccess {
241 if subAgent != nil {
242 accessString := fmt.Sprintf("coder ssh %s.%s", wro.WorkspaceName, subAgent.Name)
243 row = append(row, pretty.Sprint(DefaultStyles.Code, accessString))
244 } else {
245 row = append(row, "") // No access for devcontainers without agent.
246 }
247 }
248
249 rows = append(rows, row)
250
251 // Add error message if present.

Callers 1

renderDevcontainersFunction · 0.85

Calls 7

FindFunction · 0.92
renderPipeFunction · 0.85
renderAgentStatusFunction · 0.85
renderAgentHealthFunction · 0.85
renderAgentVersionFunction · 0.85
renderDevcontainerStatusFunction · 0.85
renderListeningPortsFunction · 0.85

Tested by

no test coverage detected