Expand description
This crate provides the model assembly capability, to merge files into a single in-memory Model
.
A tool can add files one-by-one, or from a directory, and then process them all into a single model. This implementation understands the different registered file extensions so that it can read files in different representations and assemble them seamlessly.
§Example
The following is the simple, and most common, method of using the assembler. This uses the
default FileTypeRegistry
and will search for all models in the set of paths specified in
the environment variable “SMITHY_PATH
”.
use atelier_assembler::ModelAssembler;
use atelier_core::error::Result;
use atelier_core::model::Model;
use std::convert::TryFrom;
// The default constructor will load all paths from the `SMITHY_PATH` environment variable.
let env_assembler = ModelAssembler::default();
let model: Result<Model> = Model::try_from(env_assembler);
For more information, see the Rust Atelier book.
Structs§
- File
Type - A File type, this has a display name and a reader function. The
FileTypeRegistry
uses these to map one ot more file types to reader functions (FileReader
). - File
Type Registry - A mapping from file extension to file type. Note that
FileTypeRegistry::default
will always contain at least mappings for “.json” and “.smithy” file types. Note that file extensions will always be compared in a case insensitive manner. - Model
Assembler - Assemble a single model by merging the sub-models represented by one or more files. The model
assembler uses an instance of
FileTypeRegistry
to determine the correct file mappings to load different representations. It may also scan an environment variable for a set of paths to load models from as well as any specific files or directories added viapush
orpush_str
. - Search
Path - A Search path that can be initialized from an environment variable.
Type Aliases§
- File
Reader - A Function type used to read a particular format into a model. This type is used by the
FileType
.