module Rosetta where import Data.List (find) fromExtension :: String -> Maybe LanguageTag fromExtension :: String -> Maybe LanguageTag fromExtension String ext = (LanguageTag -> Bool) -> [LanguageTag] -> Maybe LanguageTag forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a find (\LanguageTag t -> LanguageTag -> String languageExtension LanguageTag t String -> String -> Bool forall a. Eq a => a -> a -> Bool == String ext) [LanguageTag] languageTags fromTool :: String -> Maybe ProjectTag fromTool :: String -> Maybe ProjectTag fromTool String tool = (ProjectTag -> Bool) -> [ProjectTag] -> Maybe ProjectTag forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a find (\ProjectTag t -> ProjectTag -> String projectTool ProjectTag t String -> String -> Bool forall a. Eq a => a -> a -> Bool == String tool) [ProjectTag] projectTags data LanguageTag = CS | FS | HS | JV | NX | RS | SC deriving (LanguageTag LanguageTag -> LanguageTag -> Bounded LanguageTag forall a. a -> a -> Bounded a maxBound :: LanguageTag $cmaxBound :: LanguageTag minBound :: LanguageTag $cminBound :: LanguageTag Bounded, Int -> LanguageTag LanguageTag -> Int LanguageTag -> [LanguageTag] LanguageTag -> LanguageTag LanguageTag -> LanguageTag -> [LanguageTag] LanguageTag -> LanguageTag -> LanguageTag -> [LanguageTag] (LanguageTag -> LanguageTag) -> (LanguageTag -> LanguageTag) -> (Int -> LanguageTag) -> (LanguageTag -> Int) -> (LanguageTag -> [LanguageTag]) -> (LanguageTag -> LanguageTag -> [LanguageTag]) -> (LanguageTag -> LanguageTag -> [LanguageTag]) -> (LanguageTag -> LanguageTag -> LanguageTag -> [LanguageTag]) -> Enum LanguageTag forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a enumFromThenTo :: LanguageTag -> LanguageTag -> LanguageTag -> [LanguageTag] $cenumFromThenTo :: LanguageTag -> LanguageTag -> LanguageTag -> [LanguageTag] enumFromTo :: LanguageTag -> LanguageTag -> [LanguageTag] $cenumFromTo :: LanguageTag -> LanguageTag -> [LanguageTag] enumFromThen :: LanguageTag -> LanguageTag -> [LanguageTag] $cenumFromThen :: LanguageTag -> LanguageTag -> [LanguageTag] enumFrom :: LanguageTag -> [LanguageTag] $cenumFrom :: LanguageTag -> [LanguageTag] fromEnum :: LanguageTag -> Int $cfromEnum :: LanguageTag -> Int toEnum :: Int -> LanguageTag $ctoEnum :: Int -> LanguageTag pred :: LanguageTag -> LanguageTag $cpred :: LanguageTag -> LanguageTag succ :: LanguageTag -> LanguageTag $csucc :: LanguageTag -> LanguageTag Enum, LanguageTag -> LanguageTag -> Bool (LanguageTag -> LanguageTag -> Bool) -> (LanguageTag -> LanguageTag -> Bool) -> Eq LanguageTag forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: LanguageTag -> LanguageTag -> Bool $c/= :: LanguageTag -> LanguageTag -> Bool == :: LanguageTag -> LanguageTag -> Bool $c== :: LanguageTag -> LanguageTag -> Bool Eq, Eq LanguageTag Eq LanguageTag -> (LanguageTag -> LanguageTag -> Ordering) -> (LanguageTag -> LanguageTag -> Bool) -> (LanguageTag -> LanguageTag -> Bool) -> (LanguageTag -> LanguageTag -> Bool) -> (LanguageTag -> LanguageTag -> Bool) -> (LanguageTag -> LanguageTag -> LanguageTag) -> (LanguageTag -> LanguageTag -> LanguageTag) -> Ord LanguageTag LanguageTag -> LanguageTag -> Bool LanguageTag -> LanguageTag -> Ordering LanguageTag -> LanguageTag -> LanguageTag forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: LanguageTag -> LanguageTag -> LanguageTag $cmin :: LanguageTag -> LanguageTag -> LanguageTag max :: LanguageTag -> LanguageTag -> LanguageTag $cmax :: LanguageTag -> LanguageTag -> LanguageTag >= :: LanguageTag -> LanguageTag -> Bool $c>= :: LanguageTag -> LanguageTag -> Bool > :: LanguageTag -> LanguageTag -> Bool $c> :: LanguageTag -> LanguageTag -> Bool <= :: LanguageTag -> LanguageTag -> Bool $c<= :: LanguageTag -> LanguageTag -> Bool < :: LanguageTag -> LanguageTag -> Bool $c< :: LanguageTag -> LanguageTag -> Bool compare :: LanguageTag -> LanguageTag -> Ordering $ccompare :: LanguageTag -> LanguageTag -> Ordering $cp1Ord :: Eq LanguageTag Ord) languageExtension :: LanguageTag -> String languageExtension :: LanguageTag -> String languageExtension LanguageTag CS = String "cs" languageExtension LanguageTag FS = String "fs" languageExtension LanguageTag HS = String "hs" languageExtension LanguageTag JV = String "java" languageExtension LanguageTag NX = String "nix" languageExtension LanguageTag RS = String "rs" languageExtension LanguageTag SC = String "scala" languageTags :: [LanguageTag] languageTags :: [LanguageTag] languageTags = [LanguageTag forall a. Bounded a => a minBound ..] languageLabel :: LanguageTag -> String languageLabel :: LanguageTag -> String languageLabel LanguageTag CS = String "csharp" languageLabel LanguageTag FS = String "fsharp" languageLabel LanguageTag HS = String "haskell" languageLabel LanguageTag JV = String "java" languageLabel LanguageTag NX = String "nix" languageLabel LanguageTag RS = String "rust" languageLabel LanguageTag SC = String "scala" data ProjectTag = CABAL | CARGO | DOTNET | NIX | SBT | STACK deriving (ProjectTag ProjectTag -> ProjectTag -> Bounded ProjectTag forall a. a -> a -> Bounded a maxBound :: ProjectTag $cmaxBound :: ProjectTag minBound :: ProjectTag $cminBound :: ProjectTag Bounded, Int -> ProjectTag ProjectTag -> Int ProjectTag -> [ProjectTag] ProjectTag -> ProjectTag ProjectTag -> ProjectTag -> [ProjectTag] ProjectTag -> ProjectTag -> ProjectTag -> [ProjectTag] (ProjectTag -> ProjectTag) -> (ProjectTag -> ProjectTag) -> (Int -> ProjectTag) -> (ProjectTag -> Int) -> (ProjectTag -> [ProjectTag]) -> (ProjectTag -> ProjectTag -> [ProjectTag]) -> (ProjectTag -> ProjectTag -> [ProjectTag]) -> (ProjectTag -> ProjectTag -> ProjectTag -> [ProjectTag]) -> Enum ProjectTag forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a enumFromThenTo :: ProjectTag -> ProjectTag -> ProjectTag -> [ProjectTag] $cenumFromThenTo :: ProjectTag -> ProjectTag -> ProjectTag -> [ProjectTag] enumFromTo :: ProjectTag -> ProjectTag -> [ProjectTag] $cenumFromTo :: ProjectTag -> ProjectTag -> [ProjectTag] enumFromThen :: ProjectTag -> ProjectTag -> [ProjectTag] $cenumFromThen :: ProjectTag -> ProjectTag -> [ProjectTag] enumFrom :: ProjectTag -> [ProjectTag] $cenumFrom :: ProjectTag -> [ProjectTag] fromEnum :: ProjectTag -> Int $cfromEnum :: ProjectTag -> Int toEnum :: Int -> ProjectTag $ctoEnum :: Int -> ProjectTag pred :: ProjectTag -> ProjectTag $cpred :: ProjectTag -> ProjectTag succ :: ProjectTag -> ProjectTag $csucc :: ProjectTag -> ProjectTag Enum, ProjectTag -> ProjectTag -> Bool (ProjectTag -> ProjectTag -> Bool) -> (ProjectTag -> ProjectTag -> Bool) -> Eq ProjectTag forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ProjectTag -> ProjectTag -> Bool $c/= :: ProjectTag -> ProjectTag -> Bool == :: ProjectTag -> ProjectTag -> Bool $c== :: ProjectTag -> ProjectTag -> Bool Eq, Eq ProjectTag Eq ProjectTag -> (ProjectTag -> ProjectTag -> Ordering) -> (ProjectTag -> ProjectTag -> Bool) -> (ProjectTag -> ProjectTag -> Bool) -> (ProjectTag -> ProjectTag -> Bool) -> (ProjectTag -> ProjectTag -> Bool) -> (ProjectTag -> ProjectTag -> ProjectTag) -> (ProjectTag -> ProjectTag -> ProjectTag) -> Ord ProjectTag ProjectTag -> ProjectTag -> Bool ProjectTag -> ProjectTag -> Ordering ProjectTag -> ProjectTag -> ProjectTag forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: ProjectTag -> ProjectTag -> ProjectTag $cmin :: ProjectTag -> ProjectTag -> ProjectTag max :: ProjectTag -> ProjectTag -> ProjectTag $cmax :: ProjectTag -> ProjectTag -> ProjectTag >= :: ProjectTag -> ProjectTag -> Bool $c>= :: ProjectTag -> ProjectTag -> Bool > :: ProjectTag -> ProjectTag -> Bool $c> :: ProjectTag -> ProjectTag -> Bool <= :: ProjectTag -> ProjectTag -> Bool $c<= :: ProjectTag -> ProjectTag -> Bool < :: ProjectTag -> ProjectTag -> Bool $c< :: ProjectTag -> ProjectTag -> Bool compare :: ProjectTag -> ProjectTag -> Ordering $ccompare :: ProjectTag -> ProjectTag -> Ordering $cp1Ord :: Eq ProjectTag Ord) projectTags :: [ProjectTag] projectTags :: [ProjectTag] projectTags = [ProjectTag forall a. Bounded a => a minBound ..] projectLanguages :: ProjectTag -> [LanguageTag] projectLanguages :: ProjectTag -> [LanguageTag] projectLanguages ProjectTag CABAL = [LanguageTag HS] projectLanguages ProjectTag CARGO = [LanguageTag RS] projectLanguages ProjectTag DOTNET = [LanguageTag CS, LanguageTag FS] projectLanguages ProjectTag NIX = [LanguageTag NX] projectLanguages ProjectTag SBT = [LanguageTag JV, LanguageTag SC] projectLanguages ProjectTag STACK = [LanguageTag HS] projectTool :: ProjectTag -> String projectTool :: ProjectTag -> String projectTool ProjectTag CABAL = String "cabal" projectTool ProjectTag CARGO = String "cargo" projectTool ProjectTag DOTNET = String "dotnet" projectTool ProjectTag NIX = String "nix-shell" projectTool ProjectTag SBT = String "sbt" projectTool ProjectTag STACK = String "stack" projectToolBuildArgs :: ProjectTag -> [String] projectToolBuildArgs :: ProjectTag -> [String] projectToolBuildArgs ProjectTag NIX = [String "."] projectToolBuildArgs ProjectTag SBT = [String "compile"] projectToolBuildArgs ProjectTag _ = [String "build"]