-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Convert stack projects to cabal.project + cabal.project.freeze
--
-- Convert stack.yaml / package.yaml to
-- cabal.project / cabal.project.freeze/
-- *.cabal.
@package stack2cabal
@version 1.0.12
module StackageToHackage.Hpack
execHpack :: FilePath -> IO Result
hpackInput :: FilePath -> FilePath
module StackageToHackage.Prelude
hoistMaybe :: Alternative m => Maybe a -> m a
module StackageToHackage.Stackage.Types
data Stack
Stack :: ResolverRef -> Maybe Ghc -> [Package] -> [Dep] -> Flags -> GhcOptions -> Stack
[$sel:resolver:Stack] :: Stack -> ResolverRef
[$sel:compiler:Stack] :: Stack -> Maybe Ghc
[$sel:packages:Stack] :: Stack -> [Package]
[$sel:extraDeps:Stack] :: Stack -> [Dep]
[$sel:flags:Stack] :: Stack -> Flags
[$sel:ghcOptions:Stack] :: Stack -> GhcOptions
newtype Ghc
Ghc :: Text -> Ghc
data Package
Local :: FilePath -> Package
Location :: Git -> Package
data Git
Git :: Repo -> Commit -> [Subdir] -> Git
[$sel:repo:Git] :: Git -> Repo
[$sel:commit:Git] :: Git -> Commit
[$sel:subdirs:Git] :: Git -> [Subdir]
type Repo = Text
type Commit = Text
type Subdir = Text
data Dep
Hackage :: PkgId -> Dep
SourceDep :: Git -> Dep
LocalDep :: FilePath -> Dep
newtype Flags
Flags :: Map PkgName (Map FlagName Bool) -> Flags
newtype PackageGhcOpts
PackageGhcOpts :: Map PkgId GhcFlags -> PackageGhcOpts
data GhcOptions
GhcOptions :: Maybe GhcFlags -> Maybe GhcFlags -> Maybe GhcFlags -> PackageGhcOpts -> GhcOptions
[$sel:locals:GhcOptions] :: GhcOptions -> Maybe GhcFlags
[$sel:targets:GhcOptions] :: GhcOptions -> Maybe GhcFlags
[$sel:everything:GhcOptions] :: GhcOptions -> Maybe GhcFlags
[$sel:packagesGhcOpts:GhcOptions] :: GhcOptions -> PackageGhcOpts
emptyGhcOptions :: GhcOptions
type PkgName = Text
type FlagName = Text
type GhcFlags = Text
newtype NewDep
NewDep :: PkgId -> NewDep
newtype PkgId
PkgId :: PackageIdentifier -> PkgId
[$sel:unPkgId:PkgId] :: PkgId -> PackageIdentifier
data NewResolver
NewResolver :: Ghc -> [NewDep] -> Flags -> NewResolver
[$sel:compiler:NewResolver] :: NewResolver -> Ghc
[$sel:packages:NewResolver] :: NewResolver -> [NewDep]
[$sel:flags:NewResolver] :: NewResolver -> Flags
data Resolver
Resolver :: Maybe ResolverRef -> Maybe Ghc -> [Dep] -> Flags -> Resolver
[$sel:resolver:Resolver] :: Resolver -> Maybe ResolverRef
[$sel:compiler:Resolver] :: Resolver -> Maybe Ghc
[$sel:deps:Resolver] :: Resolver -> [Dep]
[$sel:flags:Resolver] :: Resolver -> Flags
data ResolverRef
Canned :: Text -> ResolverRef
Snapshot :: Text -> ResolverRef
type RelativeResolvers = NonEmpty (Maybe FilePath, Resolver)
type Resolvers = NonEmpty Resolver
instance GHC.Show.Show StackageToHackage.Stackage.Types.Stack
instance GHC.Show.Show StackageToHackage.Stackage.Types.Resolver
instance GHC.Show.Show StackageToHackage.Stackage.Types.ResolverRef
instance GHC.Show.Show StackageToHackage.Stackage.Types.NewResolver
instance GHC.Show.Show StackageToHackage.Stackage.Types.Dep
instance GHC.Show.Show StackageToHackage.Stackage.Types.GhcOptions
instance GHC.Base.Monoid StackageToHackage.Stackage.Types.PackageGhcOpts
instance GHC.Base.Semigroup StackageToHackage.Stackage.Types.PackageGhcOpts
instance GHC.Show.Show StackageToHackage.Stackage.Types.PackageGhcOpts
instance GHC.Show.Show StackageToHackage.Stackage.Types.NewDep
instance GHC.Classes.Eq StackageToHackage.Stackage.Types.PkgId
instance GHC.Classes.Ord StackageToHackage.Stackage.Types.PkgId
instance GHC.Show.Show StackageToHackage.Stackage.Types.PkgId
instance GHC.Base.Monoid StackageToHackage.Stackage.Types.Flags
instance GHC.Base.Semigroup StackageToHackage.Stackage.Types.Flags
instance GHC.Show.Show StackageToHackage.Stackage.Types.Flags
instance GHC.Show.Show StackageToHackage.Stackage.Types.Package
instance GHC.Classes.Ord StackageToHackage.Stackage.Types.Git
instance GHC.Classes.Eq StackageToHackage.Stackage.Types.Git
instance GHC.Show.Show StackageToHackage.Stackage.Types.Git
instance GHC.Show.Show StackageToHackage.Stackage.Types.Ghc
module StackageToHackage.Hackage.Types
data Project
Project :: Ghc -> NonEmpty FilePath -> [Git] -> GhcOptions -> Project
[ghc] :: Project -> Ghc
[pkgs] :: Project -> NonEmpty FilePath
[srcs] :: Project -> [Git]
[ghcOpts] :: Project -> GhcOptions
newtype Freeze
Freeze :: [Constraint] -> Freeze
data Constraint
VersionPin :: PackageIdentifier -> Constraint
FlagSetting :: PkgName -> Map FlagName Bool -> Constraint
instance GHC.Show.Show StackageToHackage.Hackage.Types.Freeze
instance GHC.Classes.Eq StackageToHackage.Hackage.Types.Constraint
instance GHC.Show.Show StackageToHackage.Hackage.Types.Constraint
instance GHC.Show.Show StackageToHackage.Hackage.Types.Project
instance GHC.Classes.Ord StackageToHackage.Hackage.Types.Constraint
module StackageToHackage.Stackage.YAML
fakePos :: Pos
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Ghc
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.PackageGhcOpts
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Flags
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Stack
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.GhcOptions
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Git
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.ResolverRef
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Package
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Dep
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.Resolver
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.NewDep
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.NewResolver
instance Data.YAML.FromYAML StackageToHackage.Stackage.Types.PkgId
-- | Duplicates a subset of the Stack ADT. It'd be nice if we could just
-- re-use the actual ADT, but stack isn't available as a library that we
-- can build from Hackage.
module StackageToHackage.Stackage
localDirs :: Stack -> NonEmpty FilePath
readStack :: ByteString -> IO Stack
unroll :: FilePath -> Stack -> IO Resolvers
resolve :: Maybe FilePath -> ResolverRef -> IO (Maybe FilePath, Resolver)
cache :: Text -> IO FilePath
stack2resolver :: Stack -> Resolver
new2old :: NewResolver -> Resolver
-- | Merging two resolvers is straight-forward, except for handling Git
-- deps. These need to be merged carefully, because stack.yaml may add
-- subdirs to the repo of a resolver. Also see:
-- https://github.com/hasufell/stack2cabal/issues/30
mergeResolvers :: Resolver -> Resolver -> Resolver
decode1Strict :: FromYAML a => ByteString -> Either String a
-- | A simplistic model of cabal multi-package files and convertors from
-- Stackage.
module StackageToHackage.Hackage
newtype Freeze
Freeze :: [Constraint] -> Freeze
data Project
Project :: Ghc -> NonEmpty FilePath -> [Git] -> GhcOptions -> Project
[ghc] :: Project -> Ghc
[pkgs] :: Project -> NonEmpty FilePath
[srcs] :: Project -> [Git]
[ghcOpts] :: Project -> GhcOptions
printFreeze :: Freeze -> Text
printProject :: Bool -> Maybe Elapsed -> Project -> Maybe Text -> IO Text
-- | Converts a stack.yaml (and list of local packages) to cabal.project
-- and cabal.project.freeze.
stackToCabal :: Bool -> Bool -> FilePath -> Stack -> IO (Project, Freeze)