id = "imapfilter" name = "IMAPFilter" homepage = "https://github.com/lefcha/imapfilter" description = "Mail filtering utility for IMAP servers." executables = ["imapfilter"] [dotfiles] # The upstream imapfilter_config manual documents $HOME/.imapfilter/config.lua # as the Lua configuration and extension script. It commonly contains mailbox # login material, so expose the complete user config as secret-only. # https://github.com/lefcha/imapfilter/blob/master/doc/imapfilter_config.5 paths = [] secret = ["~/.imapfilter/config.lua"] side_effect = false [commands] format = 1 label = "Run mail filters" description = "Run an IMAPFilter configuration, optionally as a dry run. Debug and pid files, interactive mode and one-line commands are outside this form." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.source]] id = "man" kind = "manual" url = "https://github.com/lefcha/imapfilter/blob/master/doc/imapfilter.1" revision = "2026-10-27" evidence = """ imapfilter [-inVv] [-c configfile] [-d debugfile] [-e 'command'] [-l logfile] [-p pidfile] [-t truststore] -c configfile Path to the configuration file to read. The default is $HOME/.imapfilter/config.lua. -l logfile File that contains logs of error messages produced. -n This option enables the so called dry-run mode, and any actions that would result in changes to the server do not actually take place. -t truststore The path to the system's SSL CA TrustStore directory or file. -v Verbose """ [[commands.field]] id = "config" label = "Configuration file" description = "Defaults to ~/.imapfilter/config.lua." type = "path" path = { kind = "file", role = "input" } option = ["-c"] sources = ["man"] [[commands.field]] id = "dry_run" label = "Dry run" description = "Do not send requests that would modify data on the server." type = "boolean" option = ["-n"] sources = ["man"] [[commands.field]] id = "log" label = "Log file" type = "path" path = { kind = "file", role = "output" } option = ["-l"] sources = ["man"] [[commands.field]] id = "truststore" label = "CA truststore" type = "path" path = { kind = "any", role = "input" } option = ["-t"] sources = ["man"] [[commands.task]] id = "dry_run_task" label = "Test a configuration (dry run)" fields = ["config", "dry_run"] required = ["config"] set = { dry_run = [true] } [[commands.task]] id = "run" label = "Run a configuration" fields = ["config", "log"] required = ["config"] [[commands.group]] id = "basic" label = "Basic" fields = ["config", "dry_run", "log"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["truststore"]