Just is an improvement on Make/Makefiles for people that wish to use it
as a recipe runner rather than a build system.
We are introducing a dependency on it, as it gives us easy ways to run
arbitrarily complex commands in a composable fashion.
In particular, these recipes allow us 5 major gains:
1. Setting our repo's environment consistently (fresh-system, install-bins)
2. Run comprehensive checks on the local tree's code (lint, audit, fmt,
test, test-all, lint-docs)
3. Utility commands for inspecting dependencies (deps, rdeps, udeps),
documentation (docs) or git hygiene (git-branch-prune)
4. Provides extra environment vairables that can be used to control
things like features and profile used when building, which are
missing from Cargo and/or rustc
5. Provides a uniform interface for repo tasks, abstracting over many
different underlying tools
This is the first published version of this crate. Quite a milestone for
me, as I have started work on this library multiple times over the last
3 years, never getting enough traction to find something that worked for
my project goals.
This version contains the lowest level API that will be supported by
this crate: lib/event; which allows callers to directly consume YAML
stream events as the occur, with no help or storage apparatus.
I have some CI/CD issues to figure out -- testing docs, automating
crates.io publishes, improving test spread and speed, adding a recipe
runner (Make/just). After which I'll start working away on the in memory
graph representation of YAML, which will allow me to provide a Value
abstraction for handling arbitrary YAML, similar to serde_json::Value.
Its secondary purpose will be as storage for aliasing trees... during
serde::Deserialization, which will be a feature gated API that may
eventually take the place of serde_yaml.
This commit modifies the former Scalar (now know as ScalarLike) enum to
hide the internal types inside local opaque wrappers. Rather than the
previous struct variants, ScalarLike now takes Eager(Scalar) and
Lazy(ScalarLazy) variants, both of which hide internal types involved.
This commit also removes the ScanResult return types from public view,
converting them to the library level Error type.
We place a small wrapper around all of the arguments provided to
Read::drive(), and return a wrapped error, both of which are opaque to
external libraries.
This type obscures the underlying classifications, providing a stable
enum, Category, for classification.
This doesn't particularly change the various module level errors, though
will will have to implement From<Self> for yary::Error.
I'll also need to make private and public versions of the initializer
functions for fallible public methods that can be used internally, e.g
lib/reader.
This commit surfaces a public API for streaming YAML events from a read
source. It provides callers an Events{} type that can be generated from
any reader::Read implementation -- so for the moment, OwnedReader(s) and
BorrowReader(s) -- via the module functions from_reader() and
from_reader_with(). This type implements IntoIterator, and thus can be
integrated with any iterator based flows, and benefits from the entire,
extensive ecosystem around them.
That said, I expect this to be a relatively unused part of this library
in the long term, being the lowest level public API exposed by this
library.
These define the configuration that library users are allowed to set
when iterating over Events.
It currently only has one meaningful option, O_LAZY which reflects the
behavior exposed by lib/scanner. This will likely change in the future,
if more customization is desired when working with Event streams.
- set default rust version
instead of a folder override, as we always expect to use the provided
version globally per run.
- explicitly declare extra rustup components
rather than implicitly rely on the current defaults