CLI was slightly adjusted to not use unstable features.
Fortunately, there is no serde magic happening, which allows
us to keep it simple without using a build script.
Even though there is a bug that caues {} to be used in stead of
(),
when exanding macros, which causes syntax errors that we have to
workaround, it's not a real issue.
What's happening additionally is missing hyper macros, which
now have to be expanded manually. Shouldn't be a problem,
pretty-printing when compiling is made for just that ;).
No, it's sad that `include!()` works so badly, it makes
using serde so difficult ... it's no fun i must say.
Just for stable ... I am not sure if it is worth it."
There are no per-program-type docs clean, just made it depend on
docs-all-clean.
Also added the `docs-api|cli` target to the generated per-program-type
make help. It was just missing, even though it existed.
clean-all-docs and clean-all-cli aren't valid targets. The current mako
template causes `make clean` to abend reporting that it can't make these
targets.
Previously we would remove the wrong parameters when attempting to
remove only those parameters that have been used in the URL
substitution.
The code we have now is more idiomatic and appears to be removing the
correct parameters.
Closes#114
[skip ci]
We save about 30% of CLI code just because we offload the work of
settings structures into serde, building a generic `json::Value` to
contain all the data, and then let serde do the deserialization for us.
All we need for that is some information we let the generator provide
and translate it into the runtime.
Closes#111
However, we don't set the correct field names yet, and are lacking
a remapping of CLI field names to struct field names before any
testing makes sense.
* recurively drill down a mutable, recursive enumeration, without borrow
checker issues. The obvious solution doesn't work, but should.
Stackoverflow ?
* infrastructure to set actual value, with support for ararys, pods and
hashmaps
Previously we only knew the type as string, now we have enums and
additional type information, like whether or not it's a POD.
However, borrow-checker doesn't like the current code, will need more
work.
Previously we would set static structures manully, using complex cases
and utility functions. Now we setup the foundation to allow setting
a generic `json::value::Value` instead, which can later be deserialized
into the target structure.
Related to #111
* Vec::add was removed ... which forces me to write 4 lines instead of
one very readable one :(.
Not everything is to the better here, even though I can imagine they
did it to prevent people from thinking this is a cheap operation.
[skip ci]
That way, it's easy to obtain the respective precompiled binary, as
well as seeing the source-code.
Overall, it makes promoting the tools easier as the CLI docs can be
linked directly.
Closes#108
[skip ci]
Previously, they contained the parent directory, which wasn't intended
and was different from the plain-layout dictated by the linux version
of the script.
[skip ci]
A fully untested utility script allows to unpack a tar file previously
created from `*-depoly.sh` scripts to a suitable location to be
compatible with the downloads links we generate in the documentation
index.
Related to #107
[skip ci]
All assets are configured via shared.yaml and are located elsewhere in
the web. This could lead to broken assets at some point, but I am just
risking it for know, knowing that it's easily done to have local
resources.
Closes#106
[skip ci]
Previously we would define information about the program types
in two places, once for the index, and once per program type.
Now within the index.html, we just load the respective program type
information to have access to the latest at all times.
Closes#104
[skip ci]
Previously you would only see "BadRequest ... " without the information
that would actually help you to understand what the cause of the issue
is.
Now we will print all the information we have, accordingly, which
greatly improves usability.
Closes#103
[skip ci]
That way, whenever the extended help of a method (e.g. apis get-rest)
is queried, you can easily jump to the online docs to get details about
required data-structures or parameters for instance.
[skip ci]
Without all that clutter, it's so much more enjoyable to read the
output.
The implementation is based on a suggestion of @erickt, which is
converts into a json::Value (able to represent any json structure),
on which the filtering is applied.
If we should ever implement pretty-printing in json-tools, we might
still consider using these capabilities instead, as we would avoid
building potentially large datastructures, all we would need is
a sufficiently large destination buffer which is a single alloc and
a consecutive region in memory.
Closes#102
[skip ci]
Previously reserialization of token streams with removed null values
was performed on a byte-per-byte basis, which was quite inefficient
to say the least.
Now it uses `io::copy` to copy in chunks of 65kb, which makes out
our throughput and should deliver about 150MB/s at least.
Some servers, like youtube, reject null values possibly thanks to
the reliance on parts. Now we are filtering them (in a very inefficient,
but working way), which seems to be fine with the servers.
Effectively, we seem to be able now to upload videos ... .
More testing required !
Turn off default features to disable overly red first version
of otherwise very promising ascii-coloring support.
It's good to see that thanks to yaml, that flexibility is easily
achieved without altering any generator code.