blob: 6dd123270bc8fd84df83c33e59a4b2755986deba [file] [log] [blame]
.. _west:
West (Experimental)
###################
The Zephyr project is developing a swiss-army knife command line tool
named ``west``. (Zephyr is an English name for the Greek god of the
west wind.)
West is developed in its own `repository on GitHub`_. A copy is
currently maintained in Zephyr's :file:`scripts/meta/west` directory.
Usage
*****
West's usage is similar to Git's: general options are followed by a
command, which may also take options and arguments::
$ west [common-opts] <command-name> [command-opts] [<command-args>]
Usage guides for specific groups of subcommands are in the following
pages.
.. toctree::
flash-debug.rst
(This list will expand as additional features are developed.)
Planned Features
****************
Additional features are under development for future versions of
Zephyr:
- Building Zephyr images.
- Running Zephyr in emulation.
- Bootloader integration: bootloader-aware image building, signing,
and flashing, as well as building and flashing the bootloader itself.
- Multiple repository support: fetching and updating repositories that
integrate with Zephyr, such as `MCUboot`_, `OpenThread`_ and others.
See `Zephyr issue #6205`_ for more details and discussion.
.. _west-design-constraints:
Design Constraints
******************
West is:
- **Optional**: it is always *possible* to drop back to "raw"
command-line tools, i.e. use Zephyr without using West. It may not
always be *convenient* to do so, however. (If all of West's features
were already conveniently available, there would be no reason to
develop it.)
- **Compatible with CMake**: building, flashing and debugging, and
emulator support will always remain compatible with direct use of
CMake.
- **Cross-platform**: West is written in Python 3, and works on all
platforms supported by Zephyr.
- **Usable as a Library**: whenever possible, West features are
implemented as libraries that can be used standalone in other
programs, along with separate command line interfaces that wrap
them. West itself is a Python package named ``west``; its libraries
are implemented as subpackages.
- **Conservative about features**: no features will be accepted without
strong and compelling motivation.
- **Clearly specified**: West's behavior in cases where it wraps other
commands is clearly specified and documented. This enables
interoperability with third party tools, and means Zephyr developers
can always find out what is happening "under the hood" when using West.
.. _repository on GitHub:
https://github.com/zephyrproject-rtos/west
.. _MCUboot:
https://mcuboot.com/
.. _OpenThread:
https://openthread.io/
.. _Zephyr issue #6205:
https://github.com/zephyrproject-rtos/zephyr/issues/6205