id = "west" name = "west" homepage = "https://docs.zephyrproject.org/latest/develop/west/" description = "Zephyr Project meta-tool." executables = ["west"] [dotfiles] # Zephyr's west configuration documentation specifies ~/.westconfig as the # default global file and $XDG_CONFIG_HOME/west/config when XDG_CONFIG_HOME is # set. The project-local .west/config is intentionally not a user-level path. # https://docs.zephyrproject.org/latest/develop/west/config.html paths = ["~/.westconfig", "[configHome]/west/config"] exclude = [] secret = [] [commands] format = 1 label = "West" description = "Common west jobs: create a workspace, update projects, build a Zephyr application. Flash, debug, sysbuild and CMake pass-through arguments are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand]] path = ["init"] label = "Create a workspace" description = "Clone a manifest repository into a new west workspace." [[commands.subcommand.source]] id = "docs" kind = "manual" url = "https://docs.zephyrproject.org/latest/develop/west/built-in.html" revision = "2026-10-27" evidence = """ west init [-m URL] [--mr REVISION] [--mf FILE] [directory] west init -l [--mf FILE] directory west init -m https://github.com/zephyrproject-rtos/zephyr --mr v1.14.0 zp """ [[commands.subcommand.field]] id = "manifest_url" label = "Manifest repository URL" type = "url" option = ["-m"] sources = ["docs"] [[commands.subcommand.field]] id = "manifest_rev" label = "Manifest revision" type = "string" option = ["--mr"] sources = ["docs"] [[commands.subcommand.field]] id = "manifest_file" label = "Manifest file" type = "string" option = ["--mf"] sources = ["docs"] [[commands.subcommand.field]] id = "local" label = "Use an existing local manifest repository" type = "boolean" option = ["-l"] sources = ["docs"] [[commands.subcommand.field]] id = "directory" label = "Directory" type = "path" path = { kind = "directory", role = "output" } position = 0 sources = ["docs"] [[commands.subcommand.task]] id = "clone" label = "Clone a manifest" fields = ["manifest_url", "manifest_rev", "directory"] required = ["directory"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["manifest_url", "manifest_rev", "manifest_file", "local", "directory"] [[commands.subcommand]] path = ["update"] label = "Update projects" description = "Update the projects listed in the manifest." [[commands.subcommand.source]] id = "docs" kind = "manual" url = "https://docs.zephyrproject.org/latest/develop/west/built-in.html" revision = "2026-10-27" evidence = """ west update [-f {always,smart}] [-k] [-r] [--group-filter FILTER] [--stats] [PROJECT ...] """ [[commands.subcommand.field]] id = "fetch" label = "Fetch policy" type = "enum" option = ["-f"] choices = [ { value = "always", label = "Always" }, { value = "smart", label = "Smart" }, ] sources = ["docs"] [[commands.subcommand.field]] id = "keep_descendants" label = "Keep descendant branches" type = "boolean" option = ["-k"] sources = ["docs"] [[commands.subcommand.field]] id = "rebase" label = "Rebase instead of detaching" type = "boolean" option = ["-r"] sources = ["docs"] [[commands.subcommand.field]] id = "stats" label = "Print statistics" type = "boolean" option = ["--stats"] sources = ["docs"] [[commands.subcommand.field]] id = "projects" label = "Projects" type = "string" position = 0 multiple = true sources = ["docs"] [[commands.subcommand.task]] id = "update" label = "Update all projects" fields = [] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["fetch", "keep_descendants", "rebase", "stats", "projects"] [[commands.subcommand]] path = ["build"] label = "Build an application" description = "Build a Zephyr application for a board." [[commands.subcommand.source]] id = "docs" kind = "manual" url = "https://docs.zephyrproject.org/latest/develop/west/build-flash-debug.html" revision = "2026-10-27" evidence = """ west build -b path/to/source/directory west build -b --build-dir path/to/build/directory west build -b qemu_x86 -t run samples/hello_world west build -p -b reel_board samples/hello_world west build -p=always -b reel_board samples/hello_world west build -c """ [[commands.subcommand.field]] id = "board" label = "Board" type = "string" option = ["-b"] sources = ["docs"] [[commands.subcommand.field]] id = "build_dir" label = "Build directory" type = "path" path = { kind = "directory", role = "output" } option = ["--build-dir", "-d"] sources = ["docs"] [[commands.subcommand.field]] id = "target" label = "Build target" type = "string" option = ["-t"] suggestions = [ { value = "run", label = "run" }, { value = "pristine", label = "pristine" }, { value = "help", label = "help" }, ] sources = ["docs"] [[commands.subcommand.field]] id = "pristine" label = "Pristine build" type = "boolean" option = ["-p"] sources = ["docs"] [[commands.subcommand.field]] id = "cmake" label = "Force CMake re-run" type = "boolean" option = ["-c"] sources = ["docs"] [[commands.subcommand.field]] id = "source_dir" label = "Source directory" type = "path" path = { kind = "directory", role = "input" } position = 0 sources = ["docs"] [[commands.subcommand.task]] id = "build" label = "Build for a board" fields = ["board", "source_dir"] required = ["board"] [[commands.subcommand.task]] id = "clean_build" label = "Pristine build" fields = ["board", "pristine", "source_dir"] required = ["board"] set = { pristine = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["board", "source_dir", "pristine"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["build_dir", "target", "cmake"]