@@ -96,27 +96,35 @@ func findProjectsUnderPath(targetPath *paths.Path, projectType projecttype.Type,
96
96
// findSubprojects finds subprojects of the given project.
97
97
// For example, the subprojects of a library are its example sketches.
98
98
func findSubprojects (superproject Type , apexSuperprojectType projecttype.Type ) []Type {
99
- var immediateSubprojects []Type
99
+ subprojectFolderNames := []string {}
100
+ var subProjectType projecttype.Type
101
+ var searchPathsRecursively bool
100
102
103
+ // Determine possible subproject paths
101
104
switch superproject .ProjectType {
102
105
case projecttype .Sketch :
103
106
// Sketches don't have subprojects
104
107
return nil
105
108
case projecttype .Library :
106
- for _ , subprojectFolderName := range library .ExamplesFolderSupportedNames () {
107
- subprojectPath := superproject .Path .Join (subprojectFolderName )
108
- immediateSubprojects = append (immediateSubprojects , findProjectsUnderPath (subprojectPath , projecttype .Sketch , true )... )
109
- }
109
+ subprojectFolderNames = append (subprojectFolderNames , library .ExamplesFolderSupportedNames ()... )
110
+ subProjectType = projecttype .Sketch
111
+ searchPathsRecursively = true // Examples sketches can be under nested subfolders
110
112
case projecttype .Platform :
111
- for _ , subprojectFolderName := range platform .BundledLibrariesFolderNames () {
112
- subprojectPath := superproject .Path .Join (subprojectFolderName )
113
- immediateSubprojects = append (immediateSubprojects , findProjectsUnderPath (subprojectPath , projecttype .Library , false )... )
114
- }
113
+ subprojectFolderNames = append (subprojectFolderNames , platform .BundledLibrariesFolderNames ()... )
114
+ subProjectType = projecttype .Library
115
+ searchPathsRecursively = false // Bundled libraries must be in the root of the libraries folder
115
116
case projecttype .PackageIndex :
116
117
// Platform indexes don't have subprojects
117
118
return nil
118
119
}
119
120
121
+ // Search the subproject paths for projects
122
+ var immediateSubprojects []Type
123
+ for _ , subprojectFolderName := range subprojectFolderNames {
124
+ subprojectPath := superproject .Path .Join (subprojectFolderName )
125
+ immediateSubprojects = append (immediateSubprojects , findProjectsUnderPath (subprojectPath , subProjectType , searchPathsRecursively )... )
126
+ }
127
+
120
128
var allSubprojects []Type
121
129
// Subprojects may have their own subprojects.
122
130
for _ , immediateSubproject := range immediateSubprojects {
0 commit comments