| % If Bot-Commit+1 vote exists, replace all `need(_)` votes on Code-Review and |
| % Verified with `may(_)` votes. |
| % `ok(_)`s and `reject(_)`s are preserved. |
| % This means that Code-Review and Verified labels are never needed to submit a |
| % change, but may be approved or rejected. |
| submit_filter(In, Out) :- |
| gerrit:commit_label(label('Bot-Commit', 1), _), |
| !, |
| In =.. [submit | A], |
| filter_label('Code-Review', A, B), |
| filter_label('Verified', B, C), |
| Out =.. [submit | C]. |
| % If Bot-Commit+1 is not present, do nothing. |
| submit_filter(In, In). |
| % Replace instances of `label(Name, need(_))` with `label(Name, may(_))` and |
| % leave the rest unchanged. |
| filter_label(_, [], []). |
| filter_label(Name, [label(Name, need(_)) | Ls], [label(Name, may(_)) | Rs]) :- |
| !, |
| filter_label(Name, Ls, Rs). |
| filter_label(Name, [L | Ls], [L | Rs]) :- |
| filter_label(Name, Ls, Rs). |