--- a/ProjectChecker.st Mon Aug 15 18:10:26 2016 +0200
+++ b/ProjectChecker.st Mon Aug 15 18:10:40 2016 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
@@ -618,6 +620,33 @@
^true
"Created: / 11-04-2012 / 12:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+checkSubProjects
+ "Checks whether all subprojects listed in #subprojects are present."
+
+ |isValidName subProjectsListed invalidNames validNames subProjectsNotPresent|
+
+ isValidName :=
+ [:prj |
+ (prj first isLetter
+ and:[ ((prj occurrencesOf:$:) <= 1)
+ and:[ ((prj copyReplaceAll:$: with:$/)
+ conform:[:ch | ch isLetterOrDigit or:['/-_.' includes:ch]]) ]])
+ ].
+
+ subProjectsListed := currentPackageDef subProjects.
+ invalidNames := subProjectsListed select:[:prj | (isValidName value:prj) not].
+ validNames := subProjectsListed select:isValidName.
+
+ subProjectsNotPresent := validNames select:[:prj | prj asPackageId projectDefinitionClass isNil].
+
+ invalidNames do:[:eachBadName |
+ self addProblem: (ProjectProblem newInvalidPackageName badName:eachBadName).
+ ].
+ subProjectsNotPresent do:[:eachMissing |
+ self addProblem: (ProjectProblem newProjectDefinitionDoesNotExist missing: eachMissing).
+ ].
! !
!ProjectChecker methodsFor:'checks-private'!
@@ -715,13 +744,15 @@
!
checkPackage
- (currentPackageDef notNil and:[currentPackageDef isFolderForProjectsDefinition]) ifTrue:[^ self].
-
- (checkExtensionsOnly ? false) ifFalse:[
- self checkClassListConsistency.
+ currentPackageDef isNil ifTrue:[^ self].
+ currentPackageDef isFolderForProjectsDefinition ifFalse:[
+ (checkExtensionsOnly ? false) ifFalse:[
+ self checkClassListConsistency.
+ ].
+ self checkExtensionsListConsistency.
+ self checkExtensionsPrerequisites.
].
- self checkExtensionsListConsistency.
- self checkExtensionsPrerequisites.
+ self checkSubProjects.
"add more here..."
@@ -763,14 +794,14 @@
!ProjectChecker class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.33 2015-02-24 23:50:29 cg Exp $'
+ ^ '$Header$'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.33 2015-02-24 23:50:29 cg Exp $'
+ ^ '$Header$'
!
version_SVN
- ^ '$Id: ProjectChecker.st,v 1.33 2015-02-24 23:50:29 cg Exp $'
+ ^ '$Id$'
! !