summaryrefslogtreecommitdiff
path: root/Git/Remote.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Git/Remote.hs')
-rw-r--r--Git/Remote.hs19
1 files changed, 18 insertions, 1 deletions
diff --git a/Git/Remote.hs b/Git/Remote.hs
index 5640e9ff2..e853e53cb 100644
--- a/Git/Remote.hs
+++ b/Git/Remote.hs
@@ -8,15 +8,21 @@
module Git.Remote where
import Common
+import Git
+import qualified Git.Command
+import qualified Git.BuildVersion
+
import Data.Char
+type RemoteName = String
+
{- Construct a legal git remote name out of an arbitrary input string.
-
- There seems to be no formal definition of this in the git source,
- just some ad-hoc checks, and some other things that fail with certian
- types of names (like ones starting with '-').
-}
-makeLegalName :: String -> String
+makeLegalName :: String -> RemoteName
makeLegalName s = case filter legal $ replace "/" "_" s of
-- it can't be empty
[] -> "unnamed"
@@ -31,3 +37,14 @@ makeLegalName s = case filter legal $ replace "/" "_" s of
legal '_' = True
legal '.' = True
legal c = isAlphaNum c
+
+remove :: RemoteName -> Repo -> IO ()
+remove remotename = Git.Command.run
+ [ Param "remote"
+ -- name of this subcommand changed
+ , Param $
+ if Git.BuildVersion.older "1.8.0"
+ then "rm"
+ else "remove"
+ , Param remotename
+ ]