diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-08-03 12:37:12 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-08-03 12:37:12 -0400 |
commit | 1a0e2c990183cda9e63a82503f3ce4fe0f35c314 (patch) | |
tree | 576f278dff952156d5cef4f80c9c51902e001fb8 /Types/ActionItem.hs | |
parent | 0fc85c45b5a6ee0523cc4d0d77e485249726bbf9 (diff) |
get, move, copy, mirror: Added --failed switch which retries failed copies/moves
Note that get --from foo --failed will get things that a previous get --from bar
tried and failed to get, etc. I considered making --failed only retry
transfers from the same remote, but it was easier, and seems more useful,
to not have the same remote requirement.
Noisy due to some refactoring into Types/
Diffstat (limited to 'Types/ActionItem.hs')
-rw-r--r-- | Types/ActionItem.hs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Types/ActionItem.hs b/Types/ActionItem.hs new file mode 100644 index 0000000000..a0097e45a8 --- /dev/null +++ b/Types/ActionItem.hs @@ -0,0 +1,54 @@ +{- items that a command can act on + - + - Copyright 2016 Joey Hess <id@joeyh.name> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} + +module Types.ActionItem where + +import Types.Key +import Types.Transfer +import Git.FilePath + +import Data.Maybe + +data ActionItem + = ActionItemAssociatedFile AssociatedFile + | ActionItemKey + | ActionItemBranchFilePath BranchFilePath + | ActionItemFailedTransfer Transfer TransferInfo + +class MkActionItem t where + mkActionItem :: t -> ActionItem + +instance MkActionItem AssociatedFile where + mkActionItem = ActionItemAssociatedFile + +instance MkActionItem Key where + mkActionItem _ = ActionItemKey + +instance MkActionItem BranchFilePath where + mkActionItem = ActionItemBranchFilePath + +instance MkActionItem (Transfer, TransferInfo) where + mkActionItem = uncurry ActionItemFailedTransfer + +actionItemDesc :: ActionItem -> Key -> String +actionItemDesc (ActionItemAssociatedFile (Just f)) _ = f +actionItemDesc (ActionItemAssociatedFile Nothing) k = key2file k +actionItemDesc ActionItemKey k = key2file k +actionItemDesc (ActionItemBranchFilePath bfp) _ = descBranchFilePath bfp +actionItemDesc (ActionItemFailedTransfer _ i) k = + fromMaybe (key2file k) (associatedFile i) + +actionItemWorkTreeFile :: ActionItem -> Maybe FilePath +actionItemWorkTreeFile (ActionItemAssociatedFile af) = af +actionItemWorkTreeFile _ = Nothing + +actionItemTransferDirection :: ActionItem -> Maybe Direction +actionItemTransferDirection (ActionItemFailedTransfer t _) = Just $ + transferDirection t +actionItemTransferDirection _ = Nothing |