- hashBundle :: (PatchListFormat p, ShowPatchBasic p) => FL (Named p) x y -> String
- makeBundle2 :: (ApplyState p ~ Tree, RepoPatch p) => Maybe (Tree IO) -> RL (PatchInfoAnd p) start x -> FL (Named p) x y -> FL (Named p) x y -> IO Doc
- makeBundleN :: (ApplyState p ~ Tree, RepoPatch p) => Maybe (Tree IO) -> PatchSet p start x -> FL (Named p) x y -> IO Doc
- scanBundle :: forall p. RepoPatch p => ByteString -> Either String (SealedPatchSet p Origin)
- contextPatches :: RepoPatch p => PatchSet p Origin x -> (PatchSet p :> RL (PatchInfoAnd p)) Origin x
- scanContext :: RepoPatch p => ByteString -> PatchSet p Origin x
- patchFilename :: String -> String
- getContext :: ByteString -> ([PatchInfo], ByteString)
- parseBundle :: forall p. RepoPatch p => ByteString -> Either String (Sealed ((PatchSet p :> FL (PatchInfoAnd p)) Origin))
hashBundle creates a SHA1 string of a given a FL of named patches. This allows us to ensure that the patches in a received patchBundle have not been modified in transit.
In makeBundle2, it is presumed that the two patch sequences are identical, but that they may be lazily generated. If two different patch sequences are passed, a bundle with a mismatched hash will be generated, which is not the end of the world, but isn't very useful either.
patchFilename maps a patch description string to a safe (lowercased, spaces removed and ascii-only characters) patch filename.
getContext parses a context list, returning a tuple containing the list, and remaining ByteString input.