diff options
| author | Loek Le Blansch <loek.le-blansch.pv@renesas.com> | 2025-10-28 15:02:57 +0100 |
|---|---|---|
| committer | Loek Le Blansch <loek.le-blansch.pv@renesas.com> | 2025-10-28 15:02:57 +0100 |
| commit | edc7fa6838f700ab51f4f7ba1820b412eed66888 (patch) | |
| tree | 08196ae76df8e3ffbc2cd188291c6e67d1404557 /doc/dev/processor.rst | |
| parent | e9e118561710202de33a456b2c8d0a6d37e29cc9 (diff) | |
more documentation
Diffstat (limited to 'doc/dev/processor.rst')
| -rw-r--r-- | doc/dev/processor.rst | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/doc/dev/processor.rst b/doc/dev/processor.rst index 077c2bf..0a19ab8 100644 --- a/doc/dev/processor.rst +++ b/doc/dev/processor.rst @@ -1,14 +1,156 @@ +.. _processors: + +########## +Processors +########## + +This page lists all built-in processor types along with descriptions of what they do and which options they take. +On this page, **output** refers to what the processor returns, while **input** refers to how the processor treats its input. +This input is either (a) the content of the patchset file for the first processor, or (b) the output received from the previous processor. +**Arguments** are any options explicitly given to the processor through the filename, e.g. ``filename#processor,arg,arg2=value,arg3#processor2``. +Note that some processors may take positional arguments, while others may use key/value based options instead. + +.. _process_id: + +******** Identity ******** +The identity processor is used to "touch" files or add arbitrary identifiers to patchset source filenames through its arguments. + +.. list-table:: + :stub-columns: 1 + + * - Class + - :any:`ProcessIdentity` + * - Identifier + - ``id`` + +Input + Ignored. + +Output + The *content* of the target file. + + .. note:: + + Changing the patchset input's mode *will* affect the target file mode! + +Arguments + Any arguments passed to this processor are ignored. + +.. _process_cocci: + +********** Coccinelle ********** +The Coccinelle processor uses Coccinelle to apply patch(es) in the SmPL (Semantic Patch Language) format. + +.. important:: + + In order to use this processor, Coccinelle must be installed and ``spatch`` must be available in ``$PATH``. + +.. list-table:: + :stub-columns: 1 + + * - Class + - :any:`ProcessCoccinelle` + * - Identifier + - ``cocci`` + +Input + Coccinelle's SmPL input. + +Output + The contents of the target file after being processed by Coccinelle (not the diff returned by Coccinelle). + +Arguments + Reserved. + +.. _process_jinja: + +************** Jinja template ************** +The Jinja processor passes the inputs through the Jinja2 templating engine. + +.. note:: + + Template variables are generated through the :any:`get_template_vars <ProcessJinja2.get_template_vars>` method. + This method returns an empty dict by default, and is meant to be implemented by implementing a custom class that derives from ProcessJinja2 and registering it through the :ref:`configuration file <ptconfig>`. + +.. list-table:: + :stub-columns: 1 + + * - Class + - :any:`ProcessJinja2` + * - Identifier + - ``jinja`` + +Input + Jinja template code. + +Output + The input after being processed by Jinja. + +Arguments + Reserved. + +.. _process_exe: + +********** Executable ********** +The executable processor runs the input as an executable, passes the target file to its standard input, and returns its standard output. + +.. list-table:: + :stub-columns: 1 + + * - Class + - :any:`ProcessExec` + * - Identifier + - ``exec`` + +Input + Executable script. + + .. important:: + + The executable must contain a shebang line to specify what interpreter to use. + +Output + Any content written to the standard output by the executable. + +Arguments + Reserved. + +.. _process_merge: + +***** Merge ***** + +The merge processor merges the input with the target file, such that changes are combined with the target instead of replacing the target. + +.. list-table:: + :stub-columns: 1 + + * - Class + - :any:`ProcessMerge` + * - Identifier + - ``merge`` + +Input + Content to merge. + +Output + Merged changes. + +Arguments (positional) + 1. Merge strategy: + + ``ignore`` + Appends all lines from the input to the output excluding any lines already present in the output. |