view src/main/kotlin/name/blackcap/passman/DeleteSubcommand.kt @ 21:ea65ab890f66

More work to support interactive feature.
author David Barts <n5jrn@me.com>
date Tue, 02 Jul 2024 11:27:39 -0700
parents 72619175004e
children 07406c4af4a5
line wrap: on
line source

package name.blackcap.passman

class DeleteSubcommand(): Subcommand() {
    override fun run(args: Array<String>): {
        if (args.isEmpty()) {
            throw SubcommandException(message = "expecting a site name", status = 2)
        }
        if (args[0] == "-h" || args[0].startsWith("--h")) {
            println("usage: passman delete name [...]")
            return 0
        }
        val db = Database.default
        var errors = 0
        for (nameIn in args) {
            db.connection.prepareStatement("delete from passwords where id = ?").use {
                it.setLong(1, db.makeKey(nameIn))
                if (it.executeUpdate() == 0) {
                    error("no record matches ${see(nameIn)}")
                    errors++
                }
            }
        }
        if (errors > 0) {
            throw SubcommandException()
        }
    }
}