Karya, built on Sun Nov 26 01:04:37 PST 2017 (patch 0a920b2bde70c0cbac8ee09d158064798b61bbe5)

Safe HaskellNone




type Generated = Set IO.FilePath Source #

Normally importsOf and transitiveImportsOf filter out files that don't exist, under the assumption that they belong to external packages. This set contains exceptions to that, so they will get a need call, so they can be generated.

importsOf :: Generated -> Maybe.Maybe [String] -> IO.FilePath -> Shake.Action [IO.FilePath] Source #

Find files of modules this module imports, in the form AB.hs or AB.hsc. Paths that don't exist are assumed to be package imports and are omitted.

transitiveImportsOf :: Generated -> (IO.FilePath -> Maybe.Maybe [String]) -> IO.FilePath -> Shake.Action [IO.FilePath] Source #

Like importsOf but transitive. Includes the given module.

TODO Technically I should run CPP on the output of hsc2hs, which means this should map the module names to the appropriate .hs and need it. Otherwise the '#include' that belongs to hsc2hs will get processed by CPP.

importsPackagagesOf_ Source #


:: PackageDb 
-> Generated 
-> Maybe.Maybe [String]

If Just, first run CPP with these flags.

-> IO.FilePath 
-> IO.IO ([IO.FilePath], [Package]) 

Get local imports and package dependencies.

I thought I wound use this but wound up not wanting it. But I'll leave the basic implementation here in case I change my mind. This still needs to be integrated with importsOf and transitiveImportsOf.

loadPackageDb :: IO.FilePath -> Shake.Action PackageDb Source #

Load cached module to package db.

savePackageDb :: [Package] -> IO.FilePath -> IO.IO () Source #

Call getModuleToPackage and save its contents to the file. If there are colliding modules, throw an IO exception.