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

Engines #59

Closed
arctic-hen7 opened this issue Oct 10, 2021 · 1 comment
Closed

Engines #59

arctic-hen7 opened this issue Oct 10, 2021 · 1 comment
Assignees
Labels
C-docs Category: documentation C-enhancement Category: enhancement D-hard Difficulty: hard P-low Priority: low S-in-design Status: in design
Milestone

Comments

@arctic-hen7
Copy link
Member

Is your feature request related to a problem? Please describe.
In some cases, no amount of plugin magic will be able to solve a problem effectively, and significant code changes need to be made. An example would be ditching the Actix Web integration entirely for something powered by a different system, while still supporting other plugins. In this case, the .perseus/ directory should be replaced entirely with a custom directory, which should work (somewhat) with plugins.

Describe the solution you'd like
Perseus should have a concept of custom engines, which finally gives a name to the stuff in .perseus/. An engine is responsible for tying together all the stuff from the various Perseus crates into a functional app, and it has access to the user's code (hence enabling define_app!). Engines should be changeable, and they should be able to instruct the CLI to operate in different ways. Each engine should declare a JSON file that tells the CLI what each of its commands should do.

Describe alternatives you've considered
Control plugins, but they're not amenable to major infrastructural changes, which would be better handled by whole-directory replacements.

Additional context
This will be a very large change, and will be the main focus of v0.4.0. Until then, it'll be kept open as a tracking issue.

@arctic-hen7 arctic-hen7 self-assigned this Oct 10, 2021
@arctic-hen7 arctic-hen7 added C-docs Category: documentation C-enhancement Category: enhancement D-hard Difficulty: hard P-low Priority: low S-in-design Status: in design labels Oct 10, 2021
@arctic-hen7 arctic-hen7 added this to the v0.4.0 milestone Oct 10, 2021
@arctic-hen7
Copy link
Member Author

Thinking more about this, the only changes needed will be to the CLI, which will just need to support some way of pulling in an alternative directory, probably from some Git source. In theory then, this isn't a breaking change...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-docs Category: documentation C-enhancement Category: enhancement D-hard Difficulty: hard P-low Priority: low S-in-design Status: in design
Projects
None yet
Development

No branches or pull requests

1 participant