id = "volta" name = "Volta" homepage = "https://volta.sh" description = "Volta: JS Toolchains as Code. The Hassle-Free JavaScript Tool Manager." # The V-and-coils mark from Volta's own assets repository — the same mark # the wordmark is built around, on its own so it reads at icon size. icon = "https://raw.githubusercontent.com/volta-cli/assets/main/concepts/tesla-coil/two-coils-straightened-v-only-350x350.png" executables = ["volta"] [dotfiles] # https://docs.volta.sh/advanced/hooks — "Hooks specified in the Volta # directory (~/.volta/hooks.json on Linux/MacOS, %LOCALAPPDATA%\Volta\hooks.json # on Windows) will apply across the entire system"; a project's own # /.volta/hooks.json is not user-level and is not listed. # # crates/volta-layout/src/v3.rs spells out the rest of that directory: # # "cache"/ "bin"/ "log"/ "tmp"/ state, shims and downloads # "tools"/ "inventory"/ "image"/ "shared"/ installed toolchains # "tools"/"user"/"platform.json" the default toolchain # "hooks.json" the hooks file above # "layout.v3" the layout marker # # platform.json is what `volta install node@22` pins — the user's default # toolchain, the same kind of fact as asdf's ~/.tool-versions — so it is listed # beside hooks.json. Everything else is an install or a cache and is left out # by naming the two files rather than the directory. paths = [ "~/.volta/hooks.json", "~/.volta/tools/user/platform.json", "%LOCALAPPDATA%/Volta/hooks.json", "%LOCALAPPDATA%/Volta/tools/user/platform.json", ] exclude = [] # Hooks name registry URLs and templates; platform.json names version numbers. # Neither authenticates anything — Volta downloads from public registries. secret = [] # Both files are read at the start of a shim resolution by a process that then # execs the tool. side_effect = false # No machine_lines: a hook can be `{"bin": "…"}`, a command run to resolve a # version, which would be machine-local when it names an absolute path — but it # is just as often a bare command name, and a rule on the key would strand the # `template`/`prefix` hooks that are exactly what a team wants shared. [commands] format = 1 label = "Volta" description = "JavaScript tool manager. Forms cover install and pin." quality = "ai-draft" base = "fig:volta" 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/volta.ts" license = "MIT" [[commands.subcommand]] path = ["install"] label = "Install tool" description = "Install tools into your toolchain." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/volta.ts" license = "MIT" [[commands.subcommand.field]] id = "tools" label = "Tools" description = "tool@version, e.g. node@20." type = "string" position = 0 multiple = true min = 1 suggestions = [{ value = "node@lts", label = "node@lts" }, { value = "node@20", label = "node@20" }, { value = "yarn@1", label = "yarn@1" }] sources = ["fig"] [[commands.subcommand.field]] id = "verbose" label = "Verbose" type = "boolean" option = ["--verbose"] sources = ["fig"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet"] sources = ["fig"] [[commands.subcommand.task]] id = "install" label = "Install" fields = ["tools"] required = ["tools"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["tools"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["verbose", "quiet"] [[commands.subcommand]] path = ["pin"] label = "Pin tool" description = "Pin the project's runtime or package manager." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/volta.ts" license = "MIT" [[commands.subcommand.field]] id = "tools" label = "Tools" description = "tool@version, e.g. node@20." type = "string" position = 0 multiple = true min = 1 suggestions = [{ value = "node@lts", label = "node@lts" }, { value = "node@20", label = "node@20" }, { value = "yarn@1", label = "yarn@1" }] sources = ["fig"] [[commands.subcommand.field]] id = "verbose" label = "Verbose" type = "boolean" option = ["--verbose"] sources = ["fig"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet"] sources = ["fig"] [[commands.subcommand.task]] id = "pin" label = "Pin" fields = ["tools"] required = ["tools"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["tools"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["verbose", "quiet"]