id = "kafkactl" name = "kafkactl" homepage = "https://github.com/deviceinsight/kafkactl" description = "A command-line interface for interaction with Apache Kafka." executables = ["kafkactl"] [dotfiles] # README.adoc, "Configuration" and "Config file read order": after # --config-file and $KAFKA_CTL_CONFIG and a project file in the working # directory, "as default the config file is looked up from one of the following # locations: $HOME/.config/kafkactl/config.yml, $HOME/.kafkactl/config.yml, # $APPDATA/kafkactl/config.yml, /etc/kafkactl/config.yml". The first and the # third are one directory under two platforms' names — no macOS branch, so it # is [configHome] and not [appData]. The last one is system-wide, so it is not # listed here; a kafkactl.yml in a project directory belongs to that project, # not to the user. paths = [ "[configHome]/kafkactl/config.yml", "~/.kafkactl/config.yml", ] # README.adoc, "Current context": when no current context is set, kafkactl # creates "a file storing the current context ... typically stored next to the # config file and named current-context.yml". Which cluster this machine points # at is a property of the machine, and kafkactl rewrites the file itself. exclude = [ "[configHome]/kafkactl/current-context.yml", "~/.kafkactl/current-context.yml", ] # Not a whole-file secret: brokers, contexts, client id and protobuf paths are # what makes the file worth carrying. Only the passwords come out. secret = [] # Read at the start of each command. side_effect = false # The README's annotated example config marks these as credentials: the SASL # password ("if omitted, password is looked up in the OS keyring or prompted # interactively"), the passphrase for an encrypted client key, and the same two # again under the schema registry's own basic-auth and TLS blocks. Both # locations are named, or the passwords are only lifted out for a user whose # file happens to be the one the rule lists. [[dotfiles.secret_paths]] file = [ "[configHome]/kafkactl/config.yml", "~/.kafkactl/config.yml", ] match = { key_path = [ "contexts.*.sasl.password", "contexts.*.tls.certKeyPassphrase", "contexts.*.schemaRegistry.password", "contexts.*.schemaRegistry.tls.certKeyPassphrase", ] } [commands] format = 1 label = "kafkactl" description = "Consume and produce messages and list topics. Protobuf, Avro and admin commands are left out." quality = "ai-draft" base = "fig:kafkactl" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/kafkactl.ts" license = "MIT" [[commands.subcommand]] path = ["consume"] label = "Consume messages" [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/kafkactl.ts" license = "MIT" [[commands.subcommand.field]] id = "topic" label = "Topic" type = "string" position = 0 sources = ["fig"] [[commands.subcommand.field]] id = "from_beginning" label = "From beginning" type = "boolean" option = ["--from-beginning", "-b"] sources = ["fig"] [[commands.subcommand.field]] id = "exit" label = "Stop at latest offset" type = "boolean" option = ["--exit", "-e"] sources = ["fig"] [[commands.subcommand.field]] id = "group" label = "Consumer group" type = "string" option = ["--group", "-g"] sources = ["fig"] [[commands.subcommand.field]] id = "max_messages" label = "Max messages" type = "integer" option = ["--max-messages"] sources = ["fig"] [[commands.subcommand.field]] id = "tail" label = "Last N messages" type = "integer" option = ["--tail"] sources = ["fig"] [[commands.subcommand.field]] id = "print_keys" label = "Print keys" type = "boolean" option = ["--print-keys", "-k"] sources = ["fig"] [[commands.subcommand.field]] id = "print_timestamps" label = "Print timestamps" type = "boolean" option = ["--print-timestamps", "-t"] sources = ["fig"] [[commands.subcommand.task]] id = "peek" label = "Read existing messages" set = { from_beginning = [true], exit = [true] } fields = ["topic", "from_beginning", "exit", "max_messages"] required = ["topic"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["topic", "from_beginning", "exit", "group", "max_messages", "tail", "print_keys", "print_timestamps"] [[commands.subcommand]] path = ["produce"] label = "Produce a message" [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/kafkactl.ts" license = "MIT" [[commands.subcommand.field]] id = "topic" label = "Topic" type = "string" position = 0 sources = ["fig"] [[commands.subcommand.field]] id = "value" label = "Value" type = "string" option = ["--value", "-v"] sources = ["fig"] [[commands.subcommand.field]] id = "key" label = "Key" type = "string" option = ["--key", "-k"] sources = ["fig"] [[commands.subcommand.field]] id = "file" label = "Read from file" type = "path" option = ["--file", "-f"] path = { kind = "file", role = "input" } sources = ["fig"] [[commands.subcommand.field]] id = "partition" label = "Partition" type = "integer" option = ["--partition", "-p"] sources = ["fig"] [[commands.subcommand.field]] id = "header" label = "Headers (key:value)" type = "string" option = ["--header", "-H"] multiple = true sources = ["fig"] [[commands.subcommand.task]] id = "one" label = "Send one message" fields = ["topic", "value", "key"] required = ["topic", "value"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["topic", "value", "key", "file", "partition", "header"] [[commands.subcommand]] path = ["list", "topics"] label = "List topics" [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/kafkactl.ts" license = "MIT" [[commands.subcommand.field]] id = "output" label = "Output format" type = "enum" option = ["--output", "-o"] choices = [{ value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }, { value = "wide", label = "Wide" }, { value = "compact", label = "Compact" }] sources = ["fig"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["output"]