diff --git a/Sources/MintCLI/Commands/PackageCommand.swift b/Sources/MintCLI/Commands/PackageCommand.swift index 77b22e1..2248019 100644 --- a/Sources/MintCLI/Commands/PackageCommand.swift +++ b/Sources/MintCLI/Commands/PackageCommand.swift @@ -15,7 +15,7 @@ class PackageCommand: MintfileCommand { \(description) The package can be a shorthand for a github repo \"githubName/repo\", or a fully qualified .git path. - An optional version can be specified by appending @version to the repo, otherwise the newest tag will be used (or master if no tags are found.) + An optional version can be specified by appending @version to the repo, otherwise the newest tag will be used (or main, then master if no tags are found.) """ if let parameterDescription = parameterDescription { longDescription += "\n\n\(parameterDescription)" diff --git a/Sources/MintKit/Mint.swift b/Sources/MintKit/Mint.swift index 64e2726..15d6dcc 100644 --- a/Sources/MintKit/Mint.swift +++ b/Sources/MintKit/Mint.swift @@ -84,6 +84,11 @@ public class Mint { return gitRepos } + func getDefaultGitBranch() throws -> String { + let refsOutput = try Task.capture(bash: "git ls-remote --heads --quiet | cut -f2 | cut -d'/' -f3") + return refsOutput.stdout + } + func getLinkedExecutables() -> [Path] { guard linkPath.exists, let packages = try? linkPath.children() else { @@ -164,14 +169,14 @@ public class Mint { let tagReferences = tagOutput.stdout if tagReferences.isEmpty { - package.version = "master" + package.version = try getDefaultGitBranch() } else { let tags = tagReferences.split(separator: "\n").map { String($0.split(separator: "\t").last!.split(separator: "/").last!) } let versions = convertTagsToVersionMap(tags) if let latestVersion = versions.keys.sorted().last, let tag = versions[latestVersion] { package.version = tag } else { - package.version = "master" + package.version = try getDefaultGitBranch() } } } catch { diff --git a/Sources/MintKit/PackageReference.swift b/Sources/MintKit/PackageReference.swift index b2503fe..511131d 100644 --- a/Sources/MintKit/PackageReference.swift +++ b/Sources/MintKit/PackageReference.swift @@ -63,7 +63,7 @@ public class PackageReference { public var versionCouldBeSHA: Bool { switch version { - case "master", "develop": + case "main", "master", "develop": return false default: let characterSet = CharacterSet.letters.union(.decimalDigits) diff --git a/Tests/MintTests/PackageTests.swift b/Tests/MintTests/PackageTests.swift index b31dbd3..330948f 100644 --- a/Tests/MintTests/PackageTests.swift +++ b/Tests/MintTests/PackageTests.swift @@ -92,6 +92,7 @@ class PackageTests: XCTestCase { XCTAssertFalse(PackageReference(repo: "", version: "my_branch").versionCouldBeSHA) XCTAssertFalse(PackageReference(repo: "", version: "develop").versionCouldBeSHA) + XCTAssertFalse(PackageReference(repo: "", version: "main").versionCouldBeSHA) XCTAssertFalse(PackageReference(repo: "", version: "master").versionCouldBeSHA) XCTAssertFalse(PackageReference(repo: "", version: "1.0").versionCouldBeSHA) XCTAssertFalse(PackageReference(repo: "", version: "fgvb45g_").versionCouldBeSHA)