summaryrefslogtreecommitdiff
path: root/Command/VFilter.hs
blob: 60bbcd3d3ffffad7914b04d55bae0105e979f034 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{- git-annex command
 -
 - Copyright 2014 Joey Hess <id@joeyh.name>
 -
 - Licensed under the GNU GPL version 3 or higher.
 -}

module Command.VFilter where

import Command
import Annex.View
import Command.View (paramView, checkoutViewBranch)

cmd :: Command
cmd = notBareRepo $ notDirect $
	command "vfilter" SectionMetaData "filter current view"
		paramView (withParams seek)

seek :: CmdParams -> CommandSeek
seek = withWords start

start :: [String] -> CommandStart
start params = do
	showStart "vfilter" ""
	withCurrentView $ \view -> do
		let view' = filterView view $
			map parseViewParam $ reverse params
		next $ next $ if visibleViewSize view' > visibleViewSize view
			then error "That would add an additional level of directory structure to the view, rather than filtering it. If you want to do that, use vadd instead of vfilter."
			else checkoutViewBranch view' narrowView