Age | Commit message (Collapse) | Author |
|
|
|
|
|
This persists the REPL history across program restarts.
The code should probably be cleaned up a bit more, the error handling in
this one is a bit all over the place. This is because we don't want to
make it a hard error in case the history cannot be saved.
|
|
Since we now also have a manpage to distribute, simply having the
executable file on its own is no longer really a viable distribution
option for binary builds.
This script makes sure that a .tar.gz archive is built, which not only
reduces the space and bandwidth needed, but also allows us to include
the manpage/HTML help.
|
|
Even though there are not a lot of tests currently, it's good to get
started and at least get the basic compilation/clippy errors as well.
|
|
|
|
|
|
With evtclib being on crates.io now (and generally, being available
publicly through git), there is no longer a need to have a copy of the
evtclib repository in this repository. The main reason was that evtclib
was private when I started it, so the easiest way to include it was
through a git submodule. That reason is no longer valid.
If we really *need* to use the git version, it is also better to just
point Cargo to the repository and let it deal with keeping the
repository up-to-date, rather than using git submodules.
This commit also updates Cargo.lock, so there is a bit of noise from
also adding ctrlc as a dependency.
|
|
If we use +, then the -- is turned into – instead of staying like this.
That is not what we want.
|
|
This is not yet perfect, as it seems to still execute all queued threads
just to immediately exit them, so maybe we should try and see if we can
"clear" the rayon queue. But it's a good start, and the ctrlc crate
seems to work well for this job.
|
|
This is the first version of a raidgrep manpage. It is written in
asciidoc and can be converted to a Linux manpage by using
a2x -f manpage raidgrep.1.asciidoc
This will produce a file called raidgrep.1, which is the manpage:
man -l raidgrep.1
Alternatively, you can also generate a nice HTML page, suitable for
online-hosting or non-Linux-systems:
asciidoc raidgrep.1.asciidoc
will produce raidgrep.1.html.
|
|
First of all, this allows : to be part of a word. This has been added
because the account names start with a colon, so -player :Dunje should
work.
Furthermore, the re-quoting now also quotes strings that contain a .+*,
as those are characters usually used in regular expressions. A command
line like
raidgrep -- -player "G.dric"
should work, so we either have to re-quote words with a dot, or allow
the dot to be part of a (lexical) word as well. For now, we're
re-quoting it, but if it turns out to be too troublesome, we might
change that.
|
|
This has the benefit that it removes the quotes, and it works better on
Windows, where double slashes were used.
|
|
This allows the date-based filters to work much faster.
|
|
This allows us to attach some additional metadata that is not found in
the PartialEvtc otherwise, such as the file name.
|
|
They are usually within minutes of each other, but this has two
advantages:
1. The output is consistent with the filename (and probably the file
creation date, if it has been preserved)
2. Due to 1., this means we can use the filename to get the timestamp
faster than parsing the file.
|
|
As it turns out, the "local timestamp" as advertised by arcdps is a bit
misleading, because the timestamp is still in UTC. The "local" refers to
the fact that it can lag behind the server timestamp a bit (but usually
they seem to be within +-1 of each other), not that the timestamp is in
the local timezone.
This makes date handling a bit harder for raidgrep, but thanks to
chrono, not by much. The idea is that we simply deal with Utc pretty
much everywhere, except at the user boundary. This means that
1. Input timestamps for -before and -after are converted to Utc right
after input
2. When outputting, we convert to a local timestamp first
This makes the output consistent with the filenames now (and the "wall
time" that the player saw).
|
|
|
|
|
|
|
|
If the boss is unknown, we exclude the log - that is how
BossFilter::filter operates, and it is probably what the user wants if
they specify a -boss filter. However, in filter_early, the default for
unknown bosses was to return Inclusion::Include, which is not consistent
with filter. That lead to some logs being included, parsed and then
thrown away again.
This change makes the behaviour for unknown bosses between filter_early
and filter consistent, and therefore speeds up the search if -boss is
used.
|
|
Everybody calls bosses by different names (Soulless Horror vs Desmina,
Super Kodan Brothers, ...), so it might be good to have a list ready in
the help message.
Other names can still be used, but those are the end-user documented
ones now.
|
|
With evtclib 0.2, every boss has at least one name without space, so
every boss can be used. Still, for completeness's and consistency's
sake, we want to allow users to also specify boss names with spaces in
them. For example, if we print "Qadim the Peerless" as the name of the
boss, we might expect
raidgrep -- -boss "Qadim the Peerless"
to work (instead of -boss qadimp). Therefore, we now allow boss names to
be quoted, so that we can properly persist the whitespace.
|
|
|
|
|
|
This does increase the build times, but it makes sure the binaries are a
bit smaller (especially a gain for the Windows binary). In addition, it
removes librt, which is unneeded and gave warnings in namcap.
|
|
|
|
We already have license set, so no need for license-file.
|
|
|
|
|
|
|
|
|
|
|
|
The new filter system (includes both the internal rewrite and the
command line parsing) is now being included in master. This gives a lot
more flexibility.
|
|
|
|
Having a ::new on each of the filter types was a bit weird, especially
because we returned Box<dyn ...> instead of Self (and clippy rightfully
complained). With this patch, we now have a bunch of normal functions,
and we don't show to the outside how a filter is actually implemented
(or what struct is behind it).
|
|
Since our predicates start with -, this sounds like a good heuristic to
prevent something like "raidgrep -- -player" from silently succeeding
but not doing what the user had intended. In this case, we want the
parse error to show and not treat "-player" as a regex.
|
|
|
|
First, this commit adds a shortcut if only a single argument is given
that can be parsed as a regex. This is to retain the old behaviour of
"raidgrep NAME" just working, without needing to specify -player or
anything.
Secondly, this also re-wraps arguments with spaces (unless there's only
one argument in total). This means that the following should work:
raidgrep -- -player "Godric Gobbledygook"
instead of either
raidgrep -- '-player "Godric Gobbledygook"'
raidgrep -- -player '"Godric Gobbledygook"'
(notice the extra quotes).
|
|
|
|
Sadly, structopt always displays this, despite the documentation stating
that it should be hidden when the user uses -h (instead of --help). It
seems like this is a bug in clap, which might get fixed with clap 3.0.
|
|
This gives us a history, nicer editing capabilities and the possibility
to add completion in the future.
|
|
|
|
If we don't allow the higher-tier on the left side, we cannot chain
multiple or/and on the same level. Since or is associative, we shouldn't
expect the user to write (... or (... or ...)) and instead provide the
flattened version as well.
|
|
Otherwise they'd get tokenized as word and we couldn't build
conjunctions/disjunctions.
|
|
|
|
This method is not perfect yet, because
1. The items are not documented as they were before
2. You need to separate the args with --, otherwise Clap tries to parse
them as optional flags
This should be fixed (especially the documentation part) before merging
into master.
|
|
|
|
|
|
It's nice if you can print out the filter tree for debugging, so we're
requireing filters to be Debug now.
|