webapp: Generate better git remote names.
Wrote a better git remote name sanitizer. Git blows up on lots of weird stuff, especially if it starts the remote name, but I managed to get some common punctuation working.
This commit is contained in:
parent
c03d9b2310
commit
39e82b1af8
4 changed files with 40 additions and 10 deletions
33
Git/Remote.hs
Normal file
33
Git/Remote.hs
Normal file
|
@ -0,0 +1,33 @@
|
|||
{- git remote stuff
|
||||
-
|
||||
- Copyright 2012 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module Git.Remote where
|
||||
|
||||
import Common
|
||||
import Data.Char
|
||||
|
||||
{- 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 s = case filter legal $ replace "/" "_" s of
|
||||
-- it can't be empty
|
||||
[] -> "unnamed"
|
||||
-- it can't start with / or - or .
|
||||
'.':s' -> makeLegalName s'
|
||||
'/':s' -> makeLegalName s'
|
||||
'-':s' -> makeLegalName s'
|
||||
s' -> s'
|
||||
where
|
||||
{- Only alphanumerics, and a few common bits of punctuation common
|
||||
- in hostnames. -}
|
||||
legal '_' = True
|
||||
legal '.' = True
|
||||
legal c = isAlphaNum c
|
Loading…
Add table
Add a link
Reference in a new issue