Skip to content

Commit 3e2d213

Browse files
author
Andrew McKnight
committed
add custom directory name parameter to clone command
1 parent 92cb559 commit 3e2d213

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

Sources/GitKit/Git.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff 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 {

Tests/GitKitTests/GitKitTests.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff 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: "[email protected]: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 {

0 commit comments

Comments
 (0)