Pyjoyment.Command.Author.generate.plugin - Plugin generator command

Usage: APPLICATION generate plugin [OPTIONS] [NAME]

  pyjo generate plugin
  pyjo generate plugin AliceSearch
  pyjo generate plugin -f MyApp.Ext.Test

Options:
  -f, --full   Do not prepend "Pyjoyment.Plugin."
  -h, --help   Show this summary of available options

Pyjoyment.Command.Author.generate.plugin generates directory structures for fully functional Pyjoyment plugins: a distribution with pyproject.toml, which builds with hatchling, and a test, which uv run python -m Pyjo.Prove -l -r t runs, as does uv run pytest, with pytest of the dependency group dev. The module of a plugin is in the namespace Pyjoyment.Plugin, which the distribution adds to without the __init__.py files of the namespace. AGENTS.md, which CLAUDE.md imports, tells a coding agent how the plugin is made, tested and built, and where the skills of Pyjoyment are.

This is a core command, that means it is always enabled and its code a good example for learning to build new commands, you’re welcome to fork it.

See Pyjoyment.Commands for a list of commands that are available by default.

See also

Pyjoyment, https://mojolicious.org.

Ported from Mojolicious::Command::Author::generate::plugin of Mojolicious 9.49.

Classes

class Pyjoyment.Command.Author.generate.plugin.Pyjoyment_Command_Author_generate_plugin(**kwargs: Any)[source]

Pyjoyment.Command.Author.generate.plugin inherits all attributes and methods from Pyjoyment.Command and implements the following new ones.

description = 'Generate Pyjoyment plugin directory structure'
description = plugin.description
plugin.description = 'Foo'

Short description of this command, used for the command list.

run(*args: str) → None[source]
plugin.run(*sys.argv[1:])

Run this command.

usage = 'Usage: APPLICATION generate plugin [OPTIONS] [NAME]\n\n  pyjo generate plugin\n  pyjo generate plugin AliceSearch\n  pyjo generate plugin -f MyApp.Ext.Test\n\nOptions:\n  -f, --full   Do not prepend "Pyjoyment.Plugin."\n  -h, --help   Show this summary of available options\n'
usage = plugin.usage
plugin.usage = 'Foo'

Usage information for this command, used for the help screen.