FPrime Dictionary Support
- Tickets addressed: Closes #1529
- Review: By commit
- Merge strategy: Merge (no squash)
Description
Frontend PR: https://github.com/NASA-AMMOS/aerie-ui/pull/1447
This PR introduces a plugin system for the sequencing server in efforts for Seq 2.0:
Plugin loader: A flexible plugin loader has been added to support various dictionary parsers. By default, the AMPCS dictionary parser is loaded from /ampcs-dictionary-parser/ampcs-parser.js.
Plugin manager: The PluginManager has been implemented to manage the loaded parsers and their use in dictionary uploads.
Dictionary parsing: Dictionary uploads now leverage the parsers provided by the PluginManager, allowing for more diverse dictionary formats.
Nested repeat arguments: Support for nested repeat arguments has been added to the eDSL generation, enabling better handling of Fprime dictionaries. Sequence expansion is experimental with FPrime dictionaries
New environment variable: A new environment variable has been introduced to specify the path to a custom dictionary parser, providing flexibility in parser selection.
Dictionary parser plugins: Two new plugins have been created:
-
AMPCS Dictionary Parser Plugin: This plugin moves the parsing code from the sequencing server into a separate Node.js project, built using Gradlew assemble.
-
FPrime Dictionary Parser Plugin: This plugin is also a Node.js project, built using
gradlew assemblefrom the sequencing server.
Sequencing server configuration: The sequencing server has been configured to build the Aerie-supported dictionary parser plugins.
Testing:
- In the docker-compose file uncomment line DICTIONARY_PARSER_PLUGIN to use the FPrime parser
- Build the sequencing server
./gradlew sequence-server:clean; ./gradlew sequencing-server:assemble; - Destroy and Rebuild the sequencing server container
- Ensure you use the UI branch linked to this PR.
- You can now upload the FPrime dictionary via the UI under the 'Dictionary Section'.
./sequencing-server/plugins/fprime-dictionary-parser/test/dictionary/RefTopologyDictionary.json - Git Clone the aerie-fprime-adaptation and build the adaptation. Use the readme
- Upload the adaptation via the UI under the 'Dictionary Section'
- Make a Parcel containing the FPrime dictionary and adaptation
- With the Sequence Editor, create a workspace, and new sequence
- Select the Parcel within the editor that contains the Fprime and Adatapion
- Play around with the editor and see that the output generates an FPrime sequence.
- Export and import a sequence to verify round-tripping.
Verification
Still got to update e2e test...
Quality Gate passed
Issues
0 New issues
0 Accepted issues
Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code