summaryrefslogtreecommitdiff
path: root/Command/ConfigList.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Command/ConfigList.hs')
-rw-r--r--Command/ConfigList.hs46
1 files changed, 46 insertions, 0 deletions
diff --git a/Command/ConfigList.hs b/Command/ConfigList.hs
new file mode 100644
index 000000000..219685c21
--- /dev/null
+++ b/Command/ConfigList.hs
@@ -0,0 +1,46 @@
+{- git-annex command
+ -
+ - Copyright 2010-2014 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Command.ConfigList where
+
+import Common.Annex
+import Command
+import Annex.UUID
+import Annex.Init
+import qualified Annex.Branch
+import qualified Git.Config
+import Remote.GCrypt (coreGCryptId)
+
+def :: [Command]
+def = [noCommit $ command "configlist" paramNothing seek
+ SectionPlumbing "outputs relevant git configuration"]
+
+seek :: CommandSeek
+seek = withNothing start
+
+start :: CommandStart
+start = do
+ u <- findOrGenUUID
+ showConfig "annex.uuid" $ fromUUID u
+ showConfig coreGCryptId =<< fromRepo (Git.Config.get coreGCryptId "")
+ stop
+ where
+ showConfig k v = liftIO $ putStrLn $ k ++ "=" ++ v
+
+{- The repository may not yet have a UUID; automatically initialize it
+ - when there's a git-annex branch available. -}
+findOrGenUUID :: Annex UUID
+findOrGenUUID = do
+ u <- getUUID
+ if u /= NoUUID
+ then return u
+ else ifM Annex.Branch.hasSibling
+ ( do
+ initialize Nothing
+ getUUID
+ , return NoUUID
+ )