Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lutaml/oscal
Gem for accessing/writing OSCAL content
https://github.com/lutaml/oscal
Last synced: 2 months ago
JSON representation
Gem for accessing/writing OSCAL content
- Host: GitHub
- URL: https://github.com/lutaml/oscal
- Owner: metanorma
- License: bsd-2-clause
- Created: 2023-02-10T06:31:13.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-10T10:02:30.000Z (6 months ago)
- Last Synced: 2024-07-10T12:03:15.371Z (6 months ago)
- Language: Ruby
- Size: 120 KB
- Stars: 5
- Watchers: 13
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-oscal - Metanorma's oscal-ruby
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.