Skip to content

Commit f8b453a

Browse files
authored
Merge pull request #3 from monosoul/kotlin
Migrate to Kotlin
2 parents aa39679 + 6e78085 commit f8b453a

35 files changed

+729
-717
lines changed

build.gradle.kts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
import org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL
22
import org.gradle.api.tasks.testing.logging.TestLogEvent.*
3+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
34

45
group = "com.github.monosoul"
5-
version = "0.0.2"
6+
version = "0.0.3"
67

78
plugins {
89
id("org.jetbrains.intellij") version "0.4.15"
10+
kotlin("jvm") version "1.3.61"
911
jacoco
1012
}
1113

12-
java {
13-
sourceCompatibility = JavaVersion.VERSION_1_8
14-
targetCompatibility = JavaVersion.VERSION_1_8
15-
}
16-
1714
intellij {
1815
pluginName = "Git extended update-index"
1916
updateSinceUntilBuild = false
@@ -22,20 +19,14 @@ intellij {
2219
}
2320

2421
dependencies {
25-
val lombokDependency = "org.projectlombok:lombok:1.18.10"
26-
val junitVersion = "5.5.2"
27-
28-
annotationProcessor(lombokDependency)
29-
testAnnotationProcessor(lombokDependency)
30-
compileOnly(lombokDependency)
31-
testCompileOnly(lombokDependency)
22+
implementation(kotlin("stdlib-jdk8"))
3223

24+
val junitVersion = "5.5.2"
3325
testImplementation("org.junit.jupiter:junit-jupiter-api:$junitVersion")
3426
testImplementation("org.junit.jupiter:junit-jupiter-params:$junitVersion")
3527
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$junitVersion")
36-
3728
testImplementation("org.assertj:assertj-core:3.14.0")
38-
testImplementation("org.mockito:mockito-core:2.28.2")
29+
testImplementation("io.mockk:mockk:1.9.3")
3930
testImplementation("org.apache.commons:commons-lang3:3.9")
4031
}
4132

@@ -59,6 +50,13 @@ tasks {
5950
"check" {
6051
dependsOn(jacocoTestReport)
6152
}
53+
54+
withType<KotlinCompile> {
55+
kotlinOptions {
56+
jvmTarget = "1.8"
57+
freeCompilerArgs = listOf("-Xjsr305=strict")
58+
}
59+
}
6260
}
6361

6462
repositories {

src/main/java/com/github/monosoul/git/updateindex/extended/AbstractExtendedUpdateIndexAction.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

src/main/java/com/github/monosoul/git/updateindex/extended/ExtendedUpdateIndexCommand.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/main/java/com/github/monosoul/git/updateindex/extended/GitLineHandlerCreator.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/main/java/com/github/monosoul/git/updateindex/extended/MakeExecutableAction.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/com/github/monosoul/git/updateindex/extended/MakeNotExecutableAction.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/com/github/monosoul/git/updateindex/extended/NoSkipWorkTreeAction.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/com/github/monosoul/git/updateindex/extended/SkipWorkTreeAction.java

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.github.monosoul.git.updateindex.extended
2+
3+
import com.github.monosoul.git.updateindex.extended.ExtendedUpdateIndexCommand.MAKE_EXECUTABLE
4+
import com.github.monosoul.git.updateindex.extended.ExtendedUpdateIndexCommand.MAKE_NOT_EXECUTABLE
5+
import com.github.monosoul.git.updateindex.extended.ExtendedUpdateIndexCommand.NO_SKIP_WORKTREE
6+
import com.github.monosoul.git.updateindex.extended.ExtendedUpdateIndexCommand.SKIP_WORKTREE
7+
import com.github.monosoul.git.updateindex.extended.support.CommandInvoker
8+
import com.github.monosoul.git.updateindex.extended.support.PresentationUpdater
9+
import com.intellij.openapi.actionSystem.Presentation
10+
import com.intellij.openapi.project.Project
11+
import com.intellij.openapi.vcs.actions.AbstractVcsAction
12+
import com.intellij.openapi.vcs.actions.VcsContext
13+
import com.intellij.openapi.vfs.VirtualFile
14+
15+
sealed class ExtendedUpdateIndexAction(private val command: ExtendedUpdateIndexCommand) : AbstractVcsAction() {
16+
17+
override fun update(context: VcsContext, presentation: Presentation) {
18+
context.project?.updatePresentation(presentation)
19+
}
20+
21+
override fun actionPerformed(context: VcsContext) {
22+
context.run {
23+
project?.invokeCommand(selectedFiles, command)
24+
}
25+
}
26+
27+
private fun Project.invokeCommand(selectedFiles: Array<VirtualFile>, command: ExtendedUpdateIndexCommand) {
28+
getComponent(CommandInvoker::class.java)?.invoke(selectedFiles, command)
29+
}
30+
31+
private fun Project.updatePresentation(presentation: Presentation) {
32+
getComponent(PresentationUpdater::class.java)?.invoke(presentation)
33+
}
34+
}
35+
36+
class MakeExecutableAction : ExtendedUpdateIndexAction(MAKE_EXECUTABLE)
37+
38+
class MakeNotExecutableAction : ExtendedUpdateIndexAction(MAKE_NOT_EXECUTABLE)
39+
40+
class NoSkipWorkTreeAction : ExtendedUpdateIndexAction(NO_SKIP_WORKTREE)
41+
42+
class SkipWorkTreeAction : ExtendedUpdateIndexAction(SKIP_WORKTREE)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.github.monosoul.git.updateindex.extended
2+
3+
enum class ExtendedUpdateIndexCommand(val command: String) {
4+
SKIP_WORKTREE("--skip-worktree"),
5+
NO_SKIP_WORKTREE("--no-skip-worktree"),
6+
MAKE_EXECUTABLE("--chmod=+x"),
7+
MAKE_NOT_EXECUTABLE("--chmod=-x")
8+
}

0 commit comments

Comments
 (0)