module ProjectForge.Get.Git (
GitCloneArgs(..)
, GitURL
, Branch
, gitClone
) where
import System.Process.Typed (ProcessConfig, proc)
type Branch = String
type GitURL = String
data GitCloneArgs = MkGitCloneArgs {
GitCloneArgs -> String
repository :: !GitURL
, GitCloneArgs -> String
directory :: !FilePath
, GitCloneArgs -> Maybe String
branch :: !(Maybe Branch)
, GitCloneArgs -> Maybe Integer
depth :: !(Maybe Integer)
} deriving (GitCloneArgs -> GitCloneArgs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GitCloneArgs -> GitCloneArgs -> Bool
$c/= :: GitCloneArgs -> GitCloneArgs -> Bool
== :: GitCloneArgs -> GitCloneArgs -> Bool
$c== :: GitCloneArgs -> GitCloneArgs -> Bool
Eq, Int -> GitCloneArgs -> ShowS
[GitCloneArgs] -> ShowS
GitCloneArgs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GitCloneArgs] -> ShowS
$cshowList :: [GitCloneArgs] -> ShowS
show :: GitCloneArgs -> String
$cshow :: GitCloneArgs -> String
showsPrec :: Int -> GitCloneArgs -> ShowS
$cshowsPrec :: Int -> GitCloneArgs -> ShowS
Show)
cloneArgsToList :: GitCloneArgs -> [String]
cloneArgsToList :: GitCloneArgs -> [String]
cloneArgsToList GitCloneArgs
args =
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (\String
x -> [String
"--branch", String
x]) (GitCloneArgs -> Maybe String
branch GitCloneArgs
args)
forall a. Semigroup a => a -> a -> a
<> forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (\Integer
x-> [String
"--depth", forall a. Show a => a -> String
show Integer
x]) (GitCloneArgs -> Maybe Integer
depth GitCloneArgs
args)
forall a. Semigroup a => a -> a -> a
<> [ GitCloneArgs -> String
repository GitCloneArgs
args, GitCloneArgs -> String
directory GitCloneArgs
args ]
gitClone :: GitCloneArgs -> ProcessConfig () () ()
gitClone :: GitCloneArgs -> ProcessConfig () () ()
gitClone = String -> [String] -> ProcessConfig () () ()
proc String
"git" forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([String
"clone"] forall a. Semigroup a => a -> a -> a
<>) forall b c a. (b -> c) -> (a -> b) -> a -> c
. GitCloneArgs -> [String]
cloneArgsToList