Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/metanorma/oscal-ruby

Gem for accessing/writing OSCAL content
https://github.com/metanorma/oscal-ruby

Last synced: 24 days ago
JSON representation

Gem for accessing/writing OSCAL content

Lists

README

        

= OSCAL in Ruby

== Purpose

This is an implementation of the OSCAL models, allowing the manipulation of
these models, as well as reading and writing of OSCAL serialization formats
(YAML, JSON, XML).

NOTE: This gem is used by the
https://github.com/metanorma/metanorma-plugin-oscal[Metanorma plugin for OSCAL].

== Installation

Install the gem:

[source,console]
----
[sudo] gem install oscal
----

or add it to your `Gemfile`:

[source,ruby]
----
gem 'oscal'
----

== Command-line usage

TODO: Write usage instructions here

[source,ruby]
----
> require 'oscal'
> x = Oscal::Catalog.load_from_yaml('spec/oscal-content/examples/catalog/yaml/basic-catalog.yaml')
=>
# x.groups.first.groups.first.parts.first.prose
=> "To establish a management framework to initiate and control the implementation and operation of information security within the organization."
----

Get all controls

[source,ruby]
----
> require 'oscal'
> x = Oscal::Catalog.load_from_yaml('spec/oscal-content/examples/catalog/yaml/basic-catalog.yaml')
=>
# o = x.get_all_controls
> o.count
=> 4
----

Find object by id

[source,ruby]
----
> require 'oscal'
> x = Oscal::Catalog.load_from_yaml('spec/oscal-content/examples/catalog/yaml/basic-catalog.yaml')
=>
# p = x.find_object_by_id('s1.1_smt')
=>
#
----

Find object by uuid

[source,ruby]
----
> require 'oscal'
> x = Oscal::Catalog.load_from_yaml('spec/oscal-content/examples/catalog/yaml/basic-catalog.yaml')
=>
# p = x.find_object_by_id('74c8ba1e-5cd4-4ad1-bbfd-d888e2f6c724', x, :uuid)
=>
#
----

== Ruby library usage

TODO: Write usage instructions here

== Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run
`rake spec` to run the tests. You can also run `bin/console` for an interactive
prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To
release a new version, update the version number in `version.rb`, and then run
`bundle exec rake release`, which will create a git tag for the version, push
git commits and the created tag, and push the `.gem` file to
https://rubygems.org.

== Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/metanorma/oscal. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the https://github.com/metanorma/oscal/blob/main/CODE_OF_CONDUCT.md[code of conduct].

== Code of Conduct

Everyone interacting in the Oscal project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the https://github.com/metanorma/oscal/blob/main/CODE_OF_CONDUCT.md[code of conduct].

== LICENSE

Copyright Ribose. The OSCAL schema is published by NIST.

Published under the 2-clause BSD license.