skeleton of filter-branch command, with option parser
This commit is contained in:
parent
a71c002ac1
commit
a58c90ccf4
4 changed files with 88 additions and 4 deletions
|
@ -68,6 +68,7 @@ import qualified Command.Unlock
|
||||||
import qualified Command.Lock
|
import qualified Command.Lock
|
||||||
import qualified Command.PreCommit
|
import qualified Command.PreCommit
|
||||||
import qualified Command.PostReceive
|
import qualified Command.PostReceive
|
||||||
|
import qualified Command.FilterBranch
|
||||||
import qualified Command.Find
|
import qualified Command.Find
|
||||||
import qualified Command.FindRef
|
import qualified Command.FindRef
|
||||||
import qualified Command.Whereis
|
import qualified Command.Whereis
|
||||||
|
@ -202,6 +203,7 @@ cmds testoptparser testrunner mkbenchmarkgenerator = map addGitAnnexGlobalOption
|
||||||
, Command.Unused.cmd
|
, Command.Unused.cmd
|
||||||
, Command.DropUnused.cmd
|
, Command.DropUnused.cmd
|
||||||
, Command.AddUnused.cmd
|
, Command.AddUnused.cmd
|
||||||
|
, Command.FilterBranch.cmd
|
||||||
, Command.Find.cmd
|
, Command.Find.cmd
|
||||||
, Command.FindRef.cmd
|
, Command.FindRef.cmd
|
||||||
, Command.Whereis.cmd
|
, Command.Whereis.cmd
|
||||||
|
|
78
Command/FilterBranch.hs
Normal file
78
Command/FilterBranch.hs
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
{- git-annex command
|
||||||
|
-
|
||||||
|
- Copyright 2021 Joey Hess <id@joeyh.name>
|
||||||
|
-
|
||||||
|
- Licensed under the GNU AGPL version 3 or higher.
|
||||||
|
-}
|
||||||
|
|
||||||
|
module Command.FilterBranch where
|
||||||
|
|
||||||
|
import Command
|
||||||
|
|
||||||
|
cmd :: Command
|
||||||
|
cmd = withGlobalOptions [annexedMatchingOptions] $
|
||||||
|
command "filter-branch" SectionMaintenance
|
||||||
|
"filter information from the git-annex branch"
|
||||||
|
paramPaths (seek <$$> optParser)
|
||||||
|
|
||||||
|
data FilterBranchOptions = FilterBranchOptions
|
||||||
|
{ includeFiles :: CmdParams
|
||||||
|
, keyOptions :: Maybe KeyOptions
|
||||||
|
, includeKeyInformationFor :: [DeferredParse UUID]
|
||||||
|
, excludeKeyInformationFor :: [DeferredParse UUID]
|
||||||
|
, includeAllKeyInformation :: Bool
|
||||||
|
, includeRepoConfigFor :: [DeferredParse UUID]
|
||||||
|
, excludeRepoConfigFor :: [DeferredParse UUID]
|
||||||
|
, includeAllRemoteConfig :: Bool
|
||||||
|
, includeGlobalConfig :: Bool
|
||||||
|
, excludeGlobalConfig :: Bool
|
||||||
|
}
|
||||||
|
|
||||||
|
optParser :: CmdParamsDesc -> Parser FilterBranchOptions
|
||||||
|
optParser desc = FilterBranchOptions
|
||||||
|
<$> cmdParams desc
|
||||||
|
<*> optional parseKeyOptions
|
||||||
|
<*> many
|
||||||
|
( parseRepositoryOption "include-key-information-for"
|
||||||
|
"include key information for a repository"
|
||||||
|
)
|
||||||
|
<*> many
|
||||||
|
( parseRepositoryOption "exclude-key-information-for"
|
||||||
|
"exclude key information for a repository"
|
||||||
|
)
|
||||||
|
<*> switch
|
||||||
|
( long "include-all-key-information"
|
||||||
|
<> help "include key information for all repositories"
|
||||||
|
)
|
||||||
|
<*> many
|
||||||
|
( parseRepositoryOption "include-repo-config-for"
|
||||||
|
"include configuration specific to a repository"
|
||||||
|
)
|
||||||
|
<*> many
|
||||||
|
( parseRepositoryOption "exclude-repo-config-for"
|
||||||
|
"exclude configuration specific to a repository"
|
||||||
|
)
|
||||||
|
<*> switch
|
||||||
|
( long "include-all-repo-config"
|
||||||
|
<> help "include configuration of all repositories"
|
||||||
|
)
|
||||||
|
<*> switch
|
||||||
|
( long "include-global-config"
|
||||||
|
<> help "include global configuration"
|
||||||
|
)
|
||||||
|
<*> switch
|
||||||
|
( long "exclude-global-config"
|
||||||
|
<> help "exclude global configuration"
|
||||||
|
)
|
||||||
|
|
||||||
|
parseRepositoryOption :: String -> String -> Parser (DeferredParse UUID)
|
||||||
|
parseRepositoryOption s h = parseUUIDOption <$> strOption
|
||||||
|
( long s
|
||||||
|
<> metavar (paramRemote `paramOr` paramDesc `paramOr` paramUUID)
|
||||||
|
<> help h
|
||||||
|
<> completeRemotes
|
||||||
|
)
|
||||||
|
|
||||||
|
seek :: FilterBranchOptions -> CommandSeek
|
||||||
|
seek o = do
|
||||||
|
error "TODO"
|
|
@ -15,10 +15,11 @@ and git-annex there will automatically merge that into its git-annex
|
||||||
branch. This allows publishing some information from your git-annex branch,
|
branch. This allows publishing some information from your git-annex branch,
|
||||||
without publishing the whole thing.
|
without publishing the whole thing.
|
||||||
|
|
||||||
Other ways to avoid publishing information from a git-annex branch
|
Other ways to avoid publishing information from a git-annex branch,
|
||||||
include [[git-annex-forget]](1), the `annex.private` git config,
|
or remove information from it include [[git-annex-forget]](1), the
|
||||||
and the `--private` option to [[git-annex-initremote](1). Those are much
|
`annex.private` git config, and the `--private` option to
|
||||||
easier to use, but this provides full control for those who need it.
|
[[git-annex-initremote](1). Those are much easier to use, but this
|
||||||
|
provides full control for those who need it.
|
||||||
|
|
||||||
With no options, no information at all will be included from the git-annex
|
With no options, no information at all will be included from the git-annex
|
||||||
branch. Use options to specify what to include. All options can be specified
|
branch. Use options to specify what to include. All options can be specified
|
||||||
|
@ -83,6 +84,8 @@ multiple times.
|
||||||
|
|
||||||
* `--include-all-repo-config`
|
* `--include-all-repo-config`
|
||||||
|
|
||||||
|
Include the configuration of all repositories.
|
||||||
|
|
||||||
* `--include-global-config`
|
* `--include-global-config`
|
||||||
|
|
||||||
Include global configuration, that is not specific to any repository.
|
Include global configuration, that is not specific to any repository.
|
||||||
|
|
|
@ -742,6 +742,7 @@ Executable git-annex
|
||||||
Command.ExamineKey
|
Command.ExamineKey
|
||||||
Command.Expire
|
Command.Expire
|
||||||
Command.Export
|
Command.Export
|
||||||
|
Command.FilterBranch
|
||||||
Command.Find
|
Command.Find
|
||||||
Command.FindRef
|
Command.FindRef
|
||||||
Command.Fix
|
Command.Fix
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue