=head1 NAME

lei-p2q - use a patch to generate a lei-q query

=head1 SYNOPSIS

lei p2q [OPTIONS] (FILE|COMMIT)

lei p2q [OPTIONS] (--stdin|-)

=head1 DESCRIPTION

Given a patch, create a query that can be fed on stdin to L<lei-q(1)>.
This is useful for mapping the patch to associated messages of an
inbox.

The patch can be provided on stdin or as a file.  Alternatively, when
an argument is given that does not point to an existing file, it is
taken as a reference to a commit in the current git repository, and
L<git-format-patch(1)> is used to generate the patch.

=head1 OPTIONS

=over

=item -w PREFIX[,PREFIX]

=item --want=PREFIX[,PREFIX]

Search prefixes to use.  C<dfpost> (post-image git blob ID) and C<dfn>
(file names from the diff) are the most useful.  Other available
values are C<dfa>, C<dfb>, C<dfctx>, C<dfhh>, and C<dfpre>.

=for comment
TODO: Put a table of prefixes somewhere and reference that (at least
here and in lei-q)?

Appending an integer to C<dfpost> or C<dfpre> indicates a minimum ID
length, and the generated query will be for that value up through the
default abbreviation length.  For example, if the repository's
C<core.abbrev> is set to C<auto> and git calculates the default
abbreviation length as 7, C<dfpost6> will expand a post-image blob ID
of e7b4b32 (seven characters) into C<dfpost:e7b4b32 OR dfpost:e7b4b3>.

This option may be given multiple times.

Default: C<dfpost7>

=item --stdin

Read message from stdin.  This is implicit if no arguments are given
and stdin is a pipe or regular file.

=item --debug

Dump output that shows the information collected for every prefix.
This information can be useful for seeing how a patch is processed,
but the format should not be considered stable.

=item --uri

URI escape output for interacting with HTTP(S) public-inbox instances.

=item -q

=item --quiet

Suppress feedback messages.

=back

=head1 EXAMPLES

  # to search for all threads which touch a given thread:
  lei p2q $COMMIT_OID | lei q -t -o /tmp/results

  # to view results on a remote HTTP(S) public-inbox instance
  $BROWSER https://example.com/pub-inbox/?q=$(lei p2q --uri $COMMIT_OID)

  # to view unapplied patches for a given $FILE from the past year:
  echo \( rt:last.year.. AND dfn:$FILE \) AND NOT \( \
	$(git log -p --pretty=mboxrd --since=last.year $FILE |
		lei p2q -F mboxrd )
	\) | lei q -o /tmp/unapplied

=head1 CONTACT

Feedback welcome via plain-text mail to L<mailto:meta@public-inbox.org>

The mail archives are hosted at L<https://public-inbox.org/meta/> and
L<http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>

=head1 COPYRIGHT

Copyright all contributors L<mailto:meta@public-inbox.org>

License: AGPL-3.0+ L<https://www.gnu.org/licenses/agpl-3.0.txt>

=head1 SEE ALSO

L<lei-q(1)>
