id = "flexget" name = "FlexGet" homepage = "https://flexget.com" description = "FlexGet is a multipurpose automation tool for content like torrents, nzbs, podcasts, comics, series, movies, etc." # The apple-touch-icon from the project's homepage. icon = "https://flexget.com/_assets/favicons/apple-touch-icon.png" executables = ["flexget"] [dotfiles] # flexget/manager.py, Manager._init_config: with no explicit --config path it # tries the current directory, then `Path('~/.flexget').expanduser()`, then — # on Windows only, "as explorer does not let you create a folder starting with # a dot" — `~/flexget`, and on every other platform # `Path(os.environ.get('XDG_CONFIG_HOME', '~/.config'), 'flexget')`. The # default file name is config.yml. # # The XDG branch is the Unix one, so [configHome] is written for it; on # Windows that root resolves to %APPDATA%, where FlexGet does not look, and a # consumer simply finds no file there and skips it. The two home-directory # spellings are the Windows ones and are listed literally. paths = [ "[configHome]/flexget/config.yml", "~/.flexget/config.yml", "~/flexget/config.yml", ] # The rest of the config directory is runtime state: manager.py derives # `db-.sqlite` and `.-lock` from config_base, and the log file # defaults there too. None of it is named in paths, so there is nothing to # carve out — this records that it was looked at. exclude = [] # config.yml is not itself a credential file: it is the task definitions, # series lists and plugin options a user wants on every machine. It is worth # saying plainly, though, that plugin options inside it routinely hold # passwords and API keys — a transmission or deluge password, a tracker's # API key, notification tokens — under key paths that differ per plugin. # No secret_paths rule is given because inventing one would be a guess at # which keys those are, and a rule that resolves to nothing is worse than # none; a consumer should scan this file's contents. secret = [] # No machine_lines: download directories in a config.yml are absolute paths, # but which key holds one depends entirely on the plugin, and naming the wrong # key would strand the task definitions that make up the rest of the file. [commands] format = 1 label = "FlexGet" description = "Run FlexGet tasks. Only the execute subcommand is covered; daemon, database and plugin utilities are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["execute"] label = "Execute tasks now" [[commands.subcommand.source]] id = "help" kind = "help" revision = "flexget execute --help" evidence = """ usage: flexget execute [--help] [--tasks TASK [TASK ...]] [--learn] [--no-cache] [--discover-now] [--dump-config] [-v] [-s] [--now] --tasks TASK [TASK ...] run only specified task(s), optionally using glob patterns ("tv-*"). matching is case-insensitive --learn matches are not downloaded but will be skipped in the future --no-cache disable caches. works only in plugins that have explicit support --discover-now Immediately try to discover everything --dump-config display the config of each feed after template merging/config generation occurs -v, --verbose verbose undecided entries -s, --silent don't verbose any actions (accept, reject, fail) --now run task(s) even if the interval plugin would normally prevent it """ [[commands.subcommand.field]] id = "tasks" label = "Tasks" description = "Task names or globs such as tv-*. Empty runs all tasks." type = "string" option = ["--tasks"] multiple = true sources = ["help"] [[commands.subcommand.field]] id = "learn" label = "Learn only" description = "Matches are not downloaded but will be skipped in the future." type = "boolean" option = ["--learn"] sources = ["help"] [[commands.subcommand.field]] id = "now" label = "Ignore interval" type = "boolean" option = ["--now"] sources = ["help"] [[commands.subcommand.field]] id = "discover_now" label = "Discover now" type = "boolean" option = ["--discover-now"] sources = ["help"] [[commands.subcommand.field]] id = "no_cache" label = "Disable caches" type = "boolean" option = ["--no-cache"] sources = ["help"] [[commands.subcommand.field]] id = "verbose" label = "Verbose undecided entries" type = "boolean" option = ["--verbose", "-v"] sources = ["help"] [[commands.subcommand.field]] id = "silent" label = "Silent" type = "boolean" option = ["--silent", "-s"] sources = ["help"] [[commands.subcommand.field]] id = "dump_config" label = "Dump task config" type = "boolean" option = ["--dump-config"] sources = ["help"] [[commands.subcommand.task]] id = "run_all" label = "Run all tasks" fields = ["verbose"] required = [] [[commands.subcommand.task]] id = "run_some" label = "Run selected tasks" fields = ["tasks", "now"] required = ["tasks"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["tasks", "now", "verbose", "silent"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["learn", "discover_now", "no_cache", "dump_config"]