aboutsummaryrefslogtreecommitdiff
path: root/Command/Get.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-07-09 16:05:45 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-07-09 16:05:45 -0400
commit525e04af35bb588b4f8a8721cfa77b2b285ac914 (patch)
tree9d00a7d7066a8ad30c9e6313706d47de2609f82a /Command/Get.hs
parent87896574f32be5aa1636facc494faeab34cd0845 (diff)
wip
Diffstat (limited to 'Command/Get.hs')
-rw-r--r--Command/Get.hs44
1 files changed, 27 insertions, 17 deletions
diff --git a/Command/Get.hs b/Command/Get.hs
index 297f5d27b..3af09b642 100644
--- a/Command/Get.hs
+++ b/Command/Get.hs
@@ -17,29 +17,39 @@ import Annex.Wanted
import qualified Command.Move
cmd :: Command
-cmd = withOptions getOptions $
- command "get" SectionCommon
- "make content of annexed files available"
- paramPaths (withParams seek)
+cmd = command "get" SectionCommon
+ "make content of annexed files available"
+ paramPaths (seek <$$> optParser)
-getOptions :: [Option]
-getOptions = fromOption : autoOption : jobsOption : annexedMatchingOptions
- ++ incompleteOption : keyOptions
+data GetOptions = GetOptions
+ { getFiles :: CmdParams
+ , getFrom :: Maybe (DeferredParse Remote)
+ , autoMode :: Bool
+ , keyOptions :: Maybe KeyOptions
+ }
-seek :: CmdParams -> CommandSeek
-seek ps = do
- from <- getOptionField fromOption Remote.byNameWithUUID
- auto <- getOptionFlag autoOption
- withKeyOptions auto
+optParser :: CmdParamsDesc -> Parser GetOptions
+optParser desc = GetOptions
+ <$> cmdParams desc
+ <*> optional parseFromOption
+ <*> parseAutoOption
+ <*> optional (parseKeyOptions True)
+
+-- TODO: jobsOption, annexedMatchingOptions
+
+seek :: GetOptions -> CommandSeek
+seek o = do
+ from <- maybe (pure Nothing) (Just <$$> getParsed) (getFrom o)
+ withKeyOptions (keyOptions o) (autoMode o)
(startKeys from)
- (withFilesInGit $ whenAnnexed $ start auto from)
- ps
+ (withFilesInGit $ whenAnnexed $ start o from)
+ (getFiles o)
-start :: Bool -> Maybe Remote -> FilePath -> Key -> CommandStart
-start auto from file key = start' expensivecheck from key (Just file)
+start :: GetOptions -> Maybe Remote -> FilePath -> Key -> CommandStart
+start o from file key = start' expensivecheck from key (Just file)
where
expensivecheck
- | auto = numCopiesCheck file key (<) <||> wantGet False (Just key) (Just file)
+ | autoMode o = numCopiesCheck file key (<) <||> wantGet False (Just key) (Just file)
| otherwise = return True
startKeys :: Maybe Remote -> Key -> CommandStart