| ... | @@ -40,14 +40,13 @@ const sourceExtensions = new Set([".swift", ".kt", ".kts"]); | ... | @@ -40,14 +40,13 @@ const sourceExtensions = new Set([".swift", ".kt", ".kts"]); |
| 40 | const excludedDirectories = new Set([ | 40 | const excludedDirectories = new Set([ |
| 41 | ".expo", | 41 | ".expo", |
| 42 | ".git", | 42 | ".git", |
| 43 | "android", | | |
| 44 | "build", | 43 | "build", |
| 45 | "DerivedData", | 44 | "DerivedData", |
| 46 | "ios", | | |
| 47 | "node_modules", | 45 | "node_modules", |
| 48 | "Pods", | 46 | "Pods", |
| 49 | "Vendor", | 47 | "Vendor", |
| 50 | ]); | 48 | ]); |
| | 49 | const generatedNativeProjectDirectories = new Set(["android", "ios"]); |
| 51 | | 50 | |
| 52 | const appRoot = Effect.service(Path.Path).pipe( | 51 | const appRoot = Effect.service(Path.Path).pipe( |
| 53 | Effect.flatMap((path) => path.fromFileUrl(new URL("../apps/mobile", import.meta.url))), | 52 | Effect.flatMap((path) => path.fromFileUrl(new URL("../apps/mobile", import.meta.url))), |
| ... | @@ -108,6 +107,7 @@ const runCommand = Effect.fn("runCommand")(function* ( | ... | @@ -108,6 +107,7 @@ const runCommand = Effect.fn("runCommand")(function* ( |
| 108 | | 107 | |
| 109 | function collectSources( | 108 | function collectSources( |
| 110 | directory: string, | 109 | directory: string, |
| | 110 | root: string, |
| 111 | ): Effect.Effect< | 111 | ): Effect.Effect< |
| 112 | ReadonlyArray<string>, | 112 | ReadonlyArray<string>, |
| 113 | PlatformError.PlatformError, | 113 | PlatformError.PlatformError, |
| ... | @@ -120,15 +120,18 @@ function collectSources( | ... | @@ -120,15 +120,18 @@ function collectSources( |
| 120 | const sources: Array<string> = []; | 120 | const sources: Array<string> = []; |
| 121 | | 121 | |
| 122 | for (const entry of entries) { | 122 | for (const entry of entries) { |
| 123 | if (excludedDirectories.has(entry)) { | | |
| 124 | continue; | | |
| 125 | } | | |
| 126 | | | |
| 127 | const entryPath = path.join(directory, entry); | 123 | const entryPath = path.join(directory, entry); |
| 128 | const stat = yield* fs.stat(entryPath); | 124 | const stat = yield* fs.stat(entryPath); |
| 129 | | 125 | |
| 130 | if (stat.type === "Directory") { | 126 | if (stat.type === "Directory") { |
| 131 | sources.push(...(yield* collectSources(entryPath))); | 127 | const isGeneratedNativeProjectDirectory = |
| | 128 | directory === root && generatedNativeProjectDirectories.has(entry); |
| | 129 | |
| | 130 | if (excludedDirectories.has(entry) || isGeneratedNativeProjectDirectory) { |
| | 131 | continue; |
| | 132 | } |
| | 133 | |
| | 134 | sources.push(...(yield* collectSources(entryPath, root))); |
| 132 | continue; | 135 | continue; |
| 133 | } | 136 | } |
| 134 | | 137 | |
| ... | @@ -144,7 +147,7 @@ function collectSources( | ... | @@ -144,7 +147,7 @@ function collectSources( |
| 144 | const runNativeStaticChecks = Effect.fn("runNativeStaticChecks")(function* () { | 147 | const runNativeStaticChecks = Effect.fn("runNativeStaticChecks")(function* () { |
| 145 | const path = yield* Path.Path; | 148 | const path = yield* Path.Path; |
| 146 | const root = yield* appRoot; | 149 | const root = yield* appRoot; |
| 147 | const sources = yield* collectSources(root); | 150 | const sources = yield* collectSources(root, root); |
| 148 | const swiftSources = sources.filter((source) => path.extname(source) === ".swift"); | 151 | const swiftSources = sources.filter((source) => path.extname(source) === ".swift"); |
| 149 | const kotlinSources = sources.filter((source) => { | 152 | const kotlinSources = sources.filter((source) => { |
| 150 | const extension = path.extname(source); | 153 | const extension = path.extname(source); |
| ... | @@ -156,6 +159,10 @@ const runNativeStaticChecks = Effect.fn("runNativeStaticChecks")(function* () { | ... | @@ -156,6 +159,10 @@ const runNativeStaticChecks = Effect.fn("runNativeStaticChecks")(function* () { |
| 156 | availableTools.set(tool.command, yield* commandExists(tool.command)); | 159 | availableTools.set(tool.command, yield* commandExists(tool.command)); |
| 157 | } | 160 | } |
| 158 | | 161 | |
| | 162 | yield* Console.log( |
| | 163 | `Found ${swiftSources.length} Swift and ${kotlinSources.length} Kotlin native source files.`, |
| | 164 | ); |
| | 165 | |
| 159 | if (swiftSources.length > 0) { | 166 | if (swiftSources.length > 0) { |
| 160 | if (availableTools.get("swiftlint")) { | 167 | if (availableTools.get("swiftlint")) { |
| 161 | yield* runCommand("swiftlint", ["lint", "--config", ".swiftlint.yml", "--strict"], root); | 168 | yield* runCommand("swiftlint", ["lint", "--config", ".swiftlint.yml", "--strict"], root); |