From 25d5ee9b10c0c34dae7eea9fc4a581bf35c13d42 Mon Sep 17 00:00:00 2001 From: janoshrubos Date: Thu, 7 Jan 2021 19:40:47 +0100 Subject: [PATCH 1/4] feat: handle empty platforms folder --- lib/controllers/platform-controller.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/controllers/platform-controller.ts b/lib/controllers/platform-controller.ts index 2203c1a56e..4d83028d00 100644 --- a/lib/controllers/platform-controller.ts +++ b/lib/controllers/platform-controller.ts @@ -143,6 +143,21 @@ export class PlatformController implements IPlatformController { const hasPlatformDirectory = this.$fs.exists( path.join(projectData.platformsDir, platformName) ); + + if (hasPlatformDirectory) { + const isPlatformDirectoryEmpty = + this.$fs.readDirectory( + path.join(projectData.platformsDir, platformName) + ).length <= 5; + + if (isPlatformDirectoryEmpty) { + this.$logger.warn( + `${projectData.platformsDir}/${platformName} folder is empty. Run 'ns clean' to generate required files.`, + { wrapMessageWithBorders: true } + ); + } + } + const shouldAddNativePlatform = !nativePrepare || !nativePrepare.skipNativePrepare; const prepareInfo = this.$projectChangesService.getPrepareInfo( From 5fe07176a9930d26e88dd8a7c3954c1a119106b6 Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Tue, 12 Jan 2021 18:54:39 +0100 Subject: [PATCH 2/4] chore: shorter warning message Co-authored-by: Igor Randjelovic --- lib/controllers/platform-controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/controllers/platform-controller.ts b/lib/controllers/platform-controller.ts index 4d83028d00..a22d9a8a84 100644 --- a/lib/controllers/platform-controller.ts +++ b/lib/controllers/platform-controller.ts @@ -152,7 +152,7 @@ export class PlatformController implements IPlatformController { if (isPlatformDirectoryEmpty) { this.$logger.warn( - `${projectData.platformsDir}/${platformName} folder is empty. Run 'ns clean' to generate required files.`, + `The platforms/${platformName} folder appears to be invalid. If the build fails, run 'ns clean' and rebuild the app.`, { wrapMessageWithBorders: true } ); } From f8954a047a1bac2fb4cee391c09ad716bc7fe870 Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Tue, 12 Jan 2021 19:00:55 +0100 Subject: [PATCH 3/4] fix: platformDirectoryItemCount variable name --- lib/controllers/platform-controller.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/controllers/platform-controller.ts b/lib/controllers/platform-controller.ts index a22d9a8a84..9b84ca658f 100644 --- a/lib/controllers/platform-controller.ts +++ b/lib/controllers/platform-controller.ts @@ -145,12 +145,11 @@ export class PlatformController implements IPlatformController { ); if (hasPlatformDirectory) { - const isPlatformDirectoryEmpty = - this.$fs.readDirectory( - path.join(projectData.platformsDir, platformName) - ).length <= 5; + const platformDirectoryItemCount = this.$fs.readDirectory( + path.join(projectData.platformsDir, platformName) + ).length; - if (isPlatformDirectoryEmpty) { + if (platformDirectoryItemCount <= 5) { this.$logger.warn( `The platforms/${platformName} folder appears to be invalid. If the build fails, run 'ns clean' and rebuild the app.`, { wrapMessageWithBorders: true } From 5ce5c5fe59238b10fdbeb85b23c8d3ece18bf15a Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Tue, 12 Jan 2021 19:06:33 +0100 Subject: [PATCH 4/4] chore: explaining platformDirectoryItemCount check Co-authored-by: Igor Randjelovic --- lib/controllers/platform-controller.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/controllers/platform-controller.ts b/lib/controllers/platform-controller.ts index 9b84ca658f..e0e2b99974 100644 --- a/lib/controllers/platform-controller.ts +++ b/lib/controllers/platform-controller.ts @@ -149,6 +149,9 @@ export class PlatformController implements IPlatformController { path.join(projectData.platformsDir, platformName) ).length; + // 5 is a magic number to approximate a valid platform folder + // any valid platform should contain at least 5 files + // we choose 5 to avoid false-positives due to system files like .DS_Store etc. if (platformDirectoryItemCount <= 5) { this.$logger.warn( `The platforms/${platformName} folder appears to be invalid. If the build fails, run 'ns clean' and rebuild the app.`,