All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sop.cli.picocli.commands.VersionCmd.kt Maven / Gradle / Ivy

There is a newer version: 10.0.3
Show newest version
// SPDX-FileCopyrightText: 2023 Paul Schaub 
//
// SPDX-License-Identifier: Apache-2.0

package sop.cli.picocli.commands

import picocli.CommandLine.ArgGroup
import picocli.CommandLine.Command
import picocli.CommandLine.Option
import sop.cli.picocli.SopCLI
import sop.exception.SOPGPException

@Command(
    name = "version",
    resourceBundle = "msg_version",
    exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE)
class VersionCmd : AbstractSopCmd() {

    @ArgGroup var exclusive: Exclusive? = null

    class Exclusive {
        @Option(names = ["--extended"]) var extended: Boolean = false
        @Option(names = ["--backend"]) var backend: Boolean = false
        @Option(names = ["--sop-spec"]) var sopSpec: Boolean = false
        @Option(names = ["--sopv"]) var sopv: Boolean = false
    }

    override fun run() {
        val version = throwIfUnsupportedSubcommand(SopCLI.getSop().version(), "version")

        if (exclusive == null) {
            // No option provided
            println("${version.getName()} ${version.getVersion()}")
            return
        }

        if (exclusive!!.extended) {
            println(version.getExtendedVersion())
            return
        }

        if (exclusive!!.backend) {
            println(version.getBackendVersion())
            return
        }

        if (exclusive!!.sopSpec) {
            println(version.getSopSpecVersion())
            return
        }

        if (exclusive!!.sopv) {
            println(version.getSopVVersion())
            return
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy