id = "znc" name = "ZNC" homepage = "https://znc.in/" description = "An advanced IRC bouncer." executables = ["znc"] [dotfiles] # ZNC's official README documents ~/.znc as the default data directory and # ~/.znc/configs/znc.conf as the configuration file inside it. The surrounding # data directory also contains znc.pem, module data and user/network state, so # only the config file is listed. # https://github.com/znc/znc#file-locations paths = ["~/.znc/configs/znc.conf"] exclude = [] secret = ["~/.znc/znc.pem"] # The same config contains the user's ZNC password hash and may contain a # plaintext IRC server password. The official config generator writes these as # `Pass = ...` and `Server = ...`; keep both lines out of synced content. # https://github.com/znc/znc/blob/master/src/znc.cpp [[dotfiles.secret_paths]] file = "~/.znc/configs/znc.conf" match = { prefix = ["Pass", "Server"] } # ZNC generates its TLS certificate/private key into the default data # directory. It is a credential-bearing file, not syncable configuration. # https://github.com/znc/znc/blob/master/src/znc.cpp [commands] format = 1 label = "Run ZNC" description = "Start the ZNC IRC bouncer, or run its one-off setup actions (new config, password hash, certificate)." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = true } [[commands.source]] id = "man" kind = "manual" url = "https://github.com/znc/znc/blob/master/man/znc.1" evidence = """ -n, --no-color Don't use any color escape sequences. -f, --foreground Don't fork the ZNC process into the background. -D, --debug Print debug output to the console. Implies --foreground. -d DATADIR, --datadir=DATADIR Specify another datadir. -c, --makeconf Interactively create a new configuration. -s, --makepass Hash a password for use in znc.conf. -p, --makepem Generate znc.pem. -r, --allow-root Don't complain if ZNC is run with root privileges. """ [[commands.field]] id = "datadir" label = "Data directory" type = "path" path = { kind = "directory", role = "input" } option = ["--datadir", "-d"] sources = ["man"] [[commands.field]] id = "foreground" label = "Stay in foreground" type = "boolean" option = ["--foreground", "-f"] sources = ["man"] [[commands.field]] id = "debug" label = "Debug output" type = "boolean" option = ["--debug", "-D"] sources = ["man"] [[commands.field]] id = "no_color" label = "No color escapes" type = "boolean" option = ["--no-color", "-n"] sources = ["man"] [[commands.field]] id = "allow_root" label = "Allow running as root" type = "boolean" option = ["--allow-root", "-r"] sources = ["man"] [[commands.field]] id = "makeconf" label = "Create a new configuration interactively" type = "boolean" option = ["--makeconf", "-c"] sources = ["man"] [[commands.field]] id = "makepass" label = "Hash a password" type = "boolean" option = ["--makepass", "-s"] sources = ["man"] [[commands.field]] id = "makepem" label = "Generate znc.pem" type = "boolean" option = ["--makepem", "-p"] sources = ["man"] [[commands.task]] id = "start" label = "Start in the foreground" fields = ["datadir", "foreground", "debug", "no_color"] required = [] set = { foreground = [true] } [[commands.task]] id = "makeconf" label = "Create configuration" fields = ["datadir", "makeconf"] required = ["makeconf"] set = { makeconf = [true] } [[commands.task]] id = "makepass" label = "Hash a password" fields = ["makepass"] required = ["makepass"] set = { makepass = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["datadir", "foreground", "debug", "makeconf", "makepass", "makepem"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["no_color", "allow_root"]