Rust CLI tools for the Simple Domain Modeling Language (SDML)
OTHER License
#+TITLE: Rust SDML #+AUTHOR: Simon Johnston #+EMAIL: [email protected] #+LANGUAGE: en #+STARTUP: overview hidestars inlineimages entitiespretty #+OPTIONS: author:nil created:nil creator:nil date:nil email:nil num:3 toc:nil
[[https://raw.githubusercontent.com/sdm-lang/.github/main/profile/horizontal-text.svg]]
Rust Library and Tools for the Simple Domain Modeling Language (SDML).
[[https://opensource.org/licenses/Apache-2.0][https://img.shields.io/badge/License-Apache_2.0-blue.svg]] [[https://github.com/johnstonskj/rust-sdml/actions/workflows/rust.yml][https://github.com/johnstonskj/rust-sdml/actions/workflows/rust.yml/badge.svg]] [[https://github.com/johnstonskj/rust-sdml/actions/workflows/security-audit.yml][https://github.com/johnstonskj/rust-sdml/actions/workflows/security-audit.yml/badge.svg]] [[https://codecov.io/gh/johnstonskj/rust-sdml][https://codecov.io/gh/johnstonskj/rust-sdml/branch/main/graph/badge.svg?token=1HGN6M4KIT]] [[https://github.com/johnstonskj/rust-sdml/stargazers][https://img.shields.io/github/stars/johnstonskj/rust-sdml.svg]]
This project's intent is to provide an idiomatic implementation of the in-memory model, parser, generators, and the CLI tool. The following figure shows the usage and relationships of the packages in this workspace.
#+CAPTION: Package Organization #+BEGIN_EXAMPLE ╭───────╮ │ CLI │ ╔══ │ crate │ ══╗ ║ ╰───────╯ ║ ┌╌╌╌╌╌╌╌╌┐ V V ┆ ┆ ╭───────╮ ╭──────────╮ Formatted Source ┆ source ┆ ══> │ parse │ ══> │ generate │ ══> RDF Representation ┆ file ┆ ╭───│ crate │───────│ crate │───╮ Documentation ┆ ┆ │ ╰───────╯ ╰──────────╯ │ Diagrams └╌╌╌╌╌╌╌╌┘ │ core/errors crate │ ╰──────────────────────────────────╯ ┌───────┐ ⋀ │ other │ ║ │ tools │ ════════════════╝ └───────┘ #+END_EXAMPLE
To install the command-line tool on MacOS or Linux use the Homebrew package manager and the SDML Tap.
#+BEGIN_SRC sh :exports code :eval never ❯ brew install sdm-lang/sdml/sdml #+END_SRC
This [[./sdml-errors/README.org][package]] contains the common =Error= type as well as a diagnostic set for reporting language parse and model issues.
[[https://crates.io/crates/sdml-errors][https://img.shields.io/crates/v/sdml-errors.svg]] [[https://docs.rs/sdml-errors][https://img.shields.io/docsrs/sdml-errors.svg]]
** core
This [[./sdml-core/README.org][package]] contains the in-memory model of an sdml module, the major component of the project itself. It also has
traits (ModuleLoader
, ModuleResolver
, ModuleStore
) that are required by packages that follow.
[[https://crates.io/crates/sdml_core][https://img.shields.io/crates/v/sdml_core.svg]] [[https://docs.rs/sdml_core][https://img.shields.io/docsrs/sdml-core.svg]]
** parse
This [[./sdml-parse/README.org][package]] contains the bridge from the tree-sitter SDML library to the in-memory model in =sdml_core=.
[[https://crates.io/crates/sdml_parse][https://img.shields.io/crates/v/sdml_parse.svg]] [[https://docs.rs/sdml_parse][https://img.shields.io/docsrs/sdml-parse.svg]]
** generate
This [[./sdml-generate/README.org][package]] contains a set of tools for generating alternative representations of an in-memory module as well as related actions for the CLI.
[[https://crates.io/crates/sdml_generate][https://img.shields.io/crates/v/sdml_generate.svg]] [[https://docs.rs/sdml_generate][https://img.shields.io/docsrs/sdml-generate.svg]]
** cli
This [[./sdml-cli/README.org][package]] contains the entry-point for the command-line tool.
[[https://crates.io/crates/sdml_cli][https://img.shields.io/crates/v/sdml_cli.svg]]
This repository, and all contents, are released under the Apache License, Version 2.0. See [[./LICENSE][LICENSE]] file for details.
For information on contributing, see [[./doc/contributing.org][How to Contribute]], and the [[./doc/code_of_conduct.org][Code of Conduct]].
After version 0.1.4 the single crate has been replaced with the four =sdml-core=, =sdml-errors=, =sdml-parse=, =sdml-generate=, and =sdml-cli=. Each will have it's own version history starting with 0.1.5.
Version: 0.1.4
Version: 0.1.3
Version: 0.1.2
Version: 0.1.1
Version: 0.1.0
** Formatting
** Linting