ogma-cli

Ogma: Helper tool to interoperate between Copilot and other languages.

https://github.com/nasa/ogma

Stackage Nightly 2025-04-24:1.7.0
Latest on Hackage:1.7.0

See all snapshots ogma-cli appears in

LicenseRef-OtherLicense licensed by Ivan Perez, Alwyn Goodloe
Maintained by [email protected]
This version can be pinned in stack with:ogma-cli-1.7.0@sha256:0087159a39c1481e8a86936c07e0c9a24a6df1e7bb1c0919abf7b7964e93bf5b,7895

Module documentation for 1.7.0

There are no documented modules for this package.

Ogma is a tool to facilitate the integration of safe runtime monitors into other systems. Ogma extends Copilot, a high-level runtime verification framework that generates hard real-time C99 code.

Some use cases supported by Ogma include:

  • Translating requirements defined in structured natural language into monitors in Copilot.

  • Generating the glue code necessary to work with C structs in Copilot.

  • Generating NASA Core Flight System applications that use Copilot for monitoring data received from the message bus.

  • Generating message handlers for NASA Core Flight System applications to make external data in structs available to a Copilot monitor.

  • Generating Robot Operating System (ROS 2) applications that use Copilot for monitoring data received from different topics.

  • Generating F' components that use Copilot for monitoring.

  • Generating monitors from state diagrams specified using a graphical notation.

The main invocation with --help lists sub-commands available.

$ ogma --help
ogma - an anything-to-Copilot application generator

Usage: ogma COMMAND
  Generate complete or partial Copilot applications from multiple languages

Available options:
  -h,--help                Show this help text

Available commands:
  structs                  Generate Copilot structs from C structs
  handlers                 Generate message handlers from C structs
  cfs                      Generate a complete CFS/Copilot application
  fprime                   Generate a complete F' monitoring component
  ros                      Generate a ROS 2 monitoring application
  standalone               Generate a Copilot file from an input specification
  diagram                  Generate a monitor from a state machine diagram

For further information, see:

Changes

Revision history for ogma-cli

[1.7.0] - 2025-03-21

  • Version bump 1.7.0 (#269).
  • Add all auxiliary test files to distributable Cabal package (#216).
  • Remove extraneous EOL character (#224).
  • Update installation instructions to use cabal install (#149).
  • Update README with new cFS template variables (#229).
  • Expose handlers-file argument to cFS backend (#234).
  • Expose template-vars argument to cFS backend (#106).
  • Document new template variables in README (#237).
  • Fix formatting of template variables in README (#222).
  • Update README with new ROS template variables (#244).
  • Update README with new FPrime template variables (#246).
  • Adjust CLI to match new backend API (#248).
  • Expose template-vars argument to ROS, FPrime, standalone backends (#250).
  • Expose spec processing arguments to cFS backend in CLI (#252).
  • Use new sample spec with ROS backend in CI job (#107).
  • Update examples, Github Actions, README to use new variable DB format (#256).
  • Update README, ROS example with ability to pass data to handlers (#219).
  • Update README, Github Actions with new dependencies (#263).
  • Update to support boolean expressions in the Lustre language (#267).

[1.6.0] - 2025-01-21

  • Version bump 1.6.0 (#208).
  • Update contribution guidelines (#161).
  • Provide ability to customize template in fprime command (#185).
  • Provide ability to customize template in standalone command (#189).
  • Add repository information to cabal package (#148).
  • Add version bounds to all dependencies (#119).
  • Introduce new diagram command (#194).
  • Provide ability to preprocess properties via external command (#197).
  • Extend support for file, property formats across backends (#204).

[1.5.0] - 2024-11-21

  • Version bump 1.5.0 (#178).
  • Provide ability to customize template in cfs command (#157).
  • Provide ability to customize template in ros command (#162).
  • Introduce new standalone command (#170).
  • Update README to demonstrate robotics (#172).
  • Remove unused resources (#174).
  • Add version bounds to base (#180).

[1.4.1] - 2024-09-21

  • Version bump 1.4.1 (#155).
  • Constrain version of dependency in CI jobs (#151).
  • Replace homepage (#147).

[1.4.0] - 2024-05-21

  • Version bump 1.4.0 (#145).
  • Introduce CI test job (#139).
  • Introduce test job for ROS package generation (#136).
  • Add a float and a double input variable to ROS example (#138).
  • Document format of variable DB (#143).

[1.3.0] - 2024-03-21

  • Version bump 1.3.0 (#133).

[1.2.0] - 2024-01-21

  • Version bump 1.2.0 (#117).
  • Re-structure README around on backends (#75).

[1.1.0] - 2023-11-21

  • Version bump 1.1.0 (#112).
  • Document cabal update step in README (#100).

[1.0.11] - 2023-09-21

  • Version bump 1.0.11 (#103).

[1.0.10] - 2023-07-21

  • Version bump 1.0.10 (#98).
  • Correct test case (#96).

[1.0.9] - 2023-05-21

  • Version bump 1.0.9 (#93).
  • Rename ROS2 to ROS 2 (#83).
  • Allow customizing the names of the C files generated by Copilot (#80).
  • Re-order README’s TOC to match order of contents (#88).
  • Fix rendering of quotes in URLs in package description (#72).
  • List FPrime backend as supported use case in package description (#91).

[1.0.8] - 2023-03-21

  • Version bump 1.0.8 (#81).
  • Introduce new F’ (FPrime) backend (#77).
  • Mark package as uncurated (#74).

[1.0.7] - 2023-01-21

  • Version bump 1.0.7 (#69).
  • Replace tabs in cabal file (#69).
  • Introduce new ROS2 backend (#56).

[1.0.6] - 2022-11-21

  • Version bump 1.0.6 (#64).
  • Update license in cabal file to OtherLicense (#62).
  • Add empty file to keep directory structure in distributable package (#65).

[1.0.5] - 2022-09-21

  • Version bump 1.0.5 (#60).
  • Update README to reflect that GHC 9.2 is supported (#55).

[1.0.4] - 2022-07-21

  • Version bump 1.0.4 (#53).
  • Address all hlint suggestions (#51).

[1.0.3] - 2022-05-21

  • Version bump 1.0.3 (#49).
  • Enable CI (#47).
  • Conformance with style guide (partial) (#45).

[1.0.2] - 2022-03-21

  • Version bump 1.0.2 (#43).
  • Address HLint warning (#41).

[1.0.1] - 2022-01-21

  • Version bump 1.0.1 (#39).
  • Merge imports (#33).

[1.0.0] - 2021-11-22

  • Initial release.