packages feed

elm-make-0.1: src/Path.hs

{-# LANGUAGE FlexibleContexts #-}
module Path where

import qualified Data.List as List
import System.FilePath ((</>), (<.>))

import Elm.Compiler.Module as Module
import Elm.Package.Name as Pkg
import Elm.Package.Version as V
import TheMasterPlan (ModuleID(ModuleID), Location(Location))


toInterface :: FilePath -> ModuleID -> FilePath
toInterface root (ModuleID (Module.Name names) package) =
    root </> inPackage package (List.intercalate "-" names <.> "elmi")


toObjectFile :: FilePath -> ModuleID -> FilePath
toObjectFile root (ModuleID (Module.Name names) package) =
    root </> inPackage package (List.intercalate "-" names <.> "elmo")


toSource :: Location -> FilePath
toSource (Location relativePath _package) =
    relativePath


inPackage :: (Pkg.Name, V.Version) -> FilePath -> FilePath
inPackage (name, version) relativePath =
    fromPackage name version </> relativePath


fromPackage :: Pkg.Name -> V.Version -> FilePath
fromPackage name version =
    Pkg.toFilePath name </> V.toString version