List the firefox places.sqlite
This commit is contained in:
47
src/Operations/Import/Firefox.hs
Normal file
47
src/Operations/Import/Firefox.hs
Normal file
@ -0,0 +1,47 @@
|
||||
{-|
|
||||
Module : Operations.Import.Firefox
|
||||
Description : Imports from firefox
|
||||
Copyright : (c) Mats Rauhala, 2020
|
||||
License : BSD-3-Clause
|
||||
Maintainer : mats.rauhala@iki.fi
|
||||
Stability : experimental
|
||||
Portability : POSIX
|
||||
|
||||
Imports from firefox. Firefox needs to be closed when doing the import
|
||||
-}
|
||||
module Operations.Import.Firefox where
|
||||
|
||||
import Conduit
|
||||
import qualified Data.Conduit.Combinators as C
|
||||
|
||||
import System.FilePath
|
||||
(takeFileName, (</>))
|
||||
|
||||
import Control.Exception
|
||||
(Exception)
|
||||
|
||||
import System.Environment
|
||||
(lookupEnv)
|
||||
|
||||
import GHC.Stack
|
||||
|
||||
-- select p.title, p.url from moz_bookmarks b join moz_places p on b.fk = p.id
|
||||
--
|
||||
-- select keyword from moz_keywords where place_id = ?
|
||||
|
||||
newtype ImportException
|
||||
= HomeNotFound CallStack
|
||||
deriving stock (Show)
|
||||
deriving anyclass (Exception)
|
||||
|
||||
stores
|
||||
:: MonadResource m
|
||||
=> MonadThrow m
|
||||
=> MonadIO m
|
||||
=> HasCallStack
|
||||
=> ConduitT i FilePath m ()
|
||||
stores = liftIO (lookupEnv "HOME") >>= maybe (throwM (HomeNotFound callStack)) listStores
|
||||
where
|
||||
listStores home =
|
||||
sourceDirectoryDeep False (home </> ".mozilla/firefox")
|
||||
.| C.filter (\p -> takeFileName p == "places.sqlite")
|
Reference in New Issue
Block a user