Problem: by default, when creating an issue, user has to fill everything
from scratch and this is not good.
Solution: add issue templates for `task` and `bug`, refer people to
page for openning new issue in `CONTRIBUTING.md`.
Problem: after recent fix the user has to specify configuration file
even if it is present in the working directory of crossref-verify run.
That's not convenient.
Solutiion: if custom config path is not specified, first try to find
it under common filenames. When configuration file is not found anyway
we now print a warning before falling back to default config.
Problem: latest available LTS resolver is 14.16 and `crossref-verifier`
doesn't compile with it.
Solution: update resolver to 14.16. Newer versions of some packages
are used from now on. I assume that it shouldn't break anything as
long as tests pass.
`req` stopped using `Default` class, that's the only change in the code
I had to make.
Initially the primary use case for this tool in my point of view was
repeated runs for a repository until documentation is valid, thus I've
set checking only local refs as default behaviour (checking external
refs takes way longer).
Another motivation was that I expected CI to have one mandatory job for
local scan and one optional for remote refs scan.
Now I think that there are more reasons to perform full scan by default.
* It occured that in CI we usually want to have all checks optional, so
that someone could temporarily break links on purpose (e.g. in case
of mutually-dependent pull requests).
* First impression is important, and we want to demostrate all the
features of the tool in default run.
* If use case mentioned in the very top actually takes place, one can
add the necessary option, that's fine.
Problem: currently `crossref-verify` executable does not work without
configuration, and user was supposed to use one from the repository if
he does not have its own. This is very inconvenient.
Solution: make executable remember some config and use it by default.
Problem: some comments in PR template only matter when this template
is added to the repo, after that they are useless.
Solution: remove those comments.
Problem: default config is not really smart and seems easier to just
unlicense it, i. e. let everyone do whatever they want with it.
Also it does not have SPDX header (like any other file in this repo,
but that's another story).
Solution: add SPDX header stating that the Unlicense applies.
Make Serokell copyright holder of it, AFAIK @martoon is fine with
that (and I am not sure whether copyright holder matters for
unlicensed files at all).
Problem: for reference starting from `./` anchors are not checked.
Solution: lookup for such references in gathered repo info failed,
stripping `./` resolves the issue.
Problem: there are files which we want to ignore completely,
while others can be references but refs in it we do not want
to check.
Solution: have two different fields in config correspondingly.
When one has several anchors with the same name, github disambiguates them automatically,
but referencesto such anchors stay fragile.
Now when such anchors are referenced then an verification error is dropped.
Also, no more wrong "anchor does not exist" error when a github-dedupicated anchor is
referenced (the link was valid, but since in our vision anchors couldn't be renamed
automatically, we treated those link as invalid).
For instance, reference to `issues` github page is a valid one despite there is no such
file physically in the repository.
Now user can specify list of "existing" virtual files in config.