-- 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.11 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.Semigroup StackageToHackage.Stackage.Types.Flags instance GHC.Show.Show StackageToHackage.Stackage.Types.Flags instance GHC.Show.Show StackageToHackage.Stackage.Types.Package instance GHC.Show.Show StackageToHackage.Stackage.Types.Git instance GHC.Show.Show StackageToHackage.Stackage.Types.Ghc instance GHC.Base.Semigroup StackageToHackage.Stackage.Types.Resolver 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 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)