Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move from PlantUML to mermaid #1

Merged
merged 3 commits into from
Sep 2, 2022
Merged

Move from PlantUML to mermaid #1

merged 3 commits into from
Sep 2, 2022

Conversation

LukeMathWalker
Copy link
Owner

PlantUML is not natively rendered by GitHub, while mermaid seems to be supported out of the box. That makes it easier for people to browser without having to install or learn how to use new software.

@LukeMathWalker LukeMathWalker marked this pull request as ready for review September 2, 2022 14:08
@LukeMathWalker LukeMathWalker merged commit 1062b9f into main Sep 2, 2022
@LukeMathWalker LukeMathWalker deleted the graphs branch September 2, 2022 14:08
LukeMathWalker added a commit that referenced this pull request Feb 14, 2023
* Convert one diagram into mermaid.

* Convert remaining diagrams to mermaid.

* Fix fences annotations.

Co-authored-by: Luca Palmieri <rust@lpalmieri.com>
LukeMathWalker added a commit that referenced this pull request Mar 1, 2023
…ly used by inputs (#22)

After #21, it is time to work on the unhappy path: users trying to do
things that we don't support.

This PR introduces (and turns green) a test case for a constructor that
has unassigned generic parameters that are exclusively used by its
inputs.

We added an (optional) `GlobalItemId` to `Callable` in order to allow
diagnostics to include a snippet of the definition span for a callable.
LukeMathWalker added a commit that referenced this pull request Mar 1, 2023
…ly used by inputs (#22)

After #21, it is time to work on the unhappy path: users trying to do
things that we don't support.

This PR introduces (and turns green) a test case for a constructor that
has unassigned generic parameters that are exclusively used by its
inputs.

We added an (optional) `GlobalItemId` to `Callable` in order to allow
diagnostics to include a snippet of the definition span for a callable.
LukeMathWalker added a commit that referenced this pull request Jul 3, 2023
Going for a slightly different approach on wrapping middleware: multiple
small PRs rather than getting the whole thing done at once.

This is the first step: defining the API exposed via `Blueprint` and, in
particular, fleshing out the docs and examples.
LukeMathWalker added a commit that referenced this pull request Jan 16, 2024
# What's wrong

For Pavex to work as expected, the version of the CLI used when
compiling a project with `cargo px [...]` must match the version of the
`pavex` library crate used in the project.
Currently, there's no mechanism to ensure this is the case. As a result,
you'll get version mismatches, resulting in confusing errors (see
@m1guelpf in #131).
The problem is even worse if you have multiple Pavex projects, each
using a different library version: you'd have to juggle multiple CLI
versions on your own since they can't all be in the `PATH`.

# The solution

To eliminate the problem, this PR reworks the `pavex` CLI: it is now a
_version manager_.
All the meaty functionality (server SDK generation, project generation)
is moved into another binary, `pavexc` (**pavex** **c**ompiler).
`pavex` introduces the concept of toolchains, in the same vein of
`rustup`. There can be multiple toolchains installed and it'll pick the
most appropriate one for each command:

- For `new`, it'll check the default toolchain. If none has been
defined, it'll use the corresponding version of `pavexc`.
- For `generate`, it'll match the version of `pavex` (the library) used
in the project. If the corresponding `pavexc` toolchain is not
installed, it'll be installed on the fly.

## Missing pieces

The `pavex` CLI needs to grow a few commands to manage toolchains:
`pavex toolchain default set`, `pavex toolchain default show`, `pavex
toolchain list` and something for removal.
Since they are only relevant for `pavex new`, that's deferred to a later
PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant