Files
mini-ticket-system/cli/src/Main.kt
T
2026-08-13 15:33:39 +02:00

69 lines
1.6 KiB
Kotlin

/**
* TICKETS
*
* a Linux cli for the mini ticket system written in C
* features:
* - create a ticket
* `tickets create <title> <description>`
* - list all tickets (or filter by status)
* `tickets list --status=(open|in_progress|closed)`
* - detail of one ticket
* `tickets detail <id>`
*/
fun showUsage() {
println("usage:\n" +
" tickets create <title> <description>\n" +
" tickets list --status (open|in_progress|closed)\n" +
" tickets detail <id>\n")
}
fun parseCreate(title: String, description: String) {
println("CREATE: creating a ticket with\n" +
"title='$title'\n" +
"description='$description'")
}
fun parseList(status: String) {
println("LIST: listing items with status '$status'")
}
fun parseDetail(id: Int) {
println("ID: the id i got is $id\ngoodbye!")
}
fun main(args: Array<String>) {
// only program name
if (args.isEmpty()) {
showUsage()
return
} // args.size > 1
// status filter or no filter
if (args[0] == "list") {
if (args.size >= 3 && args[1] == "--status") {
parseList(args[2])
} else {
parseList("")
}
return
}
if (args.size >= 2 && args[0] == "detail") {
val id = args[1].toIntOrNull()
if (id == null) {
showUsage()
return
} else {
parseDetail(id)
}
return
}
if (args.size >= 3 && args[0] == "create") {
parseCreate(args[1], args[2])
} else {
showUsage()
return
}
}