Skip to content

Commit 9fd5012

Browse files
authored
Merge pull request #6 from Task-Tracker-Systems/cli
Cli
2 parents 78f9154 + 6446ef7 commit 9fd5012

File tree

14 files changed

+147
-26
lines changed

14 files changed

+147
-26
lines changed

.github/workflows/build.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,10 @@ jobs:
5050
ln -s ../gradle &&
5151
ln -s ../gradlew &&
5252
./gradlew check &&
53-
./gradlew publishToMavenLocal
53+
./gradlew publishToMavenLocal &&
54+
55+
cd ../Task-Tracker-CLI &&
56+
ln -s ../gradle &&
57+
ln -s ../gradlew &&
58+
./gradlew check &&
59+
./gradlew assembleDist

Task-Tracker-CLI/build.gradle.kts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
plugins {
2+
kotlin("jvm") version "1.8.21"
3+
application
4+
}
5+
6+
group = "com.garbereder.tasktracker.entities"
7+
version = "1.0-SNAPSHOT"
8+
9+
repositories {
10+
mavenLocal()
11+
mavenCentral()
12+
maven ("https://jitpack.io")
13+
}
14+
15+
dependencies {
16+
testImplementation(kotlin("test"))
17+
implementation("com.github.kotlin-inquirer:kotlin-inquirer:0.1.0")
18+
implementation("com.garbereder.tasktracker.usecases:Task-Tracker-Usecases:1.0-SNAPSHOT")
19+
implementation("com.garbereder.tasktracker.entities:Task-Tracker-Entities:1.0-SNAPSHOT")
20+
implementation("com.garbereder.tasktracker.entities-impl:Task-Tracker-Entities-Impl:1.0-SNAPSHOT")
21+
}
22+
23+
tasks.test {
24+
useJUnitPlatform()
25+
}
26+
27+
kotlin {
28+
jvmToolchain(17)
29+
}
30+
31+
application {
32+
mainClass.set("MainKt")
33+
}

Task-Tracker-CLI/gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
kotlin.code.style=official

Task-Tracker-CLI/settings.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
rootProject.name = "Task-Tracker-CLI"
3+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
import com.garbereder.tasktracker.entities.TaskCollection
3+
import com.garbereder.tasktracker.entities.TaskCollectionImpl
4+
import com.garbereder.tasktracker.usecases.tasks.AddTask
5+
import com.garbereder.tasktracker.usecases.tasks.ListTasks
6+
import com.garbereder.tasktracker.usecases.tasks.LoadTasks
7+
import com.garbereder.tasktracker.usecases.tasks.TaskCollectionReader
8+
import com.github.kinquirer.KInquirer
9+
import com.github.kinquirer.components.promptInput
10+
import com.github.kinquirer.components.promptList
11+
import kotlin.system.exitProcess
12+
13+
fun main() {
14+
println("Welcome to Task-Tracker-CLI")
15+
val tasks = LoadTasks(object : TaskCollectionReader {
16+
override fun read(): TaskCollection {
17+
return TaskCollectionImpl()
18+
}
19+
}).invoke()
20+
val addTask : (tasks: TaskCollection) -> Unit = {
21+
val taskName = KInquirer.promptInput("Task name:")
22+
AddTask(tasks, taskName).invoke()
23+
}
24+
val listTasks : (tasks: TaskCollection) -> Unit = {
25+
val taskIterator = ListTasks(tasks).invoke()
26+
while(taskIterator.hasNext()) {
27+
println(taskIterator.next().name)
28+
}
29+
}
30+
val quit : (tasks: TaskCollection) -> Unit = {
31+
exitProcess(0)
32+
}
33+
val choices = mapOf(
34+
"AddTask" to addTask,
35+
"ListTask" to listTasks,
36+
"Quit" to quit
37+
)
38+
while(true) {
39+
val selection: String = KInquirer.promptList("What do you want to do?", choices.keys.toList())
40+
choices[selection]!!.invoke(tasks)
41+
}
42+
43+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.garbereder.tasktracker.usecases
22

3-
interface UseCase {
4-
fun invoke()
3+
interface UseCase<out T> {
4+
fun invoke(): T
55
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/AddTask.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.garbereder.tasktracker.entities.Task
44
import com.garbereder.tasktracker.entities.TaskCollection
55
import com.garbereder.tasktracker.usecases.UseCase
66

7-
class AddTask constructor(private val collection: TaskCollection, private val task: Task) : UseCase {
8-
override fun invoke() = collection.add(task)
7+
class AddTask constructor(private val collection: TaskCollection, private val taskName: String) : UseCase<Unit> {
8+
override fun invoke() = collection.add(Task("${collection.size() + 1}", taskName))
99
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.garbereder.tasktracker.usecases.tasks
2+
3+
import com.garbereder.tasktracker.entities.Task
4+
import com.garbereder.tasktracker.entities.TaskCollection
5+
import com.garbereder.tasktracker.usecases.UseCase
6+
7+
class ListTasks(private val collection: TaskCollection): UseCase<Iterator<Task>> {
8+
override fun invoke(): Iterator<Task> = collection.iterator()
9+
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/LoadTasks.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ package com.garbereder.tasktracker.usecases.tasks
33
import com.garbereder.tasktracker.entities.TaskCollection
44
import com.garbereder.tasktracker.usecases.UseCase
55

6-
class LoadTasks(private val reader: TaskCollectionReader) : UseCase {
7-
8-
lateinit var tasks: TaskCollection
9-
10-
override fun invoke() {
11-
tasks = this.reader.read()
12-
}
13-
6+
class LoadTasks(private val reader: TaskCollectionReader) : UseCase<TaskCollection> {
7+
override fun invoke(): TaskCollection = this.reader.read()
148
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/RemoveTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.garbereder.tasktracker.entities.Task
44
import com.garbereder.tasktracker.entities.TaskCollection
55
import com.garbereder.tasktracker.usecases.UseCase
66

7-
class RemoveTask(private val collection: TaskCollection, private val task: Task): UseCase {
7+
class RemoveTask(private val collection: TaskCollection, private val task: Task): UseCase<Unit> {
88
override fun invoke() = collection.remove(task)
99
}

0 commit comments

Comments
 (0)