2011-01-07 00:26:57 +00:00
|
|
|
{- git-annex main program
|
|
|
|
-
|
|
|
|
- Copyright 2010 Joey Hess <joey@kitenet.net>
|
|
|
|
-
|
|
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
|
|
-}
|
|
|
|
|
|
|
|
module GitAnnex where
|
|
|
|
|
|
|
|
import System.Console.GetOpt
|
|
|
|
|
2011-01-07 06:15:10 +00:00
|
|
|
import qualified GitRepo as Git
|
|
|
|
import CmdLine
|
2011-01-07 00:26:57 +00:00
|
|
|
import Command
|
|
|
|
import Options
|
2011-06-01 20:49:17 +00:00
|
|
|
import Utility
|
2011-06-01 21:49:37 +00:00
|
|
|
import TrustLevel
|
2011-01-26 04:17:38 +00:00
|
|
|
import qualified Annex
|
2011-06-01 23:10:38 +00:00
|
|
|
import qualified Remote
|
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
|
|
|
|
import qualified Command.FromKey
|
|
|
|
import qualified Command.DropKey
|
|
|
|
import qualified Command.SetKey
|
|
|
|
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
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Fsck
|
|
|
|
import qualified Command.Unused
|
|
|
|
import qualified Command.DropUnused
|
|
|
|
import qualified Command.Unlock
|
|
|
|
import qualified Command.Lock
|
|
|
|
import qualified Command.PreCommit
|
|
|
|
import qualified Command.Find
|
2011-03-05 21:23:55 +00:00
|
|
|
import qualified Command.Whereis
|
2011-05-17 01:18:34 +00:00
|
|
|
import qualified Command.Status
|
2011-01-08 19:54:14 +00:00
|
|
|
import qualified Command.Migrate
|
2011-01-07 00:26:57 +00:00
|
|
|
import qualified Command.Uninit
|
|
|
|
import qualified Command.Trust
|
|
|
|
import qualified Command.Untrust
|
2011-01-26 19:37:16 +00:00
|
|
|
import qualified Command.Semitrust
|
2011-02-03 22:55:12 +00:00
|
|
|
import qualified Command.Map
|
2011-03-16 19:48:26 +00:00
|
|
|
import qualified Command.Upgrade
|
2011-03-19 18:33:24 +00:00
|
|
|
import qualified Command.Version
|
2011-01-07 00:26:57 +00:00
|
|
|
|
|
|
|
cmds :: [Command]
|
|
|
|
cmds = concat
|
|
|
|
[ Command.Add.command
|
|
|
|
, Command.Get.command
|
|
|
|
, Command.Drop.command
|
|
|
|
, Command.Move.command
|
|
|
|
, Command.Copy.command
|
|
|
|
, Command.Unlock.command
|
|
|
|
, Command.Lock.command
|
|
|
|
, Command.Init.command
|
2011-03-03 21:21:00 +00:00
|
|
|
, Command.Describe.command
|
2011-03-29 03:22:31 +00:00
|
|
|
, Command.InitRemote.command
|
2011-01-07 00:26:57 +00:00
|
|
|
, Command.Unannex.command
|
|
|
|
, Command.Uninit.command
|
|
|
|
, Command.PreCommit.command
|
|
|
|
, Command.Trust.command
|
|
|
|
, Command.Untrust.command
|
2011-01-26 19:37:16 +00:00
|
|
|
, Command.Semitrust.command
|
2011-01-07 00:26:57 +00:00
|
|
|
, Command.FromKey.command
|
|
|
|
, Command.DropKey.command
|
|
|
|
, Command.SetKey.command
|
|
|
|
, Command.Fix.command
|
|
|
|
, Command.Fsck.command
|
|
|
|
, Command.Unused.command
|
|
|
|
, Command.DropUnused.command
|
|
|
|
, Command.Find.command
|
2011-03-05 21:23:55 +00:00
|
|
|
, Command.Whereis.command
|
2011-05-17 01:18:34 +00:00
|
|
|
, Command.Status.command
|
2011-01-08 19:54:14 +00:00
|
|
|
, Command.Migrate.command
|
2011-02-03 22:55:12 +00:00
|
|
|
, Command.Map.command
|
2011-03-16 19:48:26 +00:00
|
|
|
, Command.Upgrade.command
|
2011-03-19 18:33:24 +00:00
|
|
|
, Command.Version.command
|
2011-01-07 00:26:57 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
options :: [Option]
|
|
|
|
options = commonOptions ++
|
2011-06-01 21:49:37 +00:00
|
|
|
[ Option ['k'] ["key"] (ReqArg setkey paramKey)
|
|
|
|
"specify a key to use"
|
|
|
|
, Option ['t'] ["to"] (ReqArg setto paramRemote)
|
2011-01-07 00:26:57 +00:00
|
|
|
"specify to where to transfer content"
|
2011-01-26 04:17:38 +00:00
|
|
|
, Option ['f'] ["from"] (ReqArg setfrom paramRemote)
|
2011-01-07 00:26:57 +00:00
|
|
|
"specify from where to transfer content"
|
2011-01-26 04:17:38 +00:00
|
|
|
, Option ['x'] ["exclude"] (ReqArg addexclude paramGlob)
|
2011-01-07 00:26:57 +00:00
|
|
|
"skip files matching the glob pattern"
|
2011-06-01 20:49:17 +00:00
|
|
|
, Option ['N'] ["numcopies"] (ReqArg setnumcopies paramNumber)
|
|
|
|
"override default number of copies"
|
2011-06-01 21:49:37 +00:00
|
|
|
, Option [] ["trust"] (ReqArg (settrust Trusted) paramRemote)
|
|
|
|
"override trust setting"
|
|
|
|
, Option [] ["semitrust"] (ReqArg (settrust SemiTrusted) paramRemote)
|
|
|
|
"override trust setting back to default value"
|
|
|
|
, Option [] ["untrust"] (ReqArg (settrust UnTrusted) paramRemote)
|
|
|
|
"override trust setting to untrusted"
|
2011-01-07 00:26:57 +00:00
|
|
|
]
|
2011-01-26 04:17:38 +00:00
|
|
|
where
|
|
|
|
setto v = Annex.changeState $ \s -> s { Annex.toremote = Just v }
|
|
|
|
setfrom v = Annex.changeState $ \s -> s { Annex.fromremote = Just v }
|
2011-06-01 23:10:38 +00:00
|
|
|
addexclude v = Annex.changeState $ \s -> s { Annex.exclude = v:Annex.exclude s }
|
2011-06-01 20:49:17 +00:00
|
|
|
setnumcopies v = Annex.changeState $ \s -> s {Annex.forcenumcopies = readMaybe v }
|
|
|
|
setkey v = Annex.changeState $ \s -> s { Annex.defaultkey = Just v }
|
2011-06-01 23:10:38 +00:00
|
|
|
settrust t v = do
|
|
|
|
r <- Remote.nameToUUID v
|
|
|
|
Annex.changeState $ \s -> s { Annex.forcetrust = (r, t):Annex.forcetrust s }
|
2011-01-07 00:26:57 +00:00
|
|
|
|
|
|
|
header :: String
|
|
|
|
header = "Usage: git-annex command [option ..]"
|
2011-01-07 06:15:10 +00:00
|
|
|
|
|
|
|
run :: [String] -> IO ()
|
|
|
|
run args = do
|
|
|
|
gitrepo <- Git.repoFromCwd
|
|
|
|
dispatch gitrepo args cmds options header
|