@@ -19,6 +19,7 @@ import IRTS.System (getIdrisLibDir)
1919import Control.Applicative ((<$>))
2020import Control.Monad.State.Strict
2121import Data.List (isSuffixOf)
22+import Data.Char (isLower, isDigit)
2223import System.Directory
2324import System.FilePath
2425
@@ -31,8 +32,14 @@ newtype PkgName = PkgName { unPkgName :: String }
3132unInitializedPkgName :: PkgName
3233unInitializedPkgName = PkgName ""
3334
34−pkgName :: String -> PkgName
35−pkgName = PkgName
35+pkgName :: String -> Either String PkgName
36+pkgName "" = Left "empty package name"
37+pkgName s@(f:l)
38+ | not $ isLower f =
39+ Left "package name need to start by a lower alpha"
40+ | not $ all (\c -> isLower c || isDigit c || c `elem` "-_") l =
41+ Left "package name need to contain only lower alpha, digits, and -_"
42+ | otherwise = Right $ PkgName s
3643
3744-- | Get the index file name for a package name
3845pkgIndex :: PkgName -> FilePath