@@ -179,6 +179,22 @@ importJson _ connection = do
179
179
insertImportTask connection importTaskNorm
180
180
181
181
182
+ decodeAndInsertYaml :: Connection -> BSL. LazyByteString -> IO (Doc AnsiStyle )
183
+ decodeAndInsertYaml conn content = do
184
+ case content & BSL. toStrict & Yaml. decodeEither' of
185
+ Left error ->
186
+ die $ T. pack $ Yaml. prettyPrintParseException error
187
+ Right importTaskRec -> do
188
+ importTaskNorm <- importTaskRec & setMissingFields
189
+ insertImportTask conn importTaskNorm
190
+
191
+
192
+ importYaml :: Config -> Connection -> IO (Doc AnsiStyle )
193
+ importYaml _ conn = do
194
+ content <- BSL. getContents
195
+ decodeAndInsertYaml conn content
196
+
197
+
182
198
importEml :: Config -> Connection -> IO (Doc AnsiStyle )
183
199
importEml _ connection = do
184
200
content <- BSL. getContents
@@ -301,6 +317,8 @@ importFile _ conn filePath = do
301
317
Right importTaskRec -> do
302
318
importTaskNorm <- importTaskRec & setMissingFields
303
319
insertImportTask conn importTaskNorm
320
+ " .yaml" -> decodeAndInsertYaml conn content
321
+ " .yml" -> decodeAndInsertYaml conn content
304
322
" .eml" ->
305
323
case Parsec. parse Email. message filePath content of
306
324
Left error -> die $ show error
@@ -314,6 +332,8 @@ importFile _ conn filePath = do
314
332
filterImportable :: FilePath -> Bool
315
333
filterImportable filePath =
316
334
(" .json" `isExtensionOf` filePath)
335
+ || (" .yaml" `isExtensionOf` filePath)
336
+ || (" .yml" `isExtensionOf` filePath)
317
337
|| (" .eml" `isExtensionOf` filePath)
318
338
319
339
@@ -330,6 +350,22 @@ importDir conf connection dirPath = do
330
350
331
351
ingestFile :: Config -> Connection -> FilePath -> IO (Doc AnsiStyle )
332
352
ingestFile conf connection filePath = do
353
+ let ingestYaml content = do
354
+ let decodeResult = Yaml. decodeEither' (BSL. toStrict content)
355
+ case decodeResult of
356
+ Left error ->
357
+ die $ T. pack $ Yaml. prettyPrintParseException error
358
+ Right importTaskRec -> do
359
+ importTaskNorm <- importTaskRec & setMissingFields
360
+ sequence
361
+ [ insertImportTask connection importTaskNorm
362
+ , editTaskByTask
363
+ conf
364
+ OpenEditor
365
+ connection
366
+ importTaskNorm. task
367
+ ]
368
+
333
369
catchAll
334
370
( do
335
371
content <- BSL. readFile filePath
@@ -349,6 +385,8 @@ ingestFile conf connection filePath = do
349
385
connection
350
386
importTaskNorm. task
351
387
]
388
+ " .yaml" -> ingestYaml content
389
+ " .yml" -> ingestYaml content
352
390
" .eml" ->
353
391
case Parsec. parse Email. message filePath content of
354
392
Left error -> die $ show error
0 commit comments