summaryrefslogtreecommitdiff
path: root/Types/Export.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Types/Export.hs')
-rw-r--r--Types/Export.hs26
1 files changed, 24 insertions, 2 deletions
diff --git a/Types/Export.hs b/Types/Export.hs
index cc1b8debf..0e86f9684 100644
--- a/Types/Export.hs
+++ b/Types/Export.hs
@@ -5,19 +5,41 @@
- Licensed under the GNU GPL version 3 or higher.
-}
-module Types.Export where
+module Types.Export (
+ ExportLocation,
+ mkExportLocation,
+ fromExportLocation,
+ ExportDirectory,
+ mkExportDirectory,
+ fromExportDirectory,
+ exportDirectories,
+) where
+
+import Git.FilePath
import qualified System.FilePath.Posix as Posix
-- A location on a remote that a key can be exported to.
-- The FilePath will be relative to the top of the export,
--- and may contain unix-style path separators.
+-- and uses unix-style path separators.
newtype ExportLocation = ExportLocation FilePath
deriving (Show, Eq)
+mkExportLocation :: FilePath -> ExportLocation
+mkExportLocation = ExportLocation . toInternalGitPath
+
+fromExportLocation :: ExportLocation -> FilePath
+fromExportLocation (ExportLocation f) = f
+
newtype ExportDirectory = ExportDirectory FilePath
deriving (Show, Eq)
+mkExportDirectory :: FilePath -> ExportDirectory
+mkExportDirectory = ExportDirectory . toInternalGitPath
+
+fromExportDirectory :: ExportDirectory -> FilePath
+fromExportDirectory (ExportDirectory f) = f
+
-- | All subdirectories down to the ExportLocation, with the deepest ones
-- last. Does not include the top of the export.
exportDirectories :: ExportLocation -> [ExportDirectory]