@@ -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