id = "rustrover" name = "RustRover" homepage = "https://www.jetbrains.com/rust/" description = "A powerful IDE for Rust. Code, test, debug, and deploy, all right out of the box." # JetBrains' published product icon. thesvg.org carries the rest of the # family but not RustRover. icon = "https://resources.jetbrains.com/storage/products/company/brand/logos/RustRover_icon.svg" executables = ["rustrover"] [dotfiles] # https://www.jetbrains.com/help/rust/directories-used-by-the-ide-to-store-settings-caches-plugins-and-logs.html # — the configuration directory is # %APPDATA%\JetBrains\RustRover on Windows, # ~/Library/Application Support/JetBrains/RustRover on macOS and # ~/.config/JetBrains/RustRover on Linux: the three spellings of # [appData]. The version is part of the directory name, hence the glob, which # a base directory is free to carry. Caches (~/Library/Caches, ~/.cache, # %LOCALAPPDATA%) and logs (~/Library/Logs) sit outside this tree and never # come along. paths = ["[appData]/JetBrains/RustRover*/"] # Same page: on Windows and macOS the plugins directory is `plugins` inside the # configuration directory, while on Linux it lives elsewhere entirely # (~/.local/share/JetBrains/RustRover) and is out of this tree # already. Downloaded plugin jars are installs, not settings. exclude = [ "[appData]/JetBrains/RustRover*/plugins/", ] # https://www.jetbrains.com/help/rust/reference-ide-settings-password-safe.html # — the IDE keeps passwords in the native keychain by default, but the "In # KeePass" option stores them in the database file c.kdbx inside this same # configuration directory. Whenever it exists it is the credential store. It # sits inside a directory `paths` already covers, so a consumer has to let # secret win over the directory. secret = ["[appData]/JetBrains/RustRover*/c.kdbx"] # JetBrains' bundled Settings Sync plugin already carries these through a # JetBrains Account. self_sync = true # No icon: RustRover's logo is not published by theSVG or Simple Icons. # No machine_lines: the settings under options/, keymaps/, colors/ and # codestyles/ are the preferences a developer wants on every machine, and # picking machine-local keys out of the IDE's XML would be guesswork. [commands] format = 1 label = "Open in RustRover" description = "Open a file or project in RustRover. Formatting is a separate sub-form." quality = "ai-draft" base = "fig:rustrover" 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/rustrover.ts" license = "MIT" [[commands.field]] id = "path" label = "File or project" type = "path" position = 0 path = { kind = "any", role = "input" } sources = ["fig"] [[commands.field]] id = "wait" label = "Wait until closed" type = "boolean" option = ["--wait"] sources = ["fig"] [[commands.field]] id = "nosplash" label = "No splash screen" type = "boolean" option = ["nosplash"] sources = ["fig"] [[commands.field]] id = "dont_reopen" label = "Do not reopen projects" type = "boolean" option = ["dontReopenProjects"] sources = ["fig"] [[commands.field]] id = "no_plugins" label = "Skip manually installed plugins" type = "boolean" option = ["disableNonBundledPlugins"] sources = ["fig"] [[commands.task]] id = "open" label = "Open path" fields = ["path", "wait"] required = ["path"] [[commands.group]] id = "basic" label = "Basic" fields = ["path", "wait"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["nosplash", "dont_reopen", "no_plugins"] [[commands.subcommand]] path = ["format"] label = "Format files" description = "Apply code style formatting to files with RustRover." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/rustrover.ts" license = "MIT" [[commands.subcommand.field]] id = "paths" label = "Files or directories" type = "path" position = 0 multiple = true path = { kind = "any", role = "input" } effect = "overwrite" sources = ["fig"] [[commands.subcommand.field]] id = "mask" label = "File masks" type = "string" option = ["-m"] description = "Comma-separated list of file masks." sources = ["fig"] [[commands.subcommand.field]] id = "recursive" label = "Recurse" type = "boolean" option = ["-r"] sources = ["fig"] [[commands.subcommand.field]] id = "dry" label = "Dry run (validate only)" type = "boolean" option = ["-d"] sources = ["fig"] [[commands.subcommand.field]] id = "settings" label = "Code style settings file" type = "path" option = ["-s"] path = { kind = "file", role = "input" } sources = ["fig"] [[commands.subcommand.task]] id = "format" label = "Format" fields = ["paths", "mask", "recursive", "settings"] required = ["paths"] [[commands.subcommand.task]] id = "check" label = "Validate only" fields = ["paths", "recursive", "dry"] required = ["paths", "dry"] set = { dry = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["paths", "mask", "recursive", "dry"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["settings"]