2011-01-07 00:26:57 +00:00
|
|
|
{- git-annex main program
|
|
|
|
-
|
2022-09-23 20:29:28 +00:00
|
|
|
- Copyright 2010-2022 Joey Hess <id@joeyh.name>
|
2011-01-07 00:26:57 +00:00
|
|
|
-
|
2019-03-13 19:48:14 +00:00
|
|
|
- Licensed under the GNU AGPL version 3 or higher.
|
2011-01-07 00:26:57 +00:00
|
|
|
-}
|
|
|
|
|
2013-11-06 20:33:45 +00:00
|
|
|
{-# LANGUAGE CPP, OverloadedStrings #-}
|
2012-06-26 13:15:47 +00:00
|
|
|
|
2014-01-26 20:25:55 +00:00
|
|
|
module CmdLine.GitAnnex where
|
2011-01-07 00:26:57 +00:00
|
|
|
|
2012-05-18 22:20:53 +00:00
|
|
|
import qualified Git.CurrentRepo
|
2011-01-07 06:15:10 +00:00
|
|
|
import CmdLine
|
2011-01-07 00:26:57 +00:00
|
|
|
import Command
|
2014-04-12 19:59:34 +00:00
|
|
|
import Utility.Env
|
|
|
|
import Annex.Ssh
|
2017-03-30 23:32:58 +00:00
|
|
|
import Annex.Multicast
|
2015-07-13 17:19:20 +00:00
|
|
|
import Types.Test
|
2019-01-04 17:43:53 +00:00
|
|
|
import Types.Benchmark
|
2011-01-07 00:26:57 +00:00
|
|
|
|
2015-07-10 20:32:33 +00:00
|
|
|
import qualified Command.Help
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Add
|
|
|
|
import qualified Command.Unannex
|
|
|
|
import qualified Command.Drop
|
|
|
|
import qualified Command.Move
|
|
|
|
import qualified Command.Copy
|
|
|
|
import qualified Command.Get
|
2015-07-09 19:23:14 +00:00
|
|
|
import qualified Command.Fsck
|
2015-07-12 00:43:45 +00:00
|
|
|
import qualified Command.LookupKey
|
2016-04-20 17:49:42 +00:00
|
|
|
import qualified Command.CalcKey
|
2015-07-12 00:43:45 +00:00
|
|
|
import qualified Command.ContentLocation
|
|
|
|
import qualified Command.ExamineKey
|
2016-01-25 20:16:18 +00:00
|
|
|
import qualified Command.MatchExpression
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.FromKey
|
2015-03-15 18:37:33 +00:00
|
|
|
import qualified Command.RegisterUrl
|
2021-03-01 18:28:24 +00:00
|
|
|
import qualified Command.UnregisterUrl
|
2024-03-05 19:04:35 +00:00
|
|
|
import qualified Command.ReregisterUrl
|
2015-07-02 21:44:25 +00:00
|
|
|
import qualified Command.SetKey
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.DropKey
|
2020-12-09 17:21:20 +00:00
|
|
|
import qualified Command.Transferrer
|
2012-08-24 21:23:58 +00:00
|
|
|
import qualified Command.TransferKey
|
2013-03-19 20:58:36 +00:00
|
|
|
import qualified Command.TransferKeys
|
2014-12-29 19:16:40 +00:00
|
|
|
import qualified Command.SetPresentKey
|
2015-03-20 15:22:27 +00:00
|
|
|
import qualified Command.ReadPresentKey
|
2015-03-20 15:44:46 +00:00
|
|
|
import qualified Command.CheckPresentKey
|
2012-02-16 20:36:35 +00:00
|
|
|
import qualified Command.ReKey
|
2016-02-25 20:11:13 +00:00
|
|
|
import qualified Command.Adjust
|
2015-07-12 13:25:43 +00:00
|
|
|
import qualified Command.MetaData
|
2014-02-18 21:38:23 +00:00
|
|
|
import qualified Command.View
|
2014-02-19 00:01:56 +00:00
|
|
|
import qualified Command.VAdd
|
add tip about metadata driven views (and more flexible view filtering)
While writing this documentation, I realized that there needed to be a way
to stay in a view like tag=* while adding a filter like tag=work that
applies to the same field.
So, there are really two ways a view can be refined. It can have a new
"field=explicitvalue" filter added to it, which does not change the
"shape" of the view, but narrows the files it shows.
Or, it can have a new view added, which adds another level of
subdirectories.
So, added a vfilter command, which takes explicit values to add to the
filter, and rejects changes that would change the shape of the view.
And, made vadd only accept changes that change the shape of the view.
And, changed the View data type slightly; now components that can match
multiple metadata values can be visible, or not visible.
This commit was sponsored by Stelian Iancu.
2014-02-19 19:10:18 +00:00
|
|
|
import qualified Command.VFilter
|
2014-02-18 21:38:23 +00:00
|
|
|
import qualified Command.VPop
|
2014-02-19 00:16:28 +00:00
|
|
|
import qualified Command.VCycle
|
2011-10-31 19:18:41 +00:00
|
|
|
import qualified Command.Reinject
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Fix
|
|
|
|
import qualified Command.Init
|
2011-03-03 21:21:00 +00:00
|
|
|
import qualified Command.Describe
|
2011-03-29 03:22:31 +00:00
|
|
|
import qualified Command.InitRemote
|
2013-04-26 22:22:44 +00:00
|
|
|
import qualified Command.EnableRemote
|
2023-04-18 19:30:49 +00:00
|
|
|
import qualified Command.ConfigRemote
|
2019-04-15 17:05:44 +00:00
|
|
|
import qualified Command.RenameRemote
|
2016-11-14 17:26:34 +00:00
|
|
|
import qualified Command.EnableTor
|
2017-03-30 23:32:58 +00:00
|
|
|
import qualified Command.Multicast
|
2015-07-10 20:26:23 +00:00
|
|
|
import qualified Command.Expire
|
2013-10-23 16:21:59 +00:00
|
|
|
import qualified Command.Repair
|
2015-07-10 20:05:56 +00:00
|
|
|
import qualified Command.Unused
|
2015-07-10 20:15:31 +00:00
|
|
|
import qualified Command.DropUnused
|
2012-05-02 18:59:05 +00:00
|
|
|
import qualified Command.AddUnused
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Unlock
|
|
|
|
import qualified Command.Lock
|
|
|
|
import qualified Command.PreCommit
|
2017-02-17 18:04:43 +00:00
|
|
|
import qualified Command.PostReceive
|
2021-05-14 14:59:48 +00:00
|
|
|
import qualified Command.FilterBranch
|
2015-07-10 16:47:35 +00:00
|
|
|
import qualified Command.Find
|
2023-01-17 18:42:29 +00:00
|
|
|
import qualified Command.FindKeys
|
2015-07-11 00:38:11 +00:00
|
|
|
import qualified Command.FindRef
|
2015-07-10 20:32:33 +00:00
|
|
|
import qualified Command.Whereis
|
2021-07-14 18:25:52 +00:00
|
|
|
import qualified Command.WhereUsed
|
2015-07-11 00:46:48 +00:00
|
|
|
import qualified Command.List
|
2015-07-13 14:44:51 +00:00
|
|
|
import qualified Command.Log
|
2011-06-22 22:46:45 +00:00
|
|
|
import qualified Command.Merge
|
2014-07-11 20:45:18 +00:00
|
|
|
import qualified Command.ResolveMerge
|
2015-07-11 14:41:52 +00:00
|
|
|
import qualified Command.Info
|
2015-07-11 14:42:46 +00:00
|
|
|
import qualified Command.Status
|
2017-12-28 15:46:39 +00:00
|
|
|
import qualified Command.Inprogress
|
2011-01-08 19:54:14 +00:00
|
|
|
import qualified Command.Migrate
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Uninit
|
2014-04-16 00:13:35 +00:00
|
|
|
import qualified Command.Reinit
|
2014-01-20 20:47:56 +00:00
|
|
|
import qualified Command.NumCopies
|
2021-01-06 18:11:08 +00:00
|
|
|
import qualified Command.MinCopies
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Trust
|
|
|
|
import qualified Command.Untrust
|
2011-01-26 19:37:16 +00:00
|
|
|
import qualified Command.Semitrust
|
2015-07-13 14:26:54 +00:00
|
|
|
import qualified Command.Dead
|
2012-10-01 19:12:04 +00:00
|
|
|
import qualified Command.Group
|
2013-10-28 18:08:38 +00:00
|
|
|
import qualified Command.Wanted
|
2015-02-06 19:12:42 +00:00
|
|
|
import qualified Command.GroupWanted
|
2015-04-18 20:04:25 +00:00
|
|
|
import qualified Command.Required
|
2013-10-13 19:40:38 +00:00
|
|
|
import qualified Command.Schedule
|
2012-10-01 19:12:04 +00:00
|
|
|
import qualified Command.Ungroup
|
2017-01-30 20:41:29 +00:00
|
|
|
import qualified Command.Config
|
2015-07-11 00:40:30 +00:00
|
|
|
import qualified Command.Vicfg
|
2011-12-10 00:27:22 +00:00
|
|
|
import qualified Command.Sync
|
git-annex assist
assist: New command, which is the same as git-annex sync but with
new files added and content transferred by default.
(Also this fixes another reversion in git-annex sync,
--commit --no-commit, and --message were not enabled, oops.)
See added comment for why git-annex assist does commit staged
changes elsewhere in the work tree, but only adds files under
the cwd.
Note that it does not support --no-commit, --no-push, --no-pull
like sync does. My thinking is, why should it? If you want that
level of control, use git commit, git annex push, git annex pull.
Sync only got those options because pull and push were not split
out.
Sponsored-by: k0ld on Patreon
2023-05-18 18:37:29 +00:00
|
|
|
import qualified Command.Assist
|
git-annex pull and push
Split out two new commands, git-annex pull and git-annex push. Those plus a
git commit are equivilant to git-annex sync.
In a sense, git-annex sync conflates 3 things, and it would have been
better to have push and pull from the beginning and not sync. Although
note that git-annex sync --content is faster than a pull followed by a
push, because it only has to walk the tree once, look at preferred
content once, etc. So there is some value in git-annex sync in speed, as
well as user convenience.
And it would be hard to split out pull and push from sync, as far as the
implementaton goes. The implementation inside sync was easy, just adjust
SyncOptions so it does the right thing.
Note that the new commands default to syncing content, unless
annex.synccontent is explicitly set to false. I'd like sync to also do
that, but that's a hard transition to make. As a start to that
transition, I added a note to git-annex-sync.mdwn that it may start to
do so in a future version of git-annex. But a real transition would
necessarily involve displaying warnings when sync is used without
--content, and time.
Sponsored-by: Kevin Mueller on Patreon
2023-05-16 20:37:30 +00:00
|
|
|
import qualified Command.Pull
|
|
|
|
import qualified Command.Push
|
added git-annex satisfy
This ended up having an interface like sync, rather than like get/copy/drop.
That let it be implemented in terms of sync, which took a lot less code.
Also, it lets it handle many of the edge cases that sync does, such as
getting files that are not visible in a --hide-missing branch, and sending
files to exporttree remotes.
As well as being easier to implement, `git-annex satisfy myremote` makes
sense as it satisfies the preferred content settings of the remote.
`git-annex satisfy somefile` does not form a sentence that makes sense. So
while -C can be a little bit annoying, it still makes sense to have this
syntax.
Note that, while I initially thought this would also satisfy numcopies, it
does not. Arguably it ought to. But, sync does not send files in order to
satisfy numcopies, it only sends files to satisfy preferred content. And
it's important that this transfer the same files as sync does, because
it will probably be used in a workflow where the user sometimes syncs and
sometimes satisfies, and does not expect satisfy to do things that sync
would not do.
(Also opened a new bug that also affects sync et all, not only this command.)
Sponsored-by: Nicholas Golder-Manning on Patreon
2023-06-29 19:34:53 +00:00
|
|
|
import qualified Command.Satisfy
|
2015-07-11 01:05:34 +00:00
|
|
|
import qualified Command.Mirror
|
2015-07-13 14:57:49 +00:00
|
|
|
import qualified Command.AddUrl
|
2015-07-13 15:06:41 +00:00
|
|
|
import qualified Command.ImportFeed
|
2013-04-22 21:18:53 +00:00
|
|
|
import qualified Command.RmUrl
|
2015-07-13 15:15:21 +00:00
|
|
|
import qualified Command.Import
|
2017-08-29 18:58:38 +00:00
|
|
|
import qualified Command.Export
|
2011-02-03 22:55:12 +00:00
|
|
|
import qualified Command.Map
|
2012-12-13 19:44:56 +00:00
|
|
|
import qualified Command.Direct
|
|
|
|
import qualified Command.Indirect
|
2011-03-16 19:48:26 +00:00
|
|
|
import qualified Command.Upgrade
|
2015-07-11 04:42:32 +00:00
|
|
|
import qualified Command.Forget
|
2023-08-22 18:51:06 +00:00
|
|
|
import qualified Command.OldKeys
|
2016-11-30 18:35:24 +00:00
|
|
|
import qualified Command.P2P
|
2014-11-12 19:41:15 +00:00
|
|
|
import qualified Command.Proxy
|
2014-11-24 20:14:01 +00:00
|
|
|
import qualified Command.DiffDriver
|
2015-12-04 17:02:56 +00:00
|
|
|
import qualified Command.Smudge
|
2021-11-04 19:02:36 +00:00
|
|
|
import qualified Command.FilterProcess
|
2022-09-23 20:29:28 +00:00
|
|
|
import qualified Command.Restage
|
2015-07-11 04:42:32 +00:00
|
|
|
import qualified Command.Undo
|
2024-06-14 18:21:50 +00:00
|
|
|
import qualified Command.UpdateCluster
|
2024-06-04 18:50:38 +00:00
|
|
|
import qualified Command.UpdateProxy
|
2011-03-19 18:33:24 +00:00
|
|
|
import qualified Command.Version
|
2016-11-29 19:41:28 +00:00
|
|
|
import qualified Command.RemoteDaemon
|
2012-06-26 13:15:47 +00:00
|
|
|
#ifdef WITH_ASSISTANT
|
2015-07-13 15:42:42 +00:00
|
|
|
import qualified Command.Watch
|
|
|
|
import qualified Command.Assistant
|
2012-07-26 03:13:01 +00:00
|
|
|
#ifdef WITH_WEBAPP
|
2015-07-13 15:53:42 +00:00
|
|
|
import qualified Command.WebApp
|
2012-07-26 03:13:01 +00:00
|
|
|
#endif
|
2012-06-26 13:15:47 +00:00
|
|
|
#endif
|
2014-08-01 19:09:49 +00:00
|
|
|
import qualified Command.Test
|
2013-05-23 23:00:46 +00:00
|
|
|
import qualified Command.FuzzTest
|
2015-07-11 04:42:32 +00:00
|
|
|
import qualified Command.TestRemote
|
2016-01-12 17:01:44 +00:00
|
|
|
import qualified Command.Benchmark
|
2011-01-07 00:26:57 +00:00
|
|
|
|
2019-01-04 17:43:53 +00:00
|
|
|
cmds :: Parser TestOptions -> TestRunner -> MkBenchmarkGenerator -> [Command]
|
2022-06-29 17:28:08 +00:00
|
|
|
cmds testoptparser testrunner mkbenchmarkgenerator = map addGitAnnexCommonOptions $
|
2015-07-10 20:32:33 +00:00
|
|
|
[ Command.Help.cmd
|
|
|
|
, Command.Add.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Get.cmd
|
|
|
|
, Command.Drop.cmd
|
|
|
|
, Command.Move.cmd
|
|
|
|
, Command.Copy.cmd
|
2015-07-09 19:23:14 +00:00
|
|
|
, Command.Fsck.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Unlock.cmd
|
2015-07-08 16:33:27 +00:00
|
|
|
, Command.Unlock.editcmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Lock.cmd
|
|
|
|
, Command.Sync.cmd
|
git-annex assist
assist: New command, which is the same as git-annex sync but with
new files added and content transferred by default.
(Also this fixes another reversion in git-annex sync,
--commit --no-commit, and --message were not enabled, oops.)
See added comment for why git-annex assist does commit staged
changes elsewhere in the work tree, but only adds files under
the cwd.
Note that it does not support --no-commit, --no-push, --no-pull
like sync does. My thinking is, why should it? If you want that
level of control, use git commit, git annex push, git annex pull.
Sync only got those options because pull and push were not split
out.
Sponsored-by: k0ld on Patreon
2023-05-18 18:37:29 +00:00
|
|
|
, Command.Assist.cmd
|
git-annex pull and push
Split out two new commands, git-annex pull and git-annex push. Those plus a
git commit are equivilant to git-annex sync.
In a sense, git-annex sync conflates 3 things, and it would have been
better to have push and pull from the beginning and not sync. Although
note that git-annex sync --content is faster than a pull followed by a
push, because it only has to walk the tree once, look at preferred
content once, etc. So there is some value in git-annex sync in speed, as
well as user convenience.
And it would be hard to split out pull and push from sync, as far as the
implementaton goes. The implementation inside sync was easy, just adjust
SyncOptions so it does the right thing.
Note that the new commands default to syncing content, unless
annex.synccontent is explicitly set to false. I'd like sync to also do
that, but that's a hard transition to make. As a start to that
transition, I added a note to git-annex-sync.mdwn that it may start to
do so in a future version of git-annex. But a real transition would
necessarily involve displaying warnings when sync is used without
--content, and time.
Sponsored-by: Kevin Mueller on Patreon
2023-05-16 20:37:30 +00:00
|
|
|
, Command.Pull.cmd
|
|
|
|
, Command.Push.cmd
|
added git-annex satisfy
This ended up having an interface like sync, rather than like get/copy/drop.
That let it be implemented in terms of sync, which took a lot less code.
Also, it lets it handle many of the edge cases that sync does, such as
getting files that are not visible in a --hide-missing branch, and sending
files to exporttree remotes.
As well as being easier to implement, `git-annex satisfy myremote` makes
sense as it satisfies the preferred content settings of the remote.
`git-annex satisfy somefile` does not form a sentence that makes sense. So
while -C can be a little bit annoying, it still makes sense to have this
syntax.
Note that, while I initially thought this would also satisfy numcopies, it
does not. Arguably it ought to. But, sync does not send files in order to
satisfy numcopies, it only sends files to satisfy preferred content. And
it's important that this transfer the same files as sync does, because
it will probably be used in a workflow where the user sometimes syncs and
sometimes satisfies, and does not expect satisfy to do things that sync
would not do.
(Also opened a new bug that also affects sync et all, not only this command.)
Sponsored-by: Nicholas Golder-Manning on Patreon
2023-06-29 19:34:53 +00:00
|
|
|
, Command.Satisfy.cmd
|
2015-07-11 01:05:34 +00:00
|
|
|
, Command.Mirror.cmd
|
2015-07-13 14:57:49 +00:00
|
|
|
, Command.AddUrl.cmd
|
2015-07-13 15:06:41 +00:00
|
|
|
, Command.ImportFeed.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.RmUrl.cmd
|
2015-07-13 15:15:21 +00:00
|
|
|
, Command.Import.cmd
|
2017-08-29 18:58:38 +00:00
|
|
|
, Command.Export.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Init.cmd
|
|
|
|
, Command.Describe.cmd
|
|
|
|
, Command.InitRemote.cmd
|
|
|
|
, Command.EnableRemote.cmd
|
2023-04-18 19:30:49 +00:00
|
|
|
, Command.ConfigRemote.cmd
|
2019-04-15 17:05:44 +00:00
|
|
|
, Command.RenameRemote.cmd
|
2016-11-14 17:26:34 +00:00
|
|
|
, Command.EnableTor.cmd
|
2017-03-30 23:32:58 +00:00
|
|
|
, Command.Multicast.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Reinject.cmd
|
|
|
|
, Command.Unannex.cmd
|
|
|
|
, Command.Uninit.cmd
|
|
|
|
, Command.Reinit.cmd
|
|
|
|
, Command.PreCommit.cmd
|
2017-02-17 18:04:43 +00:00
|
|
|
, Command.PostReceive.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.NumCopies.cmd
|
2021-01-06 18:11:08 +00:00
|
|
|
, Command.MinCopies.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Trust.cmd
|
|
|
|
, Command.Untrust.cmd
|
|
|
|
, Command.Semitrust.cmd
|
2015-07-13 14:26:54 +00:00
|
|
|
, Command.Dead.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Group.cmd
|
|
|
|
, Command.Wanted.cmd
|
2015-02-06 19:12:42 +00:00
|
|
|
, Command.GroupWanted.cmd
|
2015-04-18 20:04:25 +00:00
|
|
|
, Command.Required.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Schedule.cmd
|
|
|
|
, Command.Ungroup.cmd
|
2017-01-30 20:41:29 +00:00
|
|
|
, Command.Config.cmd
|
2015-07-11 00:40:30 +00:00
|
|
|
, Command.Vicfg.cmd
|
2015-07-12 00:43:45 +00:00
|
|
|
, Command.LookupKey.cmd
|
2016-04-20 17:49:42 +00:00
|
|
|
, Command.CalcKey.cmd
|
2015-07-12 00:43:45 +00:00
|
|
|
, Command.ContentLocation.cmd
|
|
|
|
, Command.ExamineKey.cmd
|
2016-01-25 20:16:18 +00:00
|
|
|
, Command.MatchExpression.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.FromKey.cmd
|
2015-03-15 18:55:44 +00:00
|
|
|
, Command.RegisterUrl.cmd
|
2021-03-01 18:28:24 +00:00
|
|
|
, Command.UnregisterUrl.cmd
|
2024-03-05 19:04:35 +00:00
|
|
|
, Command.ReregisterUrl.cmd
|
2015-07-02 21:44:25 +00:00
|
|
|
, Command.SetKey.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.DropKey.cmd
|
2020-12-09 17:21:20 +00:00
|
|
|
, Command.Transferrer.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.TransferKey.cmd
|
|
|
|
, Command.TransferKeys.cmd
|
2014-12-29 19:16:40 +00:00
|
|
|
, Command.SetPresentKey.cmd
|
2015-03-20 15:22:27 +00:00
|
|
|
, Command.ReadPresentKey.cmd
|
2015-03-20 15:44:46 +00:00
|
|
|
, Command.CheckPresentKey.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.ReKey.cmd
|
2016-02-25 20:11:13 +00:00
|
|
|
, Command.Adjust.cmd
|
2015-07-12 13:25:43 +00:00
|
|
|
, Command.MetaData.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.View.cmd
|
|
|
|
, Command.VAdd.cmd
|
|
|
|
, Command.VFilter.cmd
|
|
|
|
, Command.VPop.cmd
|
|
|
|
, Command.VCycle.cmd
|
|
|
|
, Command.Fix.cmd
|
2015-07-10 20:26:23 +00:00
|
|
|
, Command.Expire.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Repair.cmd
|
2015-07-10 20:05:56 +00:00
|
|
|
, Command.Unused.cmd
|
2015-07-10 20:15:31 +00:00
|
|
|
, Command.DropUnused.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.AddUnused.cmd
|
2021-05-14 14:59:48 +00:00
|
|
|
, Command.FilterBranch.cmd
|
2015-07-10 16:47:35 +00:00
|
|
|
, Command.Find.cmd
|
2023-01-17 18:42:29 +00:00
|
|
|
, Command.FindKeys.cmd
|
2015-07-11 00:38:11 +00:00
|
|
|
, Command.FindRef.cmd
|
2015-07-10 20:32:33 +00:00
|
|
|
, Command.Whereis.cmd
|
2021-07-14 18:25:52 +00:00
|
|
|
, Command.WhereUsed.cmd
|
2015-07-11 00:46:48 +00:00
|
|
|
, Command.List.cmd
|
2015-07-13 14:44:51 +00:00
|
|
|
, Command.Log.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Merge.cmd
|
|
|
|
, Command.ResolveMerge.cmd
|
2015-07-11 14:41:52 +00:00
|
|
|
, Command.Info.cmd
|
2015-07-11 14:42:46 +00:00
|
|
|
, Command.Status.cmd
|
2017-12-28 15:46:39 +00:00
|
|
|
, Command.Inprogress.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Migrate.cmd
|
|
|
|
, Command.Map.cmd
|
|
|
|
, Command.Direct.cmd
|
|
|
|
, Command.Indirect.cmd
|
|
|
|
, Command.Upgrade.cmd
|
2015-07-11 04:42:32 +00:00
|
|
|
, Command.Forget.cmd
|
2023-08-22 18:51:06 +00:00
|
|
|
, Command.OldKeys.cmd
|
2016-11-30 18:35:24 +00:00
|
|
|
, Command.P2P.cmd
|
2014-11-12 19:41:15 +00:00
|
|
|
, Command.Proxy.cmd
|
2014-11-24 20:14:01 +00:00
|
|
|
, Command.DiffDriver.cmd
|
2015-12-04 17:02:56 +00:00
|
|
|
, Command.Smudge.cmd
|
2021-11-04 19:02:36 +00:00
|
|
|
, Command.FilterProcess.cmd
|
2022-09-23 20:29:28 +00:00
|
|
|
, Command.Restage.cmd
|
2015-07-11 04:42:32 +00:00
|
|
|
, Command.Undo.cmd
|
2024-06-14 18:21:50 +00:00
|
|
|
, Command.UpdateCluster.cmd
|
2024-06-04 18:50:38 +00:00
|
|
|
, Command.UpdateProxy.cmd
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.Version.cmd
|
2016-11-29 19:41:28 +00:00
|
|
|
, Command.RemoteDaemon.cmd
|
2012-06-26 13:15:47 +00:00
|
|
|
#ifdef WITH_ASSISTANT
|
2015-07-13 15:42:42 +00:00
|
|
|
, Command.Watch.cmd
|
|
|
|
, Command.Assistant.cmd
|
2012-07-26 03:13:01 +00:00
|
|
|
#ifdef WITH_WEBAPP
|
2015-07-13 15:53:42 +00:00
|
|
|
, Command.WebApp.cmd
|
2012-11-06 04:52:35 +00:00
|
|
|
#endif
|
2012-06-26 13:15:47 +00:00
|
|
|
#endif
|
2015-07-13 17:19:20 +00:00
|
|
|
, Command.Test.cmd testoptparser testrunner
|
2014-10-14 18:20:10 +00:00
|
|
|
, Command.FuzzTest.cmd
|
2015-07-11 04:42:32 +00:00
|
|
|
, Command.TestRemote.cmd
|
2019-01-04 17:43:53 +00:00
|
|
|
, Command.Benchmark.cmd $
|
|
|
|
mkbenchmarkgenerator $ cmds testoptparser testrunner (\_ _ -> return noop)
|
2011-01-07 00:26:57 +00:00
|
|
|
]
|
|
|
|
|
2022-06-29 17:28:08 +00:00
|
|
|
addGitAnnexCommonOptions :: Command -> Command
|
|
|
|
addGitAnnexCommonOptions c = c { cmdannexoptions = gitAnnexCommonOptions ++ cmdannexoptions c }
|
2021-02-02 19:55:45 +00:00
|
|
|
|
2019-01-04 17:43:53 +00:00
|
|
|
run :: Parser TestOptions -> TestRunner -> MkBenchmarkGenerator -> [String] -> IO ()
|
|
|
|
run testoptparser testrunner mkbenchmarkgenerator args = go envmodes
|
2014-04-29 22:08:10 +00:00
|
|
|
where
|
addon commands
Seems only fair, that, like git runs git-annex, git-annex runs
git-annex-foo.
Implementation relies on O.forwardOptions, so that any options are passed
through to the addon program. Note that this includes options before the
subcommand, eg: git-annex -cx=y foo
Unfortunately, git-annex eats the --help/-h options.
This is because it uses O.hsubparser, which injects that option into each
subcommand. Seems like this should be possible to avoid somehow, to let
commands display their own --help, instead of the dummy one git-annex
displays.
The two step searching mirrors how git works, it makes finding
git-annex-foo fast when "git annex foo" is run, but will also support fuzzy
matching, once findAllAddonCommands gets implemented.
This commit was sponsored by Dr. Land Raider on Patreon.
2021-02-02 20:32:25 +00:00
|
|
|
go [] = dispatch True True args
|
2019-01-04 17:43:53 +00:00
|
|
|
(cmds testoptparser testrunner mkbenchmarkgenerator)
|
2021-02-02 19:55:45 +00:00
|
|
|
[] Git.CurrentRepo.get
|
2015-07-09 15:49:52 +00:00
|
|
|
"git-annex"
|
|
|
|
"manage files with git, without checking their contents in"
|
2014-04-29 22:08:10 +00:00
|
|
|
go ((v, a):rest) = maybe (go rest) a =<< getEnv v
|
|
|
|
envmodes =
|
2015-02-12 20:12:32 +00:00
|
|
|
[ (sshOptionsEnv, runSshOptions args)
|
2014-04-29 22:08:10 +00:00
|
|
|
, (sshAskPassEnv, runSshAskPass)
|
2017-03-30 23:32:58 +00:00
|
|
|
, (multicastReceiveEnv, runMulticastReceive args)
|
2014-04-29 22:08:10 +00:00
|
|
|
]
|