Skip to content

Commit 053c70f

Browse files
committed
feat: support windows
1 parent 1e0e6a0 commit 053c70f

File tree

1 file changed

+21
-9
lines changed
  • src/main/kotlin/com/huayi/intellijplatform/gitstats/utils

1 file changed

+21
-9
lines changed

src/main/kotlin/com/huayi/intellijplatform/gitstats/utils/GitUtils.kt

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ class GitUtils(project: Project) {
3232
private val basePath: String = project.basePath as String
3333
private val gitBashExecutablePath: String? = GitExecutableDetector.getBashExecutablePath(gitExecutablePath)
3434

35-
init {
36-
println(gitBashExecutablePath)
37-
}
35+
// init {
36+
// }
3837
// companion object {
3938
// fun getGitExecutablePath(project: Project): String {
4039
// return GitExecutableManager.getInstance().getExecutable(project).exePath
@@ -45,12 +44,25 @@ class GitUtils(project: Project) {
4544
startDate: String, endDate: String, timeoutAmount: Long = 60L, timeUnit: TimeUnit = TimeUnit.SECONDS
4645
): Array<UserStats> {
4746
val os = Utils.getOS()
48-
val command = listOf(
49-
if (os == "Windows") gitBashExecutablePath ?: "cmd" else "/bin/sh",
50-
if (os == "Windows") "/c" else "-c",
51-
"$gitExecutablePath log --format=\"%aN\" | sort -u | while read name; do echo \"\$name\"; git log --author=\"\$name\" --pretty=\"tformat:\" --since=\"$startDate\" --until=\"$endDate\" --numstat | awk '{ add += \$1; subs += \$2; file++ } END { printf \"added lines: %s, removed lines: %s, modified files: %s\\n\", add ? add : 0, subs ? subs : 0, file ? file : 0 }' -; done"
52-
)
53-
val process = Utils.runCommand(basePath, command, timeoutAmount, timeUnit)
47+
val commands = mutableListOf<String>()
48+
when {
49+
os == "Windows" && gitBashExecutablePath?.isNotEmpty() ?: false -> {
50+
commands += gitBashExecutablePath!!
51+
commands += "-c"
52+
commands += "git log --format=\"%aN\" | sort -u | while read name; do echo \"\$name\"; git log --author=\\\"\$name\\\" --pretty=tformat: --since=\\\"${startDate}\\\" --until=\\\"${endDate}\\\" --numstat | awk '{ add += \$1; subs += \$2; file++ } END { printf(\\\"added lines: %s, removed lines: %s, modified files: %s\\n\\\", add ? add : 0, subs ? subs : 0, file ? file : 0) }' -; done"
53+
}
54+
os == "Windows" && gitBashExecutablePath?.isEmpty() ?: false -> {
55+
commands += "powershell"
56+
commands += "/c"
57+
// commands += "C:\\\"Program Files\"\\Git\\cmd\\git.exe log --format='%aN' | sort -u | % { $name=$_; Write-Output $name; git log --author=$name --pretty=tformat: --since='2023-05-15 00:00:00' --until='2023-05-21 23:59:59' --numstat | ? { $_ -match '\\d' } | % { $add += [int]$_.Split()[0]; $subs += [int]$_.Split()[1]; $files++ } ; Write-Output ( 'added lines: ' + $add + ', removed lines: ' + $subs + ', modified files: ' + $files ) }"
58+
}
59+
else -> {
60+
commands += "/bin/sh"
61+
commands += "-c"
62+
commands += "$gitExecutablePath log --format=\"%aN\" | sort -u | while read name; do echo \"\$name\"; git log --author=\"\$name\" --pretty=\"tformat:\" --since=\"$startDate\" --until=\"$endDate\" --numstat | awk '{ add += \$1; subs += \$2; file++ } END { printf \"added lines: %s, removed lines: %s, modified files: %s\\n\", add ? add : 0, subs ? subs : 0, file ? file : 0 }' -; done"
63+
}
64+
}
65+
val process = Utils.runCommand(basePath, commands, timeoutAmount, timeUnit)
5466
val regex = Regex("(.+)\\n+added lines: (\\d*), removed lines: (\\d+), modified files: (\\d+)")
5567
return regex.findAll(process!!.inputStream.bufferedReader().readText())
5668
.map { result ->

0 commit comments

Comments
 (0)