Skip to content

Commit f2923e9

Browse files
committed
feat: support windows
1 parent c3b2fd3 commit f2923e9

File tree

6 files changed

+26
-14
lines changed

6 files changed

+26
-14
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# intellij-platform-git-stats-plugin
22

33
![Build](https://github.com/zhensherlock/intellij-platform-git-stats-plugin/workflows/Build/badge.svg)
4-
[![Version](https://img.shields.io/jetbrains/plugin/v/PLUGIN_ID.svg)](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
5-
[![Downloads](https://img.shields.io/jetbrains/plugin/d/PLUGIN_ID.svg)](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
4+
[![Version](https://img.shields.io/jetbrains/plugin/v/com.huayi.intellijplatform.gitstats.svg)](https://plugins.jetbrains.com/plugin/com.huayi.intellijplatform.gitstats)
5+
[![Downloads](https://img.shields.io/jetbrains/plugin/d/com.huayi.intellijplatform.gitstats.svg)](https://plugins.jetbrains.com/plugin/com.huayi.intellijplatform.gitstats)
66

77
## Template ToDo list
88
- [x] Create a new [IntelliJ Platform Plugin Template][template] project.

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626
// implementation(libs.annotations)
2727
// implementation("org.swinglabs:swingx:1.6.1")
2828
// implementation("org.jfxtras:jfxtras-controls:17-r1")
29+
// implementation("org.eclipse.jgit:org.eclipse.jgit:6.5.0.202303070854-r")
2930
}
3031

3132
// Set the JVM language level used to build the project. Use Java 11 for 2020.3+, and Java 17 for 2022.2+.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ platformVersion = 2022.1.4
1616

1717
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
1818
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
19-
platformPlugins =
19+
platformPlugins = Git4Idea
2020

2121
# Gradle Releases -> https://github.com/gradle/gradle/releases
2222
gradleVersion = 8.1

src/main/kotlin/com/huayi/intellijplatform/gitstats/services/GitStatsService.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package com.huayi.intellijplatform.gitstats.services
22

33
import com.intellij.openapi.components.Service
4-
import com.intellij.openapi.diagnostic.thisLogger
54
import com.intellij.openapi.project.Project
6-
import com.huayi.intellijplatform.gitstats.MyBundle
75
import com.huayi.intellijplatform.gitstats.toolWindow.StatsTableModel
8-
import com.huayi.intellijplatform.gitstats.utils.GitUtil
6+
import com.huayi.intellijplatform.gitstats.utils.GitUtils
97
import com.huayi.intellijplatform.gitstats.utils.Utils
108
import java.text.SimpleDateFormat
119
import java.util.*
@@ -25,8 +23,8 @@ class GitStatsService(p: Project) {
2523
if (!Utils.checkDirectoryExists(project.basePath)) {
2624
return StatsTableModel(arrayOf(), arrayOf())
2725
}
28-
val gitUtil = GitUtil(project.basePath as String)
29-
val userStats = gitUtil.getUserStats(
26+
val gitUtils = GitUtils(project)
27+
val userStats = gitUtils.getUserStats(
3028
SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime),
3129
SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(endTime)
3230
)
@@ -49,8 +47,8 @@ class GitStatsService(p: Project) {
4947
if (!Utils.checkDirectoryExists(project.basePath)) {
5048
return StatsTableModel(arrayOf(), arrayOf())
5149
}
52-
val gitUtil = GitUtil(project.basePath as String)
53-
val userStats = gitUtil.getTopSpeedUserStats(
50+
val gitUtils = GitUtils(project)
51+
val userStats = gitUtils.getTopSpeedUserStats(
5452
SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime),
5553
SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(endTime)
5654
)

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.huayi.intellijplatform.gitstats.utils
22

3+
import git4idea.config.GitExecutableManager
34
import java.util.concurrent.TimeUnit
5+
import com.intellij.openapi.project.Project
46

57
data class UserStats(
68
val author: String,
@@ -24,7 +26,15 @@ data class CommitFilesStats(
2426
var addedLines: Int = 0, var deletedLines: Int = 0, var fileName: String
2527
)
2628

27-
class GitUtil(private val repoPath: String) {
29+
class GitUtils(project: Project) {
30+
private val gitExecutablePath: String = GitExecutableManager.getInstance().getExecutable(project).exePath
31+
private val basePath: String = project.basePath as String
32+
33+
// companion object {
34+
// fun getGitExecutablePath(project: Project): String {
35+
// return GitExecutableManager.getInstance().getExecutable(project).exePath
36+
// }
37+
// }
2838

2939
fun getTopSpeedUserStats(
3040
startDate: String, endDate: String, timeoutAmount: Long = 60L, timeUnit: TimeUnit = TimeUnit.SECONDS
@@ -33,9 +43,9 @@ class GitUtil(private val repoPath: String) {
3343
val command = listOf(
3444
if (os == "Windows") "cmd" else "/bin/sh",
3545
if (os == "Windows") "/c" else "-c",
36-
"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"
46+
"$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"
3747
)
38-
val process = Utils.runCommand(repoPath, command, timeoutAmount, timeUnit)
48+
val process = Utils.runCommand(basePath, command, timeoutAmount, timeUnit)
3949
val regex = Regex("(.+)\\n+added lines: (\\d*), removed lines: (\\d+), modified files: (\\d+)")
4050
return regex.findAll(process!!.inputStream.bufferedReader().readText())
4151
.map { result ->
@@ -61,7 +71,7 @@ class GitUtil(private val repoPath: String) {
6171
"--until=$endDate"
6272
)
6373

64-
val process = Utils.runCommand(repoPath, gitCommand, timeoutAmount, timeUnit)
74+
val process = Utils.runCommand(basePath, gitCommand, timeoutAmount, timeUnit)
6575

6676
val userStatsData = mutableMapOf<String, UserStats>()
6777
process!!.inputStream.bufferedReader().use { reader ->

src/main/resources/META-INF/plugin.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
<vendor>huayi</vendor>
66

77
<depends>com.intellij.modules.platform</depends>
8+
<depends>com.intellij.modules.vcs</depends>
9+
<depends>Git4Idea</depends>
10+
<!-- <depends optional="true" config-file="plugin-with-Git4Idea.xml">Git4Idea</depends>-->
811

912
<resource-bundle>messages.MyBundle</resource-bundle>
1013

0 commit comments

Comments
 (0)