aboutsummaryrefslogtreecommitdiff
path: root/doc/dev/processor.rst
blob: 0a19ab89d440355963e5ecc3ba90234b0333cf85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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.