Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
freebsd_instance:
image_family: freebsd-13-2
image_family: freebsd-14-2
task:
install_script: pkg install -y wget git m4 bash autoconf automake sqlite3 gmake curl libarchive pcre2 bzip2
build_script: ./autogen.sh && ./configure && gmake -j3
Expand Down
4 changes: 4 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ Features:
* A `stats.timeseries` PRQL function has been added to
make it easier to perform an aggregation over buckets
of time.
* Added the `:pipe-entry-to` command that pipes all
lines of the focused log message to the given shell
command, complementing `:pipe-to` (marked lines) and
`:pipe-line-to` (focused line).

Breaking changes:
* Mouse mode is disabled by default again since there
Expand Down
1 change: 1 addition & 0 deletions docs/source/commands.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ an error message in the status bar, like so:
- :code:`:open`
- :code:`:pipe-to`
- :code:`:pipe-line-to`
- :code:`:pipe-entry-to`
- :code:`:redirecto-to`
- :code:`:sh`
- :code:`:write-*-to`
Expand Down
21 changes: 19 additions & 2 deletions src/cmds.io.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1954,10 +1954,12 @@ com_pipe_to(exec_context& ec,
auto* tc = *lnav_data.ld_view_stack.top();
auto bv = combined_user_marks(tc->get_bookmarks());
bool pipe_line_to = (args[0] == "pipe-line-to");
bool pipe_entry_to = (args[0] == "pipe-entry-to");
bool pipe_focused = pipe_line_to || pipe_entry_to;
auto path_v = ec.ec_path_stack;
std::map<std::string, std::string> extra_env;

if (pipe_line_to && tc == &lnav_data.ld_views[LNV_LOG]) {
if (pipe_focused && tc == &lnav_data.ld_views[LNV_LOG]) {
log_data_helper ldh(lnav_data.ld_log_source);
char tmp_str[64];

Expand Down Expand Up @@ -2053,7 +2055,7 @@ com_pipe_to(exec_context& ec,
= ec.ec_pipe_callback(ec, cmdline, child_fds[1].read_end());
}

if (pipe_line_to) {
if (pipe_focused) {
if (tc->get_inner_height() == 0) {
// Nothing to do
} else if (tc == &lnav_data.ld_views[LNV_LOG]) {
Expand Down Expand Up @@ -2440,6 +2442,21 @@ static readline_context::command_t IO_COMMANDS[] = {
.with_example({"To write the focused line to 'sed' for processing",
"sed -e 's/foo/bar/g'"}),
},
{
"pipe-entry-to",
com_pipe_to,

help_text(":pipe-entry-to")
.with_summary("Pipe all lines of the focused log message to the "
"given shell command. Any fields defined by the "
"format will be set as environment variables.")
.with_parameter(
help_text("shell-cmd", "The shell command-line to execute"))
.with_tags({"io"})
.with_example({"To write the focused log message to 'sed' for "
"processing",
"sed -e 's/foo/bar/g'"}),
},
{
"redirect-to",
com_redirect_to,
Expand Down
59 changes: 41 additions & 18 deletions src/internals/cmd-ref.rst

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions src/internals/sql-ref.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1260,7 +1260,7 @@ echoln(*value*)
* **value\*** --- The value to write to the current output file

**See Also**
:ref:`append_to`, :ref:`dot_dump`, :ref:`dot_read`, :ref:`dot_save`, :ref:`echo`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`
:ref:`append_to`, :ref:`dot_dump`, :ref:`dot_read`, :ref:`dot_save`, :ref:`echo`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_entry_to`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`

----

Expand Down Expand Up @@ -4813,7 +4813,7 @@ zeroblob(*N*)
* **table** --- The name of the table to dump

**See Also**
:ref:`append_to`, :ref:`dot_read`, :ref:`dot_save`, :ref:`echo`, :ref:`echoln`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`
:ref:`append_to`, :ref:`dot_read`, :ref:`dot_save`, :ref:`echo`, :ref:`echoln`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_entry_to`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`

----

Expand All @@ -4840,7 +4840,7 @@ zeroblob(*N*)
* **path\*** --- The path to the file to write

**See Also**
:ref:`append_to`, :ref:`dot_dump`, :ref:`dot_save`, :ref:`echo`, :ref:`echoln`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`
:ref:`append_to`, :ref:`dot_dump`, :ref:`dot_save`, :ref:`echo`, :ref:`echoln`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_entry_to`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`

----

Expand All @@ -4856,7 +4856,7 @@ zeroblob(*N*)
* **path\*** --- The path to the file to write

**See Also**
:ref:`append_to`, :ref:`dot_dump`, :ref:`dot_read`, :ref:`echo`, :ref:`echoln`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`
:ref:`append_to`, :ref:`dot_dump`, :ref:`dot_read`, :ref:`echo`, :ref:`echoln`, :ref:`export_session_to`, :ref:`open`, :ref:`pipe_entry_to`, :ref:`pipe_line_to`, :ref:`pipe_to`, :ref:`redirect_to`, :ref:`write_csv_to`, :ref:`write_json_cols_to`, :ref:`write_json_to`, :ref:`write_jsonlines_to`, :ref:`write_raw_to`, :ref:`write_screen_to`, :ref:`write_table_to`, :ref:`write_to`, :ref:`write_view_to`, :ref:`xopen`

----

Expand Down
2 changes: 2 additions & 0 deletions test/expected/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ dist_noinst_DATA = \
test_cmds.sh_5630626e6f68c3d4a2c3e5f27d024df5950b88b5.out \
test_cmds.sh_583e03bfd354014a46bb4bac5d3be680df97f08d.err \
test_cmds.sh_583e03bfd354014a46bb4bac5d3be680df97f08d.out \
test_cmds.sh_59ec63a8dce36b7a5a6e3a47339b4983d54912c5.err \
test_cmds.sh_59ec63a8dce36b7a5a6e3a47339b4983d54912c5.out \
test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err \
test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out \
test_cmds.sh_5d316a16c23059467b7749a69e71416ebb38e09d.err \
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-07-20 22:59:27,672:DEBUG:Hello, Bork!
How are you today?
Loading