Experimental plugins

When developing a new plugin, the experimental (or ‘work in progress’) nature of the work is indicated by marking the plugin as experimental.

Mark a plugin as experimental

When defining a plugin function within the plugin lib.rs file, there will be an entry point decorated with ffx_plugin such as:

#[ffx_plugin()]

or

#[ffx_plugin(MyProxy = "fuchsia.example.Service")]

To mark a plugin as experimental and simultaneously declare the token used to enable the experiment, add an initial string parameter. In the following example the tag “zippy” may (or may not) match the plugin command name. The label may be arbitrary, but it's recommended to choose a value that relates to the plugin:

#[ffx_plugin("zippy")]

or

#[ffx_plugin("zippy", MyProxy = "fuchsia.example.Service")]

In both examples above, the plugin will be guarded by a feature token named “zippy”. When users try to execute ffx zippy they will be informed that zippy is experimental, then instructions for enabling the zippy feature will be shown.

After following the instructions to enable zippy, future calls (for that user) will operate as if zippy were not experimental, i.e. they have opted-in to using the zippy feature.