MCPcopy Create free account
hub / github.com/ddev/ddev / getRequestedProjectsExtended

Function getRequestedProjectsExtended

cmd/ddev/cmd/utils.go:22–88  ·  view source on GitHub ↗

getRequestedProjectsExtended will collect and return the requested projects from command line arguments and flags. If withNonExisting is true, it will return project stubs even if they don't exist.

(names []string, all bool, withNonExisting bool)

Source from the content-addressed store, hash-verified

20// getRequestedProjectsExtended will collect and return the requested projects from command line arguments and flags.
21// If withNonExisting is true, it will return project stubs even if they don't exist.
22func getRequestedProjectsExtended(names []string, all bool, withNonExisting bool) ([]*ddevapp.DdevApp, error) {
23 requestedProjects := make([]*ddevapp.DdevApp, 0)
24
25 // If no project is specified, return the current project
26 if len(names) == 0 && !all {
27 project, err := ddevapp.GetActiveApp("")
28 if err != nil {
29 return nil, err
30 }
31
32 return append(requestedProjects, project), nil
33 }
34
35 allProjects, err := ddevapp.GetProjects(false)
36 if err != nil {
37 return nil, err
38 }
39
40 // If all projects are requested, return here
41 if all {
42 for _, project := range allProjects {
43 err = project.ValidateConfig()
44 if err != nil {
45 return nil, err
46 }
47 }
48
49 return allProjects, nil
50 }
51
52 // Convert all projects slice into map indexed by project name to prevent duplication
53 allProjectMap := map[string]*ddevapp.DdevApp{}
54 for _, project := range allProjects {
55 allProjectMap[project.Name] = project
56 }
57
58 // Select requested projects
59 requestedProjectsMap := map[string]*ddevapp.DdevApp{}
60 for _, name := range names {
61 var exists bool
62 // If the requested project name is found in the Docker map, OK
63 // If not, if we find it in the global project list, (if it has approot)
64 // Otherwise, error.
65 if requestedProjectsMap[name], exists = allProjectMap[name]; !exists {
66 p := globalconfig.GetProject(name)
67 if p != nil && p.AppRoot != "" {
68 requestedProjectsMap[name] = &ddevapp.DdevApp{Name: name, AppRoot: p.AppRoot}
69 } else if withNonExisting {
70 requestedProjectsMap[name] = &ddevapp.DdevApp{Name: name}
71 } else {
72 return nil, fmt.Errorf("could not find requested project '%s', you may need to use \"ddev start\" to add it to the project catalog", name)
73 }
74 }
75 }
76
77 // Convert map back to slice
78 for _, project := range requestedProjectsMap {
79 err = project.ValidateConfig()

Callers 2

getRequestedProjectsFunction · 0.85
delete.goFile · 0.85

Calls 5

GetActiveAppFunction · 0.92
GetProjectsFunction · 0.92
GetProjectFunction · 0.92
ValidateConfigMethod · 0.80
ErrorfMethod · 0.80

Tested by

no test coverage detected