From 891368bd2276e0239369f6cb0163bdb53e378305 Mon Sep 17 00:00:00 2001 From: Felipe Armoni Date: Mon, 6 Jan 2025 19:14:09 -0300 Subject: [PATCH] Updated findWaspFile in new location --- waspc/src/Wasp/Project/Analyze.hs | 26 -------------------------- waspc/src/Wasp/Project/WaspFile.hs | 28 +++++++++++++++++----------- 2 files changed, 17 insertions(+), 37 deletions(-) diff --git a/waspc/src/Wasp/Project/Analyze.hs b/waspc/src/Wasp/Project/Analyze.hs index f3b6ab9683..83f006e356 100644 --- a/waspc/src/Wasp/Project/Analyze.hs +++ b/waspc/src/Wasp/Project/Analyze.hs @@ -118,32 +118,6 @@ constructAppSpec waspDir options externalConfigs parsedPrismaSchema decls = do return $ runValidation ASV.validateAppSpec appSpec -findWaspFile :: Path' Abs (Dir WaspProjectDir) -> IO (Either String WaspFilePath) -findWaspFile waspDir = do - let dotWaspPath = waspDir [relfile|.wasp|] - isFile <- IOUtil.doesFileExist dotWaspPath - if isFile - then return $ Left "Invalid file name for the .wasp file. Please rename it to [something].wasp." - else do - files <- fst <$> IOUtil.listDirectory waspDir - return $ case (findWaspTsFile files, findWaspLangFile files) of - (tsFiles, langFiles) - | not (null tsFiles) && not (null langFiles) -> Left bothFilesFoundMessage - | null tsFiles && null langFiles -> Left fileNotFoundMessage - | [waspTsFile] <- tsFiles, null langFiles -> Right waspTsFile - | null tsFiles, [waspLangFile] <- langFiles -> Right waspLangFile - | otherwise -> Left multipleFilesFoundMessage - where - findWaspTsFile files = WaspTs <$> findFileThatEndsWith ".wasp.ts" files - findWaspLangFile files = WaspLang <$> findFileThatEndsWith ".wasp" files - findFileThatEndsWith suffix files = castFile . (waspDir ) <$> findFilesThatEndWith suffix files - findFilesThatEndWith suffix files = filter ((suffix `isSuffixOf`) . fromRelFile) files - fileNotFoundMessage = "Couldn't find the *.wasp or a *.wasp.ts file in the " ++ fromAbsDir waspDir ++ " directory" - bothFilesFoundMessage = - "Found both *.wasp and *.wasp.ts files in the project directory. " - ++ "You must choose how you want to define your app (using Wasp or TypeScript) and only keep one of them." - multipleFilesFoundMessage = "Found multiple *.wasp or *.wasp.ts files in the project directory. Please keep only one." - analyzePrismaSchema :: Path' Abs (Dir WaspProjectDir) -> IO (Either [CompileError] Psl.Schema.Schema, [CompileWarning]) analyzePrismaSchema waspProjectDir = do findPrismaSchemaFile waspProjectDir >>= \case diff --git a/waspc/src/Wasp/Project/WaspFile.hs b/waspc/src/Wasp/Project/WaspFile.hs index 82502ca07a..fcc1ecf00d 100644 --- a/waspc/src/Wasp/Project/WaspFile.hs +++ b/waspc/src/Wasp/Project/WaspFile.hs @@ -12,6 +12,7 @@ import StrongPath castFile, fromAbsDir, fromRelFile, + relfile, (), ) import qualified Wasp.AppSpec as AS @@ -28,24 +29,29 @@ import qualified Wasp.Util.IO as IOUtil findWaspFile :: Path' Abs (Dir WaspProjectDir) -> IO (Either String WaspFilePath) findWaspFile waspDir = do - files <- fst <$> IOUtil.listDirectory waspDir - return $ case (findWaspTsFile files, findWaspLangFile files) of - (Just _, Just _) -> Left bothFilesFoundMessage - (Nothing, Nothing) -> Left fileNotFoundMessage - (Just waspTsFile, Nothing) -> Right waspTsFile - (Nothing, Just waspLangFile) -> Right waspLangFile + let dotWaspPath = waspDir [relfile|.wasp|] + isFile <- IOUtil.doesFileExist dotWaspPath + if isFile + then return $ Left "Invalid file name for the .wasp file. Please rename it to [something].wasp." + else do + files <- fst <$> IOUtil.listDirectory waspDir + return $ case (findWaspTsFile files, findWaspLangFile files) of + (tsFiles, langFiles) + | not (null tsFiles) && not (null langFiles) -> Left bothFilesFoundMessage + | null tsFiles && null langFiles -> Left fileNotFoundMessage + | [waspTsFile] <- tsFiles, null langFiles -> Right waspTsFile + | null tsFiles, [waspLangFile] <- langFiles -> Right waspLangFile + | otherwise -> Left multipleFilesFoundMessage where findWaspTsFile files = WaspTs <$> findFileThatEndsWith ".wasp.ts" files findWaspLangFile files = WaspLang <$> findFileThatEndsWith ".wasp" files - findFileThatEndsWith suffix files = - castFile - . (waspDir ) - <$> find ((suffix `isSuffixOf`) . fromRelFile) files - + findFileThatEndsWith suffix files = castFile . (waspDir ) <$> findFilesThatEndWith suffix files + findFilesThatEndWith suffix files = filter ((suffix `isSuffixOf`) . fromRelFile) files fileNotFoundMessage = "Couldn't find the *.wasp or a *.wasp.ts file in the " ++ fromAbsDir waspDir ++ " directory" bothFilesFoundMessage = "Found both *.wasp and *.wasp.ts files in the project directory. " ++ "You must choose how you want to define your app (using Wasp or TypeScript) and only keep one of them." + multipleFilesFoundMessage = "Found multiple *.wasp or *.wasp.ts files in the project directory. Please keep only one." analyzeWaspFile :: Path' Abs (Dir WaspProjectDir) ->