@@ -152,16 +152,18 @@ permitProceed settings = do
152
152
getHsBootFiles :: OAO. Settings -> [([String ], String )] -> FilesWithContent
153
153
getHsBootFiles settings modelModules =
154
154
let outputDirectory = T. unpack $ OAO. settingOutputDir settings
155
- moduleName = T. unpack $ OAO. settingModuleName settings
155
+ moduleName = OAO. settingModuleName settings
156
+ moduleNameStr = OAO. getModuleName moduleName
157
+ modulePathInfo = OAO. mkModulePathInfo moduleName
156
158
in BF. bimap
157
- ((outputDirectory </> ) . ( srcDirectory </> ) . (moduleName </> ) . ( <> " .hs-boot" ) . foldr1 (</>) )
159
+ ((\ suffix -> outputDirectory </> srcDirectory </> OAO. getModuleInfoPath modulePathInfo ( Just suffix) " .hs-boot" ) . foldr1 (</>) )
158
160
( T. unpack
159
161
. T. unlines
160
162
. ( \ xs -> case xs of
161
163
x : xs' ->
162
164
x
163
165
: " import qualified Data.Aeson"
164
- : " import qualified " <> T. pack moduleName <> " .Common"
166
+ : " import qualified " <> T. pack moduleNameStr <> " .Common"
165
167
: xs'
166
168
_ -> xs
167
169
)
@@ -202,63 +204,66 @@ data OutputFiles = OutputFiles
202
204
generateFilesToCreate :: OAT. OpenApiSpecification -> OAO. Settings -> IO OutputFiles
203
205
generateFilesToCreate spec settings = do
204
206
let outputDirectory = T. unpack $ OAO. settingOutputDir settings
205
- moduleName = T. unpack $ OAO. settingModuleName settings
207
+ moduleName = OAO. settingModuleName settings
208
+ modulePathInfo = OAO. mkModulePathInfo moduleName
209
+ moduleNameStr = OAO. getModuleName moduleName
206
210
packageName = T. unpack $ OAO. settingPackageName settings
207
211
env = OAM. createEnvironment settings $ Ref. buildReferenceMap spec
208
212
logMessages = mapM_ (putStrLn . T. unpack) . OAL. filterAndTransformLogs (OAO. settingLogLevel settings)
209
- showAndReplace = replaceOpenAPI moduleName . show
210
- ((operationsQ, operationDependencies), logs) = OAM. runGenerator env $ defineOperations moduleName spec
213
+ showAndReplace = replaceOpenAPI moduleNameStr . show
214
+ ((operationsQ, operationDependencies), logs) = OAM. runGenerator env $ defineOperations moduleNameStr spec
211
215
logMessages logs
212
216
operationModules <- runQ operationsQ
213
- configurationInfo <- runQ $ defineConfigurationInformation moduleName spec
214
- let (modelsQ, logsModels) = OAM. runGenerator env $ defineModels moduleName spec operationDependencies
217
+ configurationInfo <- runQ $ defineConfigurationInformation moduleNameStr spec
218
+ let (modelsQ, logsModels) = OAM. runGenerator env $ defineModels moduleNameStr spec operationDependencies
215
219
logMessages logsModels
216
220
modelModules <- fmap (BF. second showAndReplace) <$> runQ modelsQ
217
- let (securitySchemesQ, logs') = OAM. runGenerator env $ defineSecuritySchemes moduleName spec
221
+ let (securitySchemesQ, logs') = OAM. runGenerator env $ defineSecuritySchemes moduleNameStr spec
218
222
logMessages logs'
219
223
securitySchemes' <- runQ securitySchemesQ
220
224
let modules =
221
225
fmap (BF. bimap (" Operations" : ) showAndReplace) operationModules
222
226
<> modelModules
223
227
<> [ ([" Configuration" ], showAndReplace configurationInfo),
224
228
([" SecuritySchemes" ], showAndReplace securitySchemes'),
225
- ([" Common" ], replaceOpenAPI moduleName $ replaceVersionNumber $ (embedFile " src/OpenAPI/Common.hs" ))
229
+ ([" Common" ], replaceOpenAPI moduleNameStr $ replaceVersionNumber $ (embedFile " src/OpenAPI/Common.hs" ))
226
230
]
227
231
modulesToExport =
228
232
fmap
229
- ( (moduleName <> )
233
+ ( (moduleNameStr <> )
230
234
. (" ." <> )
231
235
. joinWithPoint
232
236
. fst
233
237
)
234
238
modules
235
- mainFile = outputDirectory </> srcDirectory </> (moduleName ++ " .hs" )
236
- mainModuleContent = show $ Doc. createModuleHeaderWithReexports moduleName modulesToExport " The main module which exports all functionality."
239
+ mainFile = outputDirectory </> srcDirectory </> OAO. getModuleInfoPath modulePathInfo Nothing " .hs"
240
+ mainModuleContent = show $ Doc. createModuleHeaderWithReexports moduleNameStr modulesToExport " The main module which exports all functionality."
237
241
hsBootFiles = getHsBootFiles settings modelModules
238
242
pure $
239
243
OutputFiles
240
244
( BF. second (unlines . lines )
241
245
<$> (mainFile, mainModuleContent)
242
- : (BF. first ((outputDirectory </> ) . ( srcDirectory </> ) . (moduleName </> ) . ( <> " .hs" ) . foldr1 (</>) ) <$> modules)
246
+ : (BF. first ((\ suffix -> outputDirectory </> srcDirectory </> OAO. getModuleInfoPath modulePathInfo ( Just suffix) " .hs" ) . foldr1 (</>) ) <$> modules)
243
247
<> hsBootFiles
244
248
)
245
- (BF. first (outputDirectory </> ) <$> cabalProjectFiles packageName moduleName modulesToExport)
249
+ (BF. first (outputDirectory </> ) <$> cabalProjectFiles packageName moduleNameStr modulesToExport)
246
250
(BF. first (outputDirectory </> ) <$> stackProjectFiles)
247
251
(BF. first (outputDirectory </> ) <$> nixProjectFiles packageName)
248
252
249
253
writeFiles :: OAO. Settings -> OutputFiles -> IO ()
250
254
writeFiles settings OutputFiles {.. } = do
251
255
let outputDirectory = T. unpack $ OAO. settingOutputDir settings
252
- moduleName = T. unpack $ OAO. settingModuleName settings
256
+ modulePathInfo = OAO. mkModulePathInfo $ OAO. settingModuleName settings
257
+ moduleDir = OAO. getModuleInfoDir modulePathInfo
253
258
incremental = OAO. settingIncremental settings
254
259
write = mapM_ $ if incremental then writeFileIncremental else writeFileWithLog
255
260
putStrLn " Remove old output directory"
256
261
unless incremental $
257
262
void $
258
263
tryIOError (removeDirectoryRecursive outputDirectory)
259
264
putStrLn " Output directory removed, create missing directories"
260
- createDirectoryIfMissing True (outputDirectory </> srcDirectory </> moduleName </> " Operations" )
261
- createDirectoryIfMissing True (outputDirectory </> srcDirectory </> moduleName </> " Types" )
265
+ createDirectoryIfMissing True (outputDirectory </> srcDirectory </> moduleDir </> " Operations" )
266
+ createDirectoryIfMissing True (outputDirectory </> srcDirectory </> moduleDir </> " Types" )
262
267
putStrLn " Directories created"
263
268
write outputFilesModuleFiles
264
269
write outputFilesCabalFiles
0 commit comments