File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -18,7 +18,7 @@ public final class Git: Shell {
1818 case status( short: Bool = false )
1919 case commit( message: String , Bool = false )
2020 case config( name: String , value: String )
21- case clone( url: String )
21+ case clone( url: String , dirName : String ? = nil )
2222 case checkout( branch: String , create: Bool = false )
2323 case log( numberOfCommits: Int ? = nil , options: [ String ] ? = nil , revisions: String ? = nil )
2424 case push( remote: String ? = nil , branch: String ? = nil )
@@ -57,8 +57,11 @@ public final class Git: Shell {
5757 if allowEmpty {
5858 params. append ( " --allow-empty " )
5959 }
60- case . clone( let url) :
60+ case . clone( let url, let dirname ) :
6161 params = [ Command . clone. rawValue, url]
62+ if let dirName = dirname {
63+ params. append ( dirName)
64+ }
6265 case . checkout( let branch, let create) :
6366 params = [ Command . checkout. rawValue]
6467 if create {
Original file line number Diff line number Diff line change @@ -103,6 +103,25 @@ final class GitKitTests: XCTestCase {
103103 try self . clean ( path: path)
104104 self . assert ( type: " output " , result: statusOutput, expected: expectation)
105105 }
106+
107+ func testCloneWithDirectory( ) throws {
108+ let path = self . currentPath ( )
109+
110+ let expectation = """
111+ On branch master
112+ Your branch is up to date with 'origin/master'.
113+
114+ nothing to commit, working tree clean
115+ """
116+
117+ try self . clean ( path: path)
118+ let git = Git ( path: path)
119+
120+ try git. run ( . clone( url: " git@github.com:binarybirds/shell-kit " , dirName: " MyCustomDirectory " ) )
121+ let statusOutput = try git. run ( " cd \( path) /MyCustomDirectory && git status " )
122+ try self . clean ( path: path)
123+ self . assert ( type: " output " , result: statusOutput, expected: expectation)
124+ }
106125
107126 #if os(macOS)
108127 func testAsyncRun( ) throws {
You can’t perform that action at this time.
0 commit comments