diff --git a/src/Data/Carthage/Cartfile.hs b/src/Data/Carthage/Cartfile.hs index b710e85..a99d7a0 100644 --- a/src/Data/Carthage/Cartfile.hs +++ b/src/Data/Carthage/Cartfile.hs @@ -24,7 +24,7 @@ newtype Location = Location { unLocation :: String } deriving (Eq, Show, Ord) -data RepoHosting = GitHub | Git +data RepoHosting = GitHub | Git | Binary deriving (Eq, Show) data CartfileEntry = CartfileEntry { hosting :: RepoHosting @@ -46,8 +46,11 @@ parseGitHub = Parsec.string "github" >> Parsec.many1 Parsec.space >> pure GitHub parseGit :: Parsec.Parsec String () RepoHosting parseGit = Parsec.string "git" >> Parsec.many1 Parsec.space >> pure Git +parseBinary :: Parsec.Parsec String () RepoHosting +parseBinary = Parsec.string "binary" >> Parsec.many1 Parsec.space >> pure Binary + repoHosting :: Parsec.Parsec String () RepoHosting -repoHosting = Parsec.try parseGit <|> parseGitHub +repoHosting = Parsec.try parseGit <|> parseGitHub <|> parseBinary quotedContent :: Parsec.Parsec String () String quotedContent = Parsec.char '"' *> Parsec.parseUnquotedString <* Parsec.char '"' diff --git a/src/Utils.hs b/src/Utils.hs index 2a9faf2..8c6d65b 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -164,6 +164,7 @@ filterCartfileEntriesByGitRepoNames repoNames cartfileEntries = [c | c <- cartfi gitRepoNameFromCartfileEntry :: CartfileEntry -> GitRepoName gitRepoNameFromCartfileEntry (CartfileEntry GitHub (Location l) _) = GitRepoName . T.unpack . last . splitWithSeparator '/' . T.pack $ l gitRepoNameFromCartfileEntry (CartfileEntry Git (Location l) _) = GitRepoName . T.unpack . T.replace ".git" "" . last . splitWithSeparator '/' . T.pack $ l +gitRepoNameFromCartfileEntry (CartfileEntry Binary (Location l) _) = GitRepoName . T.unpack . T.replace ".json" "" . last . splitWithSeparator '/' . T.pack $ l @@ -317,14 +318,10 @@ deriveFrameworkNamesAndVersion romeMap = concatMap (deriveFrameworkNameAndVersio -- | `FrameworkVersion` by attaching the `Version` information from the -- | `FrameworkName` in the `CartfileEntry`. deriveFrameworkNameAndVersion :: RepositoryMap -> CartfileEntry -> [FrameworkVersion] -deriveFrameworkNameAndVersion romeMap cfe@(CartfileEntry GitHub (Location _) v) = map (`FrameworkVersion` v) $ - fromMaybe [FrameworkName gitHubRepositoryName] (M.lookup (gitRepoNameFromCartfileEntry cfe) romeMap) +deriveFrameworkNameAndVersion romeMap cfe@(CartfileEntry _ _ v) = map (`FrameworkVersion` v) $ + fromMaybe [FrameworkName repositoryName] (M.lookup (gitRepoNameFromCartfileEntry cfe) romeMap) where - gitHubRepositoryName = unGitRepoName $ gitRepoNameFromCartfileEntry cfe -deriveFrameworkNameAndVersion romeMap cfe@(CartfileEntry Git (Location _) v) = map (`FrameworkVersion` v) $ - fromMaybe [FrameworkName gitRepositoryName] (M.lookup (gitRepoNameFromCartfileEntry cfe) romeMap) - where - gitRepositoryName = unGitRepoName $ gitRepoNameFromCartfileEntry cfe + repositoryName = unGitRepoName $ gitRepoNameFromCartfileEntry cfe