This is slightly undefined, but it's more user-friendly to treat e.g. VISUAL=
the same as $VISUAL being unset. So to use e.g. RUST2RPM_NO_DETECT_PACKAGER,
"RUST2RPM_NO_DETECT_PACKAGER=1" must be used, and "RUST2RPM_NO_DETECT_PACKAGER="
is not enough.
The basic workflow is that very similarly to how we would open an editor to do
manual patching of Cargo.toml, we automatically rewrite the file first. In this
automatic rewrite, for any sections like [target.cfg(…)], we evaluate the
conditional and drop the whole section if the conditional is known to be false.
When the conditional cannot be evaluated because it uses some form that we don't
understand, it is left untouched. But it seems that the conditionals used in
practice don't have too much variety. If parser and evaluator certainly don't
cover all the corner cases, but it might not matter in practice. We can always
fix them later if unsupported cases are found.
Removed dependencies are filter out from [feature] lists:
For example for tokio:
[features]
-net = ["libc", "mio/os-poll", "mio/os-ext", "mio/net", "socket2", "winapi/namedpipeapi"]
+net = ["libc", "mio/os-poll", "mio/os-ext", "mio/net", "socket2"]
If -p was used, after the automatic filtering, the editor is opened for the user
to do further manual patching.
Automatic and manual changes land in separate patches.
Fixes#2.
This is a prerequisite for testing the rendering logic without invoking
the whole program. But I think it also makes it much easier to see what
is going on.
I used slightly non-standard formatting with extra whitespace because
the invocation was hard to rid otherwise.
We also use "md" as short for "markdown", and this abbrevation can be
confusing. It's also weird to use 'md' as the parameter name in an
exported entry point.
The infrastracture to translate the license remains in place.
We can remove it later, when all users are gone. I'm keeping
the behaviour for Mageia unchanged for now. I assume that they'll
want to follow the change in Fedora later too.
We still want to do syntax cleanup with translate_slashes().
Fixes#193.
The code is complicated by passing behaviour options through multiple
levels. This is already hard to read because the names are different
at different levels. Let's just pass args, so that it's easy to add
new options in the future.
I don't have enough energy to do this for all functions, but I'll try
to add some docs as I look at the code. The project is growing and it's
harder to remember what all the parts do.
This new setting works the same way as the `--all-features` CLI flag
when set to `true`. This makes it possible to set it to `true` permanently,
without having to remember to use the CLI flag when running rust2rpm.
Using .rust2rpm.conf is confusing to new users, because they never see
these files in existing packages and are only seeing magic happen.
This commit changes the default location of the configuration file to
./rust2rpm.conf, and will rename existing .rust2rpm.conf or _rust2rpm.conf
files to the new name if they already exist.
I have also added a little more documentation about the config file itself
to the README.
When store_true or store_false are used, the default default changes
from None to a boolean. I didn't know about this, and I wrote the code
to assume args.rpmautospec would be None. rpmautospec detection was
effectively always disabled.
The Fedora Packaging Guidelines are clear on this:
> If the base package name ends with a digit, a single underscore (_)
> MUST be appended to the name, and the version MUST be appended to
> that, in order to avoid confusion over where the name ends and the
> version begins.
>
> If the base package name does not end with a digit, the version MUST
> be directly appended to the package name with no intervening
> separator.
Fixes#180.