module Darcs.UI.Commands.Pull (
pull, fetch,
pullCmd, StandardPatchApplier,
fetchPatches, revertable
) where
import Prelude ()
import Darcs.Prelude
import System.Exit ( exitSuccess )
import Control.Monad ( when, unless, (>=>) )
import Data.List ( nub )
import Data.Maybe ( fromMaybe )
import Darcs.UI.Commands
( DarcsCommand(..)
, withStdOpts
, putInfo
, putVerbose
, setEnvDarcsPatches
, defaultRepo
, amInHashedRepository
)
import Darcs.UI.Flags
( DarcsFlag
, fixUrl, getOutput
, changesReverse, verbosity, dryRun, umask, useCache, selectDeps
, remoteRepos, reorder, setDefault
, withContext, hasXmlOutput
, isInteractive, quiet
)
import Darcs.UI.Options ( (^), odesc, ocheck, onormalise, defaultFlags, parseFlags, (?) )
import qualified Darcs.UI.Options.All as O
import Darcs.Repository.Flags ( UpdateWorking (..) )
import Darcs.Repository
( Repository
, identifyRepositoryFor
, withRepoLock
, RepoJob(..)
, readRepo
, modifyCache
, modifyCache
, Cache(..)
, CacheLoc(..)
, WritableOrNot(..)
, filterOutConflicts
)
import qualified Darcs.Repository.Cache as DarcsCache
import Darcs.Patch.PatchInfoAnd ( PatchInfoAnd, info, hopefully, patchDesc )
import Darcs.Patch ( IsRepoType, RepoPatch, description )
import Darcs.Patch.Bundle( makeBundleN, patchFilename )
import Darcs.Patch.Apply( ApplyState )
import Darcs.Patch.Set ( Origin, PatchSet(..), SealedPatchSet )
import Darcs.Patch.Witnesses.Sealed ( Sealed(..), seal )
import Darcs.Patch.Witnesses.Unsafe ( unsafeCoercePEnd )
import Darcs.Patch.Witnesses.Ordered
( (:>)(..), (:\/:)(..), FL(..), RL(..)
, mapFL, nullFL, reverseFL, mapFL_FL )
import Darcs.Patch.Permutations ( partitionFL )
import Darcs.Repository.Prefs ( addToPreflist, addRepoSource, getPreflist, showMotd )
import Darcs.Patch.Depends ( findUncommon, findCommonWithThem,
patchSetIntersection, patchSetUnion )
import Darcs.UI.ApplyPatches ( PatchApplier(..), StandardPatchApplier(..) )
import Darcs.UI.Completion ( prefArgs )
import Darcs.UI.Commands.Util ( checkUnrelatedRepos )
import Darcs.UI.SelectChanges
( WhichChanges(..)
, runSelection
, selectionContext
)
import qualified Darcs.UI.SelectChanges as S ( PatchSelectionOptions (..) )
import Darcs.Util.Exception ( clarifyErrors )
import Darcs.Util.Printer ( vcat, ($$), text, putDoc )
import Darcs.Util.Lock ( writeDocBinFile )
import Darcs.Util.Path ( useAbsoluteOrStd, stdOut, AbsolutePath )
import Darcs.Util.Workaround ( getCurrentDirectory )
import Darcs.Util.Text ( quote )
import Darcs.Util.Tree( Tree )
pullDescription :: String
pullDescription :: String
pullDescription =
"Copy and apply patches from another repository to this one."
fetchDescription :: String
fetchDescription :: String
fetchDescription =
"Fetch patches from another repository, but don't apply them."
pullHelp :: String
pullHelp :: String
pullHelp = [String] -> String
unlines
[ "Pull is used to bring patches made in another repository into the current"
, "repository (that is, either the one in the current directory, or the one"
, "specified with the `--repodir` option). Pull accepts arguments, which are"
, "URLs from which to pull, and when called without an argument, pull will"
, "use the repository specified at `_darcs/prefs/defaultrepo`."
, ""
, "The default (`--union`) behavior is to pull any patches that are in any of"
, "the specified repositories. If you specify the `--intersection` flag, darcs"
, "will only pull those patches which are present in all source repositories."
, "If you specify the `--complement` flag, darcs will only pull elements in the"
, "first repository that do not exist in any of the remaining repositories."
, ""
, "If `--reorder` is supplied, the set of patches that exist only in the current"
, "repository is brought at the top of the current history. This will work even"
, "if there are no new patches to pull."
, ""
, "See `darcs help apply` for detailed description of many options."
]
fetchHelp :: String
fetchHelp :: String
fetchHelp = [String] -> String
unlines
[ "Fetch is similar to `pull` except that it does not apply any patches"
, "to the current repository. Instead, it generates a patch bundle that"
, "you can apply later with `apply`."
, ""
, "Fetch's behaviour is essentially similar to pull's, so please consult"
, "the help of `pull` to know more."
]
fetch :: DarcsCommand [DarcsFlag]
fetch :: DarcsCommand [DarcsFlag]
fetch = DarcsCommand :: forall parsedFlags.
String
-> String
-> String
-> String
-> Int
-> [String]
-> ((AbsolutePath, AbsolutePath)
-> parsedFlags -> [String] -> IO ())
-> ([DarcsFlag] -> IO (Either String ()))
-> ((AbsolutePath, AbsolutePath)
-> [DarcsFlag] -> [String] -> IO [String])
-> ([DarcsFlag] -> AbsolutePath -> [String] -> IO [String])
-> [DarcsOptDescr DarcsFlag]
-> [DarcsOptDescr DarcsFlag]
-> [DarcsFlag]
-> ([DarcsFlag] -> [String])
-> ([DarcsFlag] -> parsedFlags)
-> DarcsCommand parsedFlags
DarcsCommand
{ commandProgramName :: String
commandProgramName = "darcs"
, commandName :: String
commandName = "fetch"
, commandHelp :: String
commandHelp = String
fetchHelp
, commandDescription :: String
commandDescription = String
fetchDescription
, commandExtraArgs :: Int
commandExtraArgs = -1
, commandExtraArgHelp :: [String]
commandExtraArgHelp = ["[REPOSITORY]..."]
, commandCommand :: (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
commandCommand = (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
fetchCmd
, commandPrereq :: [DarcsFlag] -> IO (Either String ())
commandPrereq = [DarcsFlag] -> IO (Either String ())
amInHashedRepository
, commandCompleteArgs :: (AbsolutePath, AbsolutePath)
-> [DarcsFlag] -> [String] -> IO [String]
commandCompleteArgs = String
-> (AbsolutePath, AbsolutePath)
-> [DarcsFlag]
-> [String]
-> IO [String]
prefArgs "repos"
, commandArgdefaults :: [DarcsFlag] -> AbsolutePath -> [String] -> IO [String]
commandArgdefaults = [DarcsFlag] -> AbsolutePath -> [String] -> IO [String]
defaultRepo
, commandAdvancedOptions :: [DarcsOptDescr DarcsFlag]
commandAdvancedOptions = OptSpec
DarcsOptDescr
DarcsFlag
Any
(RepoCombinator -> RemoteRepos -> NetworkOptions -> Any)
-> [DarcsOptDescr DarcsFlag]
forall (d :: * -> *) f a b. OptSpec d f a b -> [d f]
odesc OptSpec
DarcsOptDescr
DarcsFlag
Any
(RepoCombinator -> RemoteRepos -> NetworkOptions -> Any)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator -> RemoteRepos -> NetworkOptions -> a)
advancedOpts
, commandBasicOptions :: [DarcsOptDescr DarcsFlag]
commandBasicOptions = OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Any)
-> [DarcsOptDescr DarcsFlag]
forall (d :: * -> *) f a b. OptSpec d f a b -> [d f]
odesc OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Any)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
basicOpts
, commandDefaults :: [DarcsFlag]
commandDefaults = OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
-> [DarcsFlag]
forall (d :: * -> *) f b. OptSpec d f [f] b -> [f]
defaultFlags OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
forall a.
DarcsOption
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts
, commandCheckOptions :: [DarcsFlag] -> [String]
commandCheckOptions = OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> Any)
-> [DarcsFlag] -> [String]
forall (d :: * -> *) f a b. OptSpec d f a b -> [f] -> [String]
ocheck OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> Any)
forall a.
DarcsOption
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts
, commandParseOptions :: [DarcsFlag] -> [DarcsFlag]
commandParseOptions = OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
-> [DarcsFlag] -> [DarcsFlag]
forall (d :: * -> *) f b. OptSpec d f [f] b -> [f] -> [f]
onormalise OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
forall a.
DarcsOption
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts
}
where
basicOpts :: OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
basicOpts
= PrimOptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
[MatchFlag]
MatchOption
O.matchSeveral
PrimOptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
[MatchFlag]
-> OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
(Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
(Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption (Maybe Bool)
O.interactive
OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
(DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
(DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption DryRun
O.dryRun
OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption Summary
O.summary
OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
(SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
(SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption SelectDeps
O.selectDeps
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
(Maybe Bool
-> Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
(Maybe Bool
-> Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
PrimDarcsOption (Maybe Bool)
O.setDefault
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Output -> Bool -> DiffAlgorithm -> a)
(Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Output -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Output -> Bool -> DiffAlgorithm -> a)
(Maybe String -> Maybe Output -> Bool -> DiffAlgorithm -> a)
PrimDarcsOption (Maybe String)
O.repoDir
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Output -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
(Maybe Output -> Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
(Maybe Output -> Bool -> DiffAlgorithm -> a)
PrimDarcsOption (Maybe Output)
O.output
OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
(Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
(Bool -> DiffAlgorithm -> a)
PrimDarcsOption Bool
O.allowUnrelatedRepos
OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec DarcsOptDescr DarcsFlag a (DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec DarcsOptDescr DarcsFlag a (DiffAlgorithm -> a)
PrimDarcsOption DiffAlgorithm
O.diffAlgorithm
advancedOpts :: OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator -> RemoteRepos -> NetworkOptions -> a)
advancedOpts
= PrimOptSpec
DarcsOptDescr
DarcsFlag
(RemoteRepos -> NetworkOptions -> a)
RepoCombinator
PrimDarcsOption RepoCombinator
O.repoCombinator
PrimOptSpec
DarcsOptDescr
DarcsFlag
(RemoteRepos -> NetworkOptions -> a)
RepoCombinator
-> OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(RemoteRepos -> NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(RepoCombinator -> RemoteRepos -> NetworkOptions -> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(RemoteRepos -> NetworkOptions -> a)
PrimDarcsOption RemoteRepos
O.remoteRepos
OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(RepoCombinator -> RemoteRepos -> NetworkOptions -> a)
-> OptSpec DarcsOptDescr DarcsFlag a (NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator -> RemoteRepos -> NetworkOptions -> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec DarcsOptDescr DarcsFlag a (NetworkOptions -> a)
PrimDarcsOption NetworkOptions
O.network
allOpts :: DarcsOption
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts = OptSpec
DarcsOptDescr
DarcsFlag
(Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> a)
basicOpts OptSpec
DarcsOptDescr
DarcsFlag
(Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
-> DarcsOption
(UseCache -> HooksConfig -> a)
(RepoCombinator
-> RemoteRepos -> NetworkOptions -> UseCache -> HooksConfig -> a)
-> DarcsOption
a
([MatchFlag]
-> Maybe Bool
-> DryRun
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Maybe Output
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> RemoteRepos
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
forall b c a.
DarcsOption
(Maybe StdCmdAction -> Bool -> Bool -> Verbosity -> Bool -> b) c
-> DarcsOption (UseCache -> HooksConfig -> a) b -> DarcsOption a c
`withStdOpts` DarcsOption
(UseCache -> HooksConfig -> a)
(RepoCombinator
-> RemoteRepos -> NetworkOptions -> UseCache -> HooksConfig -> a)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator -> RemoteRepos -> NetworkOptions -> a)
advancedOpts
pull :: DarcsCommand [DarcsFlag]
pull :: DarcsCommand [DarcsFlag]
pull = DarcsCommand :: forall parsedFlags.
String
-> String
-> String
-> String
-> Int
-> [String]
-> ((AbsolutePath, AbsolutePath)
-> parsedFlags -> [String] -> IO ())
-> ([DarcsFlag] -> IO (Either String ()))
-> ((AbsolutePath, AbsolutePath)
-> [DarcsFlag] -> [String] -> IO [String])
-> ([DarcsFlag] -> AbsolutePath -> [String] -> IO [String])
-> [DarcsOptDescr DarcsFlag]
-> [DarcsOptDescr DarcsFlag]
-> [DarcsFlag]
-> ([DarcsFlag] -> [String])
-> ([DarcsFlag] -> parsedFlags)
-> DarcsCommand parsedFlags
DarcsCommand
{ commandProgramName :: String
commandProgramName = "darcs"
, commandName :: String
commandName = "pull"
, commandHelp :: String
commandHelp = String
pullHelp
, commandDescription :: String
commandDescription = String
pullDescription
, commandExtraArgs :: Int
commandExtraArgs = -1
, commandExtraArgHelp :: [String]
commandExtraArgHelp = ["[REPOSITORY]..."]
, commandCommand :: (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
commandCommand = StandardPatchApplier
-> (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
forall pa.
PatchApplier pa =>
pa
-> (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
pullCmd StandardPatchApplier
StandardPatchApplier
, commandPrereq :: [DarcsFlag] -> IO (Either String ())
commandPrereq = [DarcsFlag] -> IO (Either String ())
amInHashedRepository
, commandCompleteArgs :: (AbsolutePath, AbsolutePath)
-> [DarcsFlag] -> [String] -> IO [String]
commandCompleteArgs = String
-> (AbsolutePath, AbsolutePath)
-> [DarcsFlag]
-> [String]
-> IO [String]
prefArgs "repos"
, commandArgdefaults :: [DarcsFlag] -> AbsolutePath -> [String] -> IO [String]
commandArgdefaults = [DarcsFlag] -> AbsolutePath -> [String] -> IO [String]
defaultRepo
, commandAdvancedOptions :: [DarcsOptDescr DarcsFlag]
commandAdvancedOptions = OptSpec
DarcsOptDescr
DarcsFlag
Any
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> Any)
-> [DarcsOptDescr DarcsFlag]
forall (d :: * -> *) f a b. OptSpec d f a b -> [d f]
odesc OptSpec
DarcsOptDescr
DarcsFlag
Any
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> Any)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
advancedOpts
, commandBasicOptions :: [DarcsOptDescr DarcsFlag]
commandBasicOptions = OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Any)
-> [DarcsOptDescr DarcsFlag]
forall (d :: * -> *) f a b. OptSpec d f a b -> [d f]
odesc OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Any)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
basicOpts
, commandDefaults :: [DarcsFlag]
commandDefaults = OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
-> [DarcsFlag]
forall (d :: * -> *) f b. OptSpec d f [f] b -> [f]
defaultFlags OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
forall a.
DarcsOption
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts
, commandCheckOptions :: [DarcsFlag] -> [String]
commandCheckOptions = OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> Any)
-> [DarcsFlag] -> [String]
forall (d :: * -> *) f a b. OptSpec d f a b -> [f] -> [String]
ocheck OptSpec
DarcsOptDescr
DarcsFlag
Any
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> Any)
forall a.
DarcsOption
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts
, commandParseOptions :: [DarcsFlag] -> [DarcsFlag]
commandParseOptions = OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
-> [DarcsFlag] -> [DarcsFlag]
forall (d :: * -> *) f b. OptSpec d f [f] b -> [f] -> [f]
onormalise OptSpec
DarcsOptDescr
DarcsFlag
[DarcsFlag]
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> [DarcsFlag])
forall a.
DarcsOption
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts
}
where
basicOpts :: OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
basicOpts
= PrimOptSpec
DarcsOptDescr
DarcsFlag
(Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
[MatchFlag]
MatchOption
O.matchSeveral
PrimOptSpec
DarcsOptDescr
DarcsFlag
(Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
[MatchFlag]
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption Reorder
O.reorder
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption (Maybe Bool)
O.interactive
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption (Maybe AllowConflicts)
O.conflictsYes
OptSpec
DarcsOptDescr
DarcsFlag
(ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption ExternalMerge
O.externalMerge
OptSpec
DarcsOptDescr
DarcsFlag
(RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption RunTest
O.runTest
OptSpec
DarcsOptDescr
DarcsFlag
(DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
(DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall a. DarcsOption a (DryRun -> XmlOutput -> a)
O.dryRunXml
OptSpec
DarcsOptDescr
DarcsFlag
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
(Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
PrimDarcsOption Summary
O.summary
OptSpec
DarcsOptDescr
DarcsFlag
(SelectDeps
-> Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
(SelectDeps
-> Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
(SelectDeps
-> Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
PrimDarcsOption SelectDeps
O.selectDeps
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Bool -> DiffAlgorithm -> a)
(Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Bool -> DiffAlgorithm -> a)
(Maybe Bool -> Maybe String -> Bool -> DiffAlgorithm -> a)
PrimDarcsOption (Maybe Bool)
O.setDefault
OptSpec
DarcsOptDescr
DarcsFlag
(Maybe String -> Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
(Maybe String -> Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
(Maybe String -> Bool -> DiffAlgorithm -> a)
PrimDarcsOption (Maybe String)
O.repoDir
OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
(Bool -> DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
(Bool -> DiffAlgorithm -> a)
PrimDarcsOption Bool
O.allowUnrelatedRepos
OptSpec
DarcsOptDescr
DarcsFlag
(DiffAlgorithm -> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
-> OptSpec DarcsOptDescr DarcsFlag a (DiffAlgorithm -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec DarcsOptDescr DarcsFlag a (DiffAlgorithm -> a)
PrimDarcsOption DiffAlgorithm
O.diffAlgorithm
advancedOpts :: OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
advancedOpts
= PrimOptSpec
DarcsOptDescr
DarcsFlag
(Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
RepoCombinator
PrimDarcsOption RepoCombinator
O.repoCombinator
PrimOptSpec
DarcsOptDescr
DarcsFlag
(Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
RepoCombinator
-> OptSpec
DarcsOptDescr
DarcsFlag
(UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
PrimDarcsOption Compression
O.compress
OptSpec
DarcsOptDescr
DarcsFlag
(UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
PrimDarcsOption UseIndex
O.useIndex
OptSpec
DarcsOptDescr
DarcsFlag
(RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(SetScriptsExecutable
-> UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(SetScriptsExecutable
-> UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(SetScriptsExecutable
-> UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
PrimDarcsOption RemoteRepos
O.remoteRepos
OptSpec
DarcsOptDescr
DarcsFlag
(SetScriptsExecutable
-> UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(SetScriptsExecutable
-> UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(SetScriptsExecutable
-> UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
PrimDarcsOption SetScriptsExecutable
O.setScriptsExecutable
OptSpec
DarcsOptDescr
DarcsFlag
(UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(UMask -> Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
PrimDarcsOption UMask
O.umask
OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> WantGuiPause -> NetworkOptions -> a)
(Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> WantGuiPause -> NetworkOptions -> a)
(Bool -> Bool -> WantGuiPause -> NetworkOptions -> a)
PrimDarcsOption Bool
O.restrictPaths
OptSpec
DarcsOptDescr
DarcsFlag
(Bool -> WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(WantGuiPause -> NetworkOptions -> a)
(Bool -> WantGuiPause -> NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(WantGuiPause -> NetworkOptions -> a)
(Bool -> WantGuiPause -> NetworkOptions -> a)
PrimDarcsOption Bool
O.changesReverse
OptSpec
DarcsOptDescr
DarcsFlag
(WantGuiPause -> NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(WantGuiPause -> NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(WantGuiPause -> NetworkOptions -> a)
PrimDarcsOption WantGuiPause
O.pauseForGui
OptSpec
DarcsOptDescr
DarcsFlag
(NetworkOptions -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
-> OptSpec DarcsOptDescr DarcsFlag a (NetworkOptions -> a)
-> OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
forall (d :: * -> *) f b c a.
OptSpec d f b c -> OptSpec d f a b -> OptSpec d f a c
^ OptSpec DarcsOptDescr DarcsFlag a (NetworkOptions -> a)
PrimDarcsOption NetworkOptions
O.network
allOpts :: DarcsOption
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
allOpts = OptSpec
DarcsOptDescr
DarcsFlag
(Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> a)
basicOpts OptSpec
DarcsOptDescr
DarcsFlag
(Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
-> DarcsOption
(UseCache -> HooksConfig -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
-> DarcsOption
a
([MatchFlag]
-> Reorder
-> Maybe Bool
-> Maybe AllowConflicts
-> ExternalMerge
-> RunTest
-> DryRun
-> XmlOutput
-> Summary
-> SelectDeps
-> Maybe Bool
-> Maybe String
-> Bool
-> DiffAlgorithm
-> Maybe StdCmdAction
-> Bool
-> Bool
-> Verbosity
-> Bool
-> RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
forall b c a.
DarcsOption
(Maybe StdCmdAction -> Bool -> Bool -> Verbosity -> Bool -> b) c
-> DarcsOption (UseCache -> HooksConfig -> a) b -> DarcsOption a c
`withStdOpts` DarcsOption
(UseCache -> HooksConfig -> a)
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> UseCache
-> HooksConfig
-> a)
forall a.
OptSpec
DarcsOptDescr
DarcsFlag
a
(RepoCombinator
-> Compression
-> UseIndex
-> RemoteRepos
-> SetScriptsExecutable
-> UMask
-> Bool
-> Bool
-> WantGuiPause
-> NetworkOptions
-> a)
advancedOpts
pullCmd
:: PatchApplier pa
=> pa -> (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
pullCmd :: pa
-> (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
pullCmd patchApplier :: pa
patchApplier (_,o :: AbsolutePath
o) opts :: [DarcsFlag]
opts repos :: [String]
repos =
do
[String]
pullingFrom <- (String -> IO String) -> [String] -> IO [String]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM (AbsolutePath -> String -> IO String
fixUrl AbsolutePath
o) [String]
repos
DryRun -> UseCache -> UpdateWorking -> UMask -> RepoJob () -> IO ()
forall a.
DryRun -> UseCache -> UpdateWorking -> UMask -> RepoJob a -> IO a
withRepoLock (PrimDarcsOption DryRun
dryRun PrimDarcsOption DryRun -> [DarcsFlag] -> DryRun
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) (PrimDarcsOption UseCache
useCache PrimDarcsOption UseCache -> [DarcsFlag] -> UseCache
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) UpdateWorking
YesUpdateWorking (PrimDarcsOption UMask
umask PrimDarcsOption UMask -> [DarcsFlag] -> UMask
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) (RepoJob () -> IO ()) -> RepoJob () -> IO ()
forall a b. (a -> b) -> a -> b
$
pa
-> [DarcsFlag]
-> (forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, ApplierRepoTypeConstraint pa rt, RepoPatch p,
ApplyState p ~ Tree) =>
PatchProxy p -> Repository rt p wR wU wR -> IO ())
-> RepoJob ()
forall pa.
PatchApplier pa =>
pa
-> [DarcsFlag]
-> (forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, ApplierRepoTypeConstraint pa rt, RepoPatch p,
ApplyState p ~ Tree) =>
PatchProxy p -> Repository rt p wR wU wR -> IO ())
-> RepoJob ()
repoJob pa
patchApplier [DarcsFlag]
opts ((forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, ApplierRepoTypeConstraint pa rt, RepoPatch p,
ApplyState p ~ Tree) =>
PatchProxy p -> Repository rt p wR wU wR -> IO ())
-> RepoJob ())
-> (forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, ApplierRepoTypeConstraint pa rt, RepoPatch p,
ApplyState p ~ Tree) =>
PatchProxy p -> Repository rt p wR wU wR -> IO ())
-> RepoJob ()
forall a b. (a -> b) -> a -> b
$ \patchProxy :: PatchProxy p
patchProxy initRepo :: Repository rt p wR wU wR
initRepo -> do
let repository :: Repository rt p wR wU wR
repository = Repository rt p wR wU wR
-> (Cache -> Cache) -> Repository rt p wR wU wR
forall (rt :: RepoType) (p :: * -> * -> *) wR wU wT.
Repository rt p wR wU wT
-> (Cache -> Cache) -> Repository rt p wR wU wT
modifyCache Repository rt p wR wU wR
initRepo ((Cache -> Cache) -> Repository rt p wR wU wR)
-> (Cache -> Cache) -> Repository rt p wR wU wR
forall a b. (a -> b) -> a -> b
$ [String] -> Cache -> Cache
addReposToCache [String]
pullingFrom
(_, Sealed (us' :: FL (PatchInfoAnd rt p) wZ wR
us' :\/: to_be_pulled :: FL (PatchInfoAnd rt p) wZ wX
to_be_pulled))
<- AbsolutePath
-> [DarcsFlag]
-> [String]
-> String
-> Repository rt p wR wU wR
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) =>
AbsolutePath
-> [DarcsFlag]
-> [String]
-> String
-> Repository rt p wR wU wR
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
fetchPatches AbsolutePath
o [DarcsFlag]
opts [String]
repos "pull" Repository rt p wR wU wR
repository
let from_whom :: a
from_whom = String -> a
forall a. HasCallStack => String -> a
error "Internal error: pull shouldn't need a 'from' address"
pa
-> PatchProxy p
-> String
-> [DarcsFlag]
-> String
-> Repository rt p wR wU wR
-> FL (PatchInfoAnd rt p) wZ wR
-> FL (PatchInfoAnd rt p) wZ wX
-> IO ()
forall pa (rt :: RepoType) (p :: * -> * -> *) wR wU wT wX wZ.
(PatchApplier pa, ApplierRepoTypeConstraint pa rt, IsRepoType rt,
RepoPatch p, ApplyState p ~ Tree) =>
pa
-> PatchProxy p
-> String
-> [DarcsFlag]
-> String
-> Repository rt p wR wU wT
-> FL (PatchInfoAnd rt p) wX wT
-> FL (PatchInfoAnd rt p) wX wZ
-> IO ()
applyPatches pa
patchApplier PatchProxy p
patchProxy "pull" [DarcsFlag]
opts String
forall a. a
from_whom Repository rt p wR wU wR
repository FL (PatchInfoAnd rt p) wZ wR
us' FL (PatchInfoAnd rt p) wZ wX
to_be_pulled
where
addReposToCache :: [String] -> Cache -> Cache
addReposToCache repos' :: [String]
repos' (Ca cache :: [CacheLoc]
cache) = [CacheLoc] -> Cache
Ca ([CacheLoc] -> Cache) -> [CacheLoc] -> Cache
forall a b. (a -> b) -> a -> b
$ [ String -> CacheLoc
toReadOnlyCache String
r | String
r <- [String]
repos' ] [CacheLoc] -> [CacheLoc] -> [CacheLoc]
forall a. [a] -> [a] -> [a]
++ [CacheLoc]
cache
toReadOnlyCache :: String -> CacheLoc
toReadOnlyCache = CacheType -> WritableOrNot -> String -> CacheLoc
Cache CacheType
DarcsCache.Repo WritableOrNot
NotWritable
fetchCmd :: (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
fetchCmd :: (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
fetchCmd (_,o :: AbsolutePath
o) opts :: [DarcsFlag]
opts repos :: [String]
repos =
DryRun -> UseCache -> UpdateWorking -> UMask -> RepoJob () -> IO ()
forall a.
DryRun -> UseCache -> UpdateWorking -> UMask -> RepoJob a -> IO a
withRepoLock (PrimDarcsOption DryRun
dryRun PrimDarcsOption DryRun -> [DarcsFlag] -> DryRun
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) (PrimDarcsOption UseCache
useCache PrimDarcsOption UseCache -> [DarcsFlag] -> UseCache
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) UpdateWorking
YesUpdateWorking (PrimDarcsOption UMask
umask PrimDarcsOption UMask -> [DarcsFlag] -> UMask
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) (RepoJob () -> IO ()) -> RepoJob () -> IO ()
forall a b. (a -> b) -> a -> b
$ (forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) =>
Repository rt p wR wU wR -> IO ())
-> RepoJob ()
forall a.
(forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) =>
Repository rt p wR wU wR -> IO a)
-> RepoJob a
RepoJob ((forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) =>
Repository rt p wR wU wR -> IO ())
-> RepoJob ())
-> (forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) =>
Repository rt p wR wU wR -> IO ())
-> RepoJob ()
forall a b. (a -> b) -> a -> b
$
AbsolutePath
-> [DarcsFlag]
-> [String]
-> String
-> Repository rt p wR wU wR
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
forall (rt :: RepoType) (p :: * -> * -> *) wR wU.
(IsRepoType rt, RepoPatch p, ApplyState p ~ Tree) =>
AbsolutePath
-> [DarcsFlag]
-> [String]
-> String
-> Repository rt p wR wU wR
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
fetchPatches AbsolutePath
o [DarcsFlag]
opts [String]
repos "fetch" (Repository rt p wR wU wR
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR)))
-> ((SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
-> IO ())
-> Repository rt p wR wU wR
-> IO ()
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> [DarcsFlag]
-> (SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
-> IO ()
forall (rt :: RepoType) (p :: * -> * -> *) wR.
(RepoPatch p, ApplyState p ~ Tree) =>
[DarcsFlag]
-> (SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
-> IO ()
makeBundle [DarcsFlag]
opts
fetchPatches :: forall rt p wR wU . (IsRepoType rt, RepoPatch p, ApplyState p ~ Tree)
=> AbsolutePath -> [DarcsFlag] -> [String] -> String
-> Repository rt p wR wU wR
-> IO (SealedPatchSet rt p Origin,
Sealed ((FL (PatchInfoAnd rt p) :\/: FL (PatchInfoAnd rt p)) wR))
fetchPatches :: AbsolutePath
-> [DarcsFlag]
-> [String]
-> String
-> Repository rt p wR wU wR
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
fetchPatches o :: AbsolutePath
o opts :: [DarcsFlag]
opts unfixedrepodirs :: [String]
unfixedrepodirs@(_:_) jobname :: String
jobname repository :: Repository rt p wR wU wR
repository = do
String
here <- IO String
getCurrentDirectory
[String]
repodirs <- ([String] -> [String]
forall a. Eq a => [a] -> [a]
nub ([String] -> [String])
-> ([String] -> [String]) -> [String] -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (String -> String -> Bool
forall a. Eq a => a -> a -> Bool
/= String
here)) ([String] -> [String]) -> IO [String] -> IO [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` (String -> IO String) -> [String] -> IO [String]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM (AbsolutePath -> String -> IO String
fixUrl AbsolutePath
o) [String]
unfixedrepodirs
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when ([String] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [String]
repodirs) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
String -> IO ()
forall (m :: * -> *) a. MonadFail m => String -> m a
fail "Can't pull from current repository!"
[String]
old_default <- String -> IO [String]
getPreflist "defaultrepo"
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when ([String]
old_default [String] -> [String] -> Bool
forall a. Eq a => a -> a -> Bool
== [String]
repodirs Bool -> Bool -> Bool
&& Bool -> Bool
not ([DarcsFlag] -> Bool
hasXmlOutput [DarcsFlag]
opts)) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
let pulling :: String
pulling = case PrimDarcsOption DryRun
dryRun PrimDarcsOption DryRun -> [DarcsFlag] -> DryRun
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts of
O.YesDryRun -> "Would pull"
O.NoDryRun -> "Pulling"
in [DarcsFlag] -> Doc -> IO ()
putInfo [DarcsFlag]
opts (Doc -> IO ()) -> Doc -> IO ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
text (String -> Doc) -> String -> Doc
forall a b. (a -> b) -> a -> b
$ String
pullingString -> String -> String
forall a. [a] -> [a] -> [a]
++" from "String -> String -> String
forall a. [a] -> [a] -> [a]
++(String -> String) -> [String] -> String
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap String -> String
quote [String]
repodirsString -> String -> String
forall a. [a] -> [a] -> [a]
++"..."
(Sealed them :: PatchSet rt p Origin wX
them, Sealed compl :: PatchSet rt p Origin wX
compl) <- Repository rt p wR wU wR
-> [DarcsFlag]
-> [String]
-> IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
forall (rt :: RepoType) (p :: * -> * -> *) wR wU wT.
(IsRepoType rt, RepoPatch p) =>
Repository rt p wR wU wT
-> [DarcsFlag]
-> [String]
-> IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
readRepos Repository rt p wR wU wR
repository [DarcsFlag]
opts [String]
repodirs
String -> DryRun -> RemoteRepos -> SetDefault -> IO ()
addRepoSource ([String] -> String
forall a. [a] -> a
head [String]
repodirs) (PrimDarcsOption DryRun
dryRun PrimDarcsOption DryRun -> [DarcsFlag] -> DryRun
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) (PrimDarcsOption RemoteRepos
remoteRepos PrimDarcsOption RemoteRepos -> [DarcsFlag] -> RemoteRepos
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) (Bool -> [DarcsFlag] -> SetDefault
setDefault Bool
False [DarcsFlag]
opts)
(String -> IO ()) -> [String] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (String -> String -> IO ()
addToPreflist "repos") [String]
repodirs
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless ([DarcsFlag] -> Bool
quiet [DarcsFlag]
opts Bool -> Bool -> Bool
|| [DarcsFlag] -> Bool
hasXmlOutput [DarcsFlag]
opts) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ (String -> IO ()) -> [String] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ String -> IO ()
showMotd [String]
repodirs
PatchSet rt p Origin wR
us <- Repository rt p wR wU wR -> IO (PatchSet rt p Origin wR)
forall (rt :: RepoType) (p :: * -> * -> *) wR wU wT.
(IsRepoType rt, RepoPatch p) =>
Repository rt p wR wU wT -> IO (PatchSet rt p Origin wR)
readRepo Repository rt p wR wU wR
repository
Bool -> PatchSet rt p Origin wR -> PatchSet rt p Origin wX -> IO ()
forall (p :: * -> * -> *) (rt :: RepoType) wStart wX wY.
RepoPatch p =>
Bool -> PatchSet rt p wStart wX -> PatchSet rt p wStart wY -> IO ()
checkUnrelatedRepos (PrimDarcsOption Bool -> [DarcsFlag] -> Bool
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
parseFlags PrimDarcsOption Bool
O.allowUnrelatedRepos [DarcsFlag]
opts) PatchSet rt p Origin wR
us PatchSet rt p Origin wX
them
common :: PatchSet rt p Origin wZ
common :> _ <- (:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR
-> IO ((:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR)
forall (m :: * -> *) a. Monad m => a -> m a
return ((:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR
-> IO ((:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR))
-> (:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR
-> IO ((:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR)
forall a b. (a -> b) -> a -> b
$ PatchSet rt p Origin wR
-> PatchSet rt p Origin wX
-> (:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) Origin wR
forall (p :: * -> * -> *) (rt :: RepoType) wStart wX wY.
Commute p =>
PatchSet rt p wStart wX
-> PatchSet rt p wStart wY
-> (:>) (PatchSet rt p) (FL (PatchInfoAnd rt p)) wStart wX
findCommonWithThem PatchSet rt p Origin wR
us PatchSet rt p Origin wX
them
us' :: FL (PatchInfoAnd rt p) wZ wR
us' :\/: them' :: FL (PatchInfoAnd rt p) wZ wX
them' <- (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
-> IO
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX)
forall (m :: * -> *) a. Monad m => a -> m a
return ((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
-> IO
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX))
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
-> IO
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX)
forall a b. (a -> b) -> a -> b
$ PatchSet rt p Origin wR
-> PatchSet rt p Origin wX
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
forall (p :: * -> * -> *) (rt :: RepoType) wStart wX wY.
Commute p =>
PatchSet rt p wStart wX
-> PatchSet rt p wStart wY
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wX wY
findUncommon PatchSet rt p Origin wR
us PatchSet rt p Origin wX
them
_ :\/: compl' :: FL (PatchInfoAnd rt p) wZ wX
compl' <- (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
-> IO
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX)
forall (m :: * -> *) a. Monad m => a -> m a
return ((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
-> IO
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX))
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
-> IO
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX)
forall a b. (a -> b) -> a -> b
$ PatchSet rt p Origin wR
-> PatchSet rt p Origin wX
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wX
forall (p :: * -> * -> *) (rt :: RepoType) wStart wX wY.
Commute p =>
PatchSet rt p wStart wX
-> PatchSet rt p wStart wY
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wX wY
findUncommon PatchSet rt p Origin wR
us PatchSet rt p Origin wX
compl
let avoided :: [PatchInfo]
avoided = (forall wW wZ. PatchInfoAnd rt p wW wZ -> PatchInfo)
-> FL (PatchInfoAnd rt p) wZ wX -> [PatchInfo]
forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL forall wW wZ. PatchInfoAnd rt p wW wZ -> PatchInfo
forall (rt :: RepoType) (p :: * -> * -> *) wA wB.
PatchInfoAnd rt p wA wB -> PatchInfo
info FL (PatchInfoAnd rt p) wZ wX
compl'
ps :: FL (PatchInfoAnd rt p) wZ wZ
ps :> _ <- (:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX
-> IO
((:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX)
forall (m :: * -> *) a. Monad m => a -> m a
return ((:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX
-> IO
((:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX))
-> (:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX
-> IO
((:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX)
forall a b. (a -> b) -> a -> b
$ (forall wU wV. PatchInfoAnd rt p wU wV -> Bool)
-> FL (PatchInfoAnd rt p) wZ wX
-> (:>)
(FL (PatchInfoAnd rt p))
(FL (PatchInfoAnd rt p) :> FL (PatchInfoAnd rt p))
wZ
wX
forall (p :: * -> * -> *) wX wY.
Commute p =>
(forall wU wV. p wU wV -> Bool)
-> FL p wX wY -> (:>) (FL p) (FL p :> FL p) wX wY
partitionFL (Bool -> Bool
not (Bool -> Bool)
-> (PatchInfoAnd rt p wU wV -> Bool)
-> PatchInfoAnd rt p wU wV
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PatchInfo -> [PatchInfo] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [PatchInfo]
avoided) (PatchInfo -> Bool)
-> (PatchInfoAnd rt p wU wV -> PatchInfo)
-> PatchInfoAnd rt p wU wV
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PatchInfoAnd rt p wU wV -> PatchInfo
forall (rt :: RepoType) (p :: * -> * -> *) wA wB.
PatchInfoAnd rt p wA wB -> PatchInfo
info) FL (PatchInfoAnd rt p) wZ wX
them'
[DarcsFlag] -> Doc -> IO ()
putVerbose [DarcsFlag]
opts (Doc -> IO ()) -> Doc -> IO ()
forall a b. (a -> b) -> a -> b
$
case FL (PatchInfoAnd rt p) wZ wR
us' of
(x :: FL (PatchInfoAnd rt p) wZ wR
x@(_ :>: _)) ->
String -> Doc
text "We have the following new (to them) patches:" Doc -> Doc -> Doc
$$
[Doc] -> Doc
vcat ((forall wW wZ. PatchInfoAnd rt p wW wZ -> Doc)
-> FL (PatchInfoAnd rt p) wZ wR -> [Doc]
forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL forall wW wZ. PatchInfoAnd rt p wW wZ -> Doc
forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
description FL (PatchInfoAnd rt p) wZ wR
x)
_ -> Doc
forall a. Monoid a => a
mempty
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FL (PatchInfoAnd rt p) wZ wZ -> Bool
forall (a :: * -> * -> *) wX wZ. FL a wX wZ -> Bool
nullFL FL (PatchInfoAnd rt p) wZ wZ
ps) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ [DarcsFlag] -> Doc -> IO ()
putVerbose [DarcsFlag]
opts (Doc -> IO ()) -> Doc -> IO ()
forall a b. (a -> b) -> a -> b
$
String -> Doc
text "They have the following patches to pull:" Doc -> Doc -> Doc
$$
[Doc] -> Doc
vcat ((forall wW wZ. PatchInfoAnd rt p wW wZ -> Doc)
-> FL (PatchInfoAnd rt p) wZ wZ -> [Doc]
forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL forall wW wZ. PatchInfoAnd rt p wW wZ -> Doc
forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
description FL (PatchInfoAnd rt p) wZ wZ
ps)
(hadConflicts :: Bool
hadConflicts, Sealed psFiltered :: FL (PatchInfoAnd rt p) wZ wX
psFiltered)
<- if PrimDarcsOption (Maybe AllowConflicts)
O.conflictsYes PrimDarcsOption (Maybe AllowConflicts)
-> [DarcsFlag] -> Maybe AllowConflicts
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts Maybe AllowConflicts -> Maybe AllowConflicts -> Bool
forall a. Eq a => a -> a -> Bool
== Maybe AllowConflicts
forall a. Maybe a
Nothing
then RL (PatchInfoAnd rt p) wZ wR
-> Repository rt p wR wU wR
-> FL (PatchInfoAnd rt p) wZ wZ
-> IO (Bool, Sealed (FL (PatchInfoAnd rt p) wZ))
forall (p :: * -> * -> *) (rt :: RepoType) wX wT wR wU wZ.
(RepoPatch p, ApplyState p ~ Tree) =>
RL (PatchInfoAnd rt p) wX wT
-> Repository rt p wR wU wT
-> FL (PatchInfoAnd rt p) wX wZ
-> IO (Bool, Sealed (FL (PatchInfoAnd rt p) wX))
filterOutConflicts (FL (PatchInfoAnd rt p) wZ wR -> RL (PatchInfoAnd rt p) wZ wR
forall (a :: * -> * -> *) wX wZ. FL a wX wZ -> RL a wX wZ
reverseFL FL (PatchInfoAnd rt p) wZ wR
us') Repository rt p wR wU wR
repository FL (PatchInfoAnd rt p) wZ wZ
ps
else (Bool, Sealed (FL (PatchInfoAnd rt p) wZ))
-> IO (Bool, Sealed (FL (PatchInfoAnd rt p) wZ))
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
False, FL (PatchInfoAnd rt p) wZ wZ -> Sealed (FL (PatchInfoAnd rt p) wZ)
forall (a :: * -> *) wX. a wX -> Sealed a
Sealed FL (PatchInfoAnd rt p) wZ wZ
ps)
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
hadConflicts (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ [DarcsFlag] -> Doc -> IO ()
putInfo [DarcsFlag]
opts (Doc -> IO ()) -> Doc -> IO ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
text "Skipping some patches which would cause conflicts."
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (FL (PatchInfoAnd rt p) wZ wX -> Bool
forall (a :: * -> * -> *) wX wZ. FL a wX wZ -> Bool
nullFL FL (PatchInfoAnd rt p) wZ wX
psFiltered) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do [DarcsFlag] -> Doc -> IO ()
putInfo [DarcsFlag]
opts (Doc -> IO ()) -> Doc -> IO ()
forall a b. (a -> b) -> a -> b
$ String -> Doc
text "No remote patches to pull in!"
FL (PatchInfoAnd rt p) wZ wX -> IO ()
forall (p :: * -> * -> *) (rt :: RepoType) wX wY.
(RepoPatch p, ApplyState p ~ Tree) =>
FL (PatchInfoAnd rt p) wX wY -> IO ()
setEnvDarcsPatches FL (PatchInfoAnd rt p) wZ wX
psFiltered
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (PrimDarcsOption Reorder
reorder PrimDarcsOption Reorder -> [DarcsFlag] -> Reorder
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts Reorder -> Reorder -> Bool
forall a. Eq a => a -> a -> Bool
/= Reorder
O.Reorder) IO ()
forall a. IO a
exitSuccess
let direction :: WhichChanges
direction = if PrimDarcsOption Bool
changesReverse PrimDarcsOption Bool -> [DarcsFlag] -> Bool
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts then WhichChanges
FirstReversed else WhichChanges
First
context :: PatchSelectionContext (PatchInfoAnd rt p)
context = WhichChanges
-> String
-> PatchSelectionOptions
-> Maybe (Splitter (PatchInfoAnd rt p))
-> Maybe [String]
-> PatchSelectionContext (PatchInfoAnd rt p)
forall (rt :: RepoType) (p :: * -> * -> *).
(IsRepoType rt, RepoPatch p) =>
WhichChanges
-> String
-> PatchSelectionOptions
-> Maybe (Splitter (PatchInfoAnd rt p))
-> Maybe [String]
-> PatchSelectionContext (PatchInfoAnd rt p)
selectionContext WhichChanges
direction String
jobname ([DarcsFlag] -> PatchSelectionOptions
pullPatchSelOpts [DarcsFlag]
opts) Maybe (Splitter (PatchInfoAnd rt p))
forall a. Maybe a
Nothing Maybe [String]
forall a. Maybe a
Nothing
(to_be_pulled :: FL (PatchInfoAnd rt p) wZ wZ
to_be_pulled :> _) <- FL (PatchInfoAnd rt p) wZ wX
-> PatchSelectionContext (PatchInfoAnd rt p)
-> IO
((:>) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wZ wX)
forall (p :: * -> * -> *) wX wY.
(Invert p, Commute p, Apply p, PatchInspect p, ShowPatch p,
ShowContextPatch p, ApplyState p ~ Tree) =>
FL p wX wY
-> PatchSelectionContext p -> IO ((:>) (FL p) (FL p) wX wY)
runSelection FL (PatchInfoAnd rt p) wZ wX
psFiltered PatchSelectionContext (PatchInfoAnd rt p)
context
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
forall (m :: * -> *) a. Monad m => a -> m a
return (PatchSet rt p Origin wZ -> SealedPatchSet rt p Origin
forall (a :: * -> *) wX. a wX -> Sealed a
seal PatchSet rt p Origin wZ
common, (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wZ
-> Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR)
forall (a :: * -> *) wX. a wX -> Sealed a
seal ((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wZ
-> Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wZ
-> Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR)
forall a b. (a -> b) -> a -> b
$ FL (PatchInfoAnd rt p) wZ wR
us' FL (PatchInfoAnd rt p) wZ wR
-> FL (PatchInfoAnd rt p) wZ wZ
-> (:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR wZ
forall (a1 :: * -> * -> *) (a2 :: * -> * -> *) wX wY wZ.
a1 wZ wX -> a2 wZ wY -> (:\/:) a1 a2 wX wY
:\/: FL (PatchInfoAnd rt p) wZ wZ
to_be_pulled)
fetchPatches _ _ [] jobname :: String
jobname _ = String
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR)))
-> String
-> IO
(SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
forall a b. (a -> b) -> a -> b
$
"No default repository to " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
jobname String -> String -> String
forall a. [a] -> [a] -> [a]
++ " from, please specify one"
makeBundle :: forall rt p wR . (RepoPatch p, ApplyState p ~ Tree)
=> [DarcsFlag]
-> (SealedPatchSet rt p Origin,
Sealed ((FL (PatchInfoAnd rt p) :\/: FL (PatchInfoAnd rt p)) wR))
-> IO ()
makeBundle :: [DarcsFlag]
-> (SealedPatchSet rt p Origin,
Sealed
((:\/:) (FL (PatchInfoAnd rt p)) (FL (PatchInfoAnd rt p)) wR))
-> IO ()
makeBundle opts :: [DarcsFlag]
opts (Sealed common :: PatchSet rt p Origin wX
common, Sealed (_ :\/: to_be_fetched :: FL (PatchInfoAnd rt p) wZ wX
to_be_fetched)) =
do
Doc
bundle <- Maybe (Tree IO)
-> PatchSet rt p Origin wZ
-> FL (WrappedNamed rt p) wZ wX
-> IO Doc
forall (p :: * -> * -> *) (rt :: RepoType) wStart wX wY.
(ApplyState p ~ Tree, RepoPatch p) =>
Maybe (Tree IO)
-> PatchSet rt p wStart wX
-> FL (WrappedNamed rt p) wX wY
-> IO Doc
makeBundleN Maybe (Tree IO)
forall a. Maybe a
Nothing (PatchSet rt p Origin wX -> PatchSet rt p Origin wZ
forall (a :: * -> * -> *) wX wY1 wY2. a wX wY1 -> a wX wY2
unsafeCoercePEnd PatchSet rt p Origin wX
common) (FL (WrappedNamed rt p) wZ wX -> IO Doc)
-> FL (WrappedNamed rt p) wZ wX -> IO Doc
forall a b. (a -> b) -> a -> b
$
(forall wW wY. PatchInfoAnd rt p wW wY -> WrappedNamed rt p wW wY)
-> FL (PatchInfoAnd rt p) wZ wX -> FL (WrappedNamed rt p) wZ wX
forall (a :: * -> * -> *) (b :: * -> * -> *) wX wZ.
(forall wW wY. a wW wY -> b wW wY) -> FL a wX wZ -> FL b wX wZ
mapFL_FL forall wW wY. PatchInfoAnd rt p wW wY -> WrappedNamed rt p wW wY
forall (rt :: RepoType) (p :: * -> * -> *) wA wB.
PatchInfoAnd rt p wA wB -> WrappedNamed rt p wA wB
hopefully FL (PatchInfoAnd rt p) wZ wX
to_be_fetched
let fname :: String
fname = case FL (PatchInfoAnd rt p) wZ wX
to_be_fetched of
(x :: PatchInfoAnd rt p wZ wY
x:>:_)-> String -> String
patchFilename (String -> String) -> String -> String
forall a b. (a -> b) -> a -> b
$ PatchInfoAnd rt p wZ wY -> String
forall (rt :: RepoType) (p :: * -> * -> *) wX wY.
PatchInfoAnd rt p wX wY -> String
patchDesc PatchInfoAnd rt p wZ wY
x
_ -> String
forall a. a
impossible
o :: AbsolutePathOrStd
o = AbsolutePathOrStd -> Maybe AbsolutePathOrStd -> AbsolutePathOrStd
forall a. a -> Maybe a -> a
fromMaybe AbsolutePathOrStd
stdOut ([DarcsFlag] -> String -> Maybe AbsolutePathOrStd
getOutput [DarcsFlag]
opts String
fname)
(AbsolutePath -> Doc -> IO ())
-> (Doc -> IO ()) -> AbsolutePathOrStd -> Doc -> IO ()
forall a. (AbsolutePath -> a) -> a -> AbsolutePathOrStd -> a
useAbsoluteOrStd AbsolutePath -> Doc -> IO ()
forall p. FilePathLike p => p -> Doc -> IO ()
writeDocBinFile Doc -> IO ()
putDoc AbsolutePathOrStd
o Doc
bundle
revertable :: IO a -> IO a
revertable :: IO a -> IO a
revertable x :: IO a
x =
IO a
x IO a -> String -> IO a
forall a. IO a -> String -> IO a
`clarifyErrors` [String] -> String
unlines
["Error applying patch to the working directory.","",
"This may have left your working directory an inconsistent",
"but recoverable state. If you had no un-recorded changes",
"by using 'darcs revert' you should be able to make your",
"working directory consistent again."]
readRepos :: (IsRepoType rt, RepoPatch p)
=> Repository rt p wR wU wT -> [DarcsFlag] -> [String]
-> IO (SealedPatchSet rt p Origin,SealedPatchSet rt p Origin)
readRepos :: Repository rt p wR wU wT
-> [DarcsFlag]
-> [String]
-> IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
readRepos _ _ [] = IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
forall a. a
impossible
readRepos to_repo :: Repository rt p wR wU wT
to_repo opts :: [DarcsFlag]
opts us :: [String]
us =
do [SealedPatchSet rt p Origin]
rs <- (String -> IO (SealedPatchSet rt p Origin))
-> [String] -> IO [SealedPatchSet rt p Origin]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM (\u :: String
u -> do Repository rt p Any Any Any
r <- Repository rt p wR wU wT
-> UseCache -> String -> IO (Repository rt p Any Any Any)
forall (rt :: RepoType) (p :: * -> * -> *) wR wU wT vR vU vT.
Repository rt p wR wU wT
-> UseCache -> String -> IO (Repository rt p vR vU vT)
identifyRepositoryFor Repository rt p wR wU wT
to_repo (PrimDarcsOption UseCache
useCache PrimDarcsOption UseCache -> [DarcsFlag] -> UseCache
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
opts) String
u
PatchSet rt p Origin Any
ps <- Repository rt p Any Any Any -> IO (PatchSet rt p Origin Any)
forall (rt :: RepoType) (p :: * -> * -> *) wR wU wT.
(IsRepoType rt, RepoPatch p) =>
Repository rt p wR wU wT -> IO (PatchSet rt p Origin wR)
readRepo Repository rt p Any Any Any
r
SealedPatchSet rt p Origin -> IO (SealedPatchSet rt p Origin)
forall (m :: * -> *) a. Monad m => a -> m a
return (SealedPatchSet rt p Origin -> IO (SealedPatchSet rt p Origin))
-> SealedPatchSet rt p Origin -> IO (SealedPatchSet rt p Origin)
forall a b. (a -> b) -> a -> b
$ PatchSet rt p Origin Any -> SealedPatchSet rt p Origin
forall (a :: * -> *) wX. a wX -> Sealed a
seal PatchSet rt p Origin Any
ps) [String]
us
(SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
-> IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
forall (m :: * -> *) a. Monad m => a -> m a
return ((SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
-> IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin))
-> (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
-> IO (SealedPatchSet rt p Origin, SealedPatchSet rt p Origin)
forall a b. (a -> b) -> a -> b
$ case PrimDarcsOption RepoCombinator -> [DarcsFlag] -> RepoCombinator
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
parseFlags PrimDarcsOption RepoCombinator
O.repoCombinator [DarcsFlag]
opts of
O.Intersection -> ([SealedPatchSet rt p Origin] -> SealedPatchSet rt p Origin
forall (p :: * -> * -> *) (rt :: RepoType) wStart.
Commute p =>
[SealedPatchSet rt p wStart] -> SealedPatchSet rt p wStart
patchSetIntersection [SealedPatchSet rt p Origin]
rs, PatchSet rt p Origin Origin -> SealedPatchSet rt p Origin
forall (a :: * -> *) wX. a wX -> Sealed a
seal (RL (Tagged rt p) Origin Origin
-> RL (PatchInfoAnd rt p) Origin Origin
-> PatchSet rt p Origin Origin
forall (rt :: RepoType) (p :: * -> * -> *) wStart wX wY.
RL (Tagged rt p) wStart wX
-> RL (PatchInfoAnd rt p) wX wY -> PatchSet rt p wStart wY
PatchSet RL (Tagged rt p) Origin Origin
forall (a :: * -> * -> *) wX. RL a wX wX
NilRL RL (PatchInfoAnd rt p) Origin Origin
forall (a :: * -> * -> *) wX. RL a wX wX
NilRL))
O.Complement -> ([SealedPatchSet rt p Origin] -> SealedPatchSet rt p Origin
forall a. [a] -> a
head [SealedPatchSet rt p Origin]
rs, [SealedPatchSet rt p Origin] -> SealedPatchSet rt p Origin
forall (p :: * -> * -> *) (rt :: RepoType) wStart.
Merge p =>
[SealedPatchSet rt p wStart] -> SealedPatchSet rt p wStart
patchSetUnion ([SealedPatchSet rt p Origin] -> SealedPatchSet rt p Origin)
-> [SealedPatchSet rt p Origin] -> SealedPatchSet rt p Origin
forall a b. (a -> b) -> a -> b
$ [SealedPatchSet rt p Origin] -> [SealedPatchSet rt p Origin]
forall a. [a] -> [a]
tail [SealedPatchSet rt p Origin]
rs)
O.Union -> ([SealedPatchSet rt p Origin] -> SealedPatchSet rt p Origin
forall (p :: * -> * -> *) (rt :: RepoType) wStart.
Merge p =>
[SealedPatchSet rt p wStart] -> SealedPatchSet rt p wStart
patchSetUnion [SealedPatchSet rt p Origin]
rs, PatchSet rt p Origin Origin -> SealedPatchSet rt p Origin
forall (a :: * -> *) wX. a wX -> Sealed a
seal (RL (Tagged rt p) Origin Origin
-> RL (PatchInfoAnd rt p) Origin Origin
-> PatchSet rt p Origin Origin
forall (rt :: RepoType) (p :: * -> * -> *) wStart wX wY.
RL (Tagged rt p) wStart wX
-> RL (PatchInfoAnd rt p) wX wY -> PatchSet rt p wStart wY
PatchSet RL (Tagged rt p) Origin Origin
forall (a :: * -> * -> *) wX. RL a wX wX
NilRL RL (PatchInfoAnd rt p) Origin Origin
forall (a :: * -> * -> *) wX. RL a wX wX
NilRL))
pullPatchSelOpts :: [DarcsFlag] -> S.PatchSelectionOptions
pullPatchSelOpts :: [DarcsFlag] -> PatchSelectionOptions
pullPatchSelOpts flags :: [DarcsFlag]
flags = PatchSelectionOptions :: Verbosity
-> [MatchFlag]
-> Bool
-> SelectDeps
-> Summary
-> WithContext
-> PatchSelectionOptions
S.PatchSelectionOptions
{ verbosity :: Verbosity
S.verbosity = PrimDarcsOption Verbosity
verbosity PrimDarcsOption Verbosity -> [DarcsFlag] -> Verbosity
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
flags
, matchFlags :: [MatchFlag]
S.matchFlags = MatchOption -> [DarcsFlag] -> [MatchFlag]
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
parseFlags MatchOption
O.matchSeveral [DarcsFlag]
flags
, interactive :: Bool
S.interactive = Bool -> [DarcsFlag] -> Bool
isInteractive Bool
True [DarcsFlag]
flags
, selectDeps :: SelectDeps
S.selectDeps = PrimDarcsOption SelectDeps
selectDeps PrimDarcsOption SelectDeps -> [DarcsFlag] -> SelectDeps
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
flags
, summary :: Summary
S.summary = PrimDarcsOption Summary
O.summary PrimDarcsOption Summary -> [DarcsFlag] -> Summary
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
flags
, withContext :: WithContext
S.withContext = PrimDarcsOption WithContext
withContext PrimDarcsOption WithContext -> [DarcsFlag] -> WithContext
forall (d :: * -> *) f v.
(forall a. PrimOptSpec d f a v) -> [f] -> v
? [DarcsFlag]
flags
}