Skip to content

Conversation

@ChristopherBiscardi
Copy link
Contributor

WIP Implementation of "safelists" and "offline manifests"

Background

Skein works by exporting a type registry from Bevy and reading it to generate interfaces in Blender.

TODO

  • python support for skein manifest
  • recursive filtering for dependent types in safelist endpoint

Safelists

#39

Safelists allow users to restrict the components that are exported. For example, if you were working with a group of artists and wanted them to have specific access to all the components in a hypothetical for_blender_usage crate and nothing else, a safelist would allow you to do that. This allows more sophisticated users the ability to offer a specific blender API by selecting crates and specific components.

We're choosing to do this on the rust side of things so that the produced offline manifests and such are comparatively smaller than they otherwise would be and have a better time being checked in to source control.

offline manifests

#40

Skein currently makes use of registry type exports, Default and user-provides presets, and this set of data could grow in the future. Some users want to be able to write a file out at startup with all of the configured information, so that that files can be used as the source of truth instead of requiring a BRP fetch from Blender. This also supports multi-blend-file usecase a bit better as a blend file can try to read a file in when opened, leading to only need to export from Bevy once.

This PR introduces the new SkeinManifest type which defines the versioning information and data that python will read in.

A new write_manifest_and_exit feature will write out a manifest file when enabled. This is also configurable in the Skein plugin options. So you can:

  1. enable the feature (writes the file and exits)
  2. enable the feature and set the skein plugin option to false/true which will then control the write out behavior at runtime. Users can use this to distribute development binaries that can write out the manifest.

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.

2 participants