-
-
Notifications
You must be signed in to change notification settings - Fork 20
✨ --spec-version, --include-metadata, --enrich-components, --gem-server #50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
b957967
ecf0b73
739436b
88a6b89
8f1c016
7aa67e2
16ab609
adb362a
95f90b3
5928fba
f097691
d6379a8
f477f8d
9f256d7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,133 @@ | ||
| # Contributor Covenant Code of Conduct | ||
|
|
||
| ## Our Pledge | ||
|
|
||
| We as members, contributors, and leaders pledge to make participation in our | ||
| community a harassment-free experience for everyone, regardless of age, body | ||
| size, visible or invisible disability, ethnicity, sex characteristics, gender | ||
| identity and expression, level of experience, education, socio-economic status, | ||
| nationality, personal appearance, race, caste, color, religion, or sexual | ||
| identity and orientation. | ||
|
|
||
| We pledge to act and interact in ways that contribute to an open, welcoming, | ||
| diverse, inclusive, and healthy community. | ||
|
|
||
| ## Our Standards | ||
|
|
||
| Examples of behavior that contributes to a positive environment for our | ||
| community include: | ||
|
|
||
| * Demonstrating empathy and kindness toward other people | ||
| * Being respectful of differing opinions, viewpoints, and experiences | ||
| * Giving and gracefully accepting constructive feedback | ||
| * Accepting responsibility and apologizing to those affected by our mistakes, | ||
| and learning from the experience | ||
| * Focusing on what is best not just for us as individuals, but for the overall | ||
| community | ||
|
|
||
| Examples of unacceptable behavior include: | ||
|
|
||
| * The use of sexualized language or imagery, and sexual attention or advances of | ||
| any kind | ||
| * Trolling, insulting or derogatory comments, and personal or political attacks | ||
| * Public or private harassment | ||
| * Publishing others' private information, such as a physical or email address, | ||
| without their explicit permission | ||
| * Other conduct which could reasonably be considered inappropriate in a | ||
| professional setting | ||
|
|
||
| ## Enforcement Responsibilities | ||
|
|
||
| Community leaders are responsible for clarifying and enforcing our standards of | ||
| acceptable behavior and will take appropriate and fair corrective action in | ||
| response to any behavior that they deem inappropriate, threatening, offensive, | ||
| or harmful. | ||
|
|
||
| Community leaders have the right and responsibility to remove, edit, or reject | ||
| comments, commits, code, wiki edits, issues, and other contributions that are | ||
| not aligned to this Code of Conduct, and will communicate reasons for moderation | ||
| decisions when appropriate. | ||
|
|
||
| ## Scope | ||
|
|
||
| This Code of Conduct applies within all community spaces, and also applies when | ||
| an individual is officially representing the community in public spaces. | ||
| Examples of representing our community include using an official email address, | ||
| posting via an official social media account, or acting as an appointed | ||
| representative at an online or offline event. | ||
|
|
||
| ## Enforcement | ||
|
|
||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||
| reported to the community leaders responsible for enforcement at | ||
| [steve.springett@owasp.org][conduct-contact]. | ||
| All complaints will be reviewed and investigated promptly and fairly. | ||
|
|
||
| All community leaders are obligated to respect the privacy and security of the | ||
| reporter of any incident. | ||
|
|
||
| ## Enforcement Guidelines | ||
|
|
||
| Community leaders will follow these Community Impact Guidelines in determining | ||
| the consequences for any action they deem in violation of this Code of Conduct: | ||
|
|
||
| ### 1. Correction | ||
|
|
||
| **Community Impact**: Use of inappropriate language or other behavior deemed | ||
| unprofessional or unwelcome in the community. | ||
|
|
||
| **Consequence**: A private, written warning from community leaders, providing | ||
| clarity around the nature of the violation and an explanation of why the | ||
| behavior was inappropriate. A public apology may be requested. | ||
|
|
||
| ### 2. Warning | ||
|
|
||
| **Community Impact**: A violation through a single incident or series of | ||
| actions. | ||
|
|
||
| **Consequence**: A warning with consequences for continued behavior. No | ||
| interaction with the people involved, including unsolicited interaction with | ||
| those enforcing the Code of Conduct, for a specified period of time. This | ||
| includes avoiding interactions in community spaces as well as external channels | ||
| like social media. Violating these terms may lead to a temporary or permanent | ||
| ban. | ||
|
|
||
| ### 3. Temporary Ban | ||
|
|
||
| **Community Impact**: A serious violation of community standards, including | ||
| sustained inappropriate behavior. | ||
|
|
||
| **Consequence**: A temporary ban from any sort of interaction or public | ||
| communication with the community for a specified period of time. No public or | ||
| private interaction with the people involved, including unsolicited interaction | ||
| with those enforcing the Code of Conduct, is allowed during this period. | ||
| Violating these terms may lead to a permanent ban. | ||
|
|
||
| ### 4. Permanent Ban | ||
|
|
||
| **Community Impact**: Demonstrating a pattern of violation of community | ||
| standards, including sustained inappropriate behavior, harassment of an | ||
| individual, or aggression toward or disparagement of classes of individuals. | ||
|
|
||
| **Consequence**: A permanent ban from any sort of public interaction within the | ||
| community. | ||
|
|
||
| ## Attribution | ||
|
|
||
| This Code of Conduct is adapted from the [Contributor Covenant][homepage], | ||
| version 2.1, available at | ||
| [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. | ||
|
|
||
| Community Impact Guidelines were inspired by | ||
| [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. | ||
|
|
||
| For answers to common questions about this code of conduct, see the FAQ at | ||
| [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at | ||
| [https://www.contributor-covenant.org/translations][translations]. | ||
|
|
||
| [homepage]: https://www.contributor-covenant.org | ||
| [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html | ||
| [Mozilla CoC]: https://github.com/mozilla/diversity | ||
| [FAQ]: https://www.contributor-covenant.org/faq | ||
| [translations]: https://www.contributor-covenant.org/translations | ||
| [conduct-contact]: mailto:steve.springett@owasp.org |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| # frozen_string_literal: true | ||
|
|
||
| source 'https://rubygems.org' | ||
| source 'https://gem.coop/' | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yep, |
||
|
|
||
| # Specify your gem's dependencies in cyclonedx-ruby.gemspec | ||
| gemspec | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| # CycloneDX Ruby Gem | ||
|
|
||
| [](https://rubygems.org/gems/cyclonedx-ruby) | ||
| [](https://bestgems.org/gems/cyclonedx-ruby) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why this change?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just a preference to not link to RG.O. If you prefer the old way I'll leave it alone! I like the additional information on bestgems, which is also a community resource, but I'm not strongly inclined either way.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. no preferences, just asking.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes! I plan to do that soon! |
||
| [](https://github.com/CycloneDX/cyclonedx-ruby-gem/actions/workflows/ruby.yml?query=branch%3Amaster) | ||
| [][License] | ||
| [](https://cyclonedx.org/) | ||
|
|
@@ -33,12 +33,18 @@ cyclonedx-ruby [options] | |
| `-o, --output bom_file_path` Path to output the bom file | ||
| `-f, --format bom_output_format` Output format for bom. Supported: xml (default), json | ||
| `-s, --spec-version version` CycloneDX spec version to target (default: 1.7). Supported: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7 | ||
| `--include-metadata` Include metadata.tools identifying cyclonedx-ruby as the producer | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i dont see a reason to hide this feature behind a feature switch.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agree, will make it built-in default for spec versions that support it. |
||
| `--enrich-components` Include bom-ref and publisher fields on components (uses purl and first author) | ||
| `--gem-server URL` Gem server URL to fetch gem metadata (default: https://gem.coop) | ||
| `-h, --help` Show help message | ||
|
|
||
| **Output:** bom.xml or bom.json file in project directory | ||
|
|
||
| - By default, outputs conform to CycloneDX spec version 1.7. | ||
| - To generate an older spec version, use `--spec-version`. | ||
| - To embed metadata about this tool (vendor/name/version) into the BOM, pass `--include-metadata` (supported for spec >= 1.2). | ||
| - To enrich components with bom-ref and publisher fields, pass `--enrich-components`. | ||
| - To specify a custom gem server for fetching gem metadata, use `--gem-server URL` (default: https://gem.coop). | ||
|
|
||
| #### Examples | ||
| ```bash | ||
|
|
@@ -53,6 +59,15 @@ cyclonedx-ruby -p /path/to/ruby/project -s 1.3 | |
|
|
||
| # JSON at CycloneDX 1.2 to a custom path | ||
| cyclonedx-ruby -p /path/to/ruby/project -f json -s 1.2 -o bom/out.json | ||
|
|
||
| # Include producer metadata and validate | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
where comes the validate from?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's vestigial, it was a really big rebase getting it off of the validation feature. I'll pull this apart into separate PRs, and make metadata inclusion a built-in default for spec versions that support it (v1.2+). |
||
| cyclonedx-ruby -p /path/to/ruby/project --include-metadata | ||
|
|
||
| # Enrich components with bom-ref and publisher | ||
| cyclonedx-ruby -p /path/to/ruby/project --enrich-components | ||
|
|
||
| # Use a custom gem server | ||
| cyclonedx-ruby -p /path/to/ruby/project --gem-server https://custom.gem.server | ||
| ``` | ||
|
|
||
|
|
||
|
|
@@ -63,4 +78,4 @@ CycloneDX Ruby Gem is Copyright (c) OWASP Foundation. All Rights Reserved. | |
|
|
||
| Permission to modify and redistribute is granted under the terms of the Apache 2.0 license. See the [LICENSE] file for the full license. | ||
|
|
||
| [License]: https://github.com/CycloneDX/cyclonedx-ruby-gem/blob/master/LICENSE | ||
| [License]: https://github.com/CycloneDX/cyclonedx-ruby-gem/blob/master/LICENSE.txt | ||
jkowalleck marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,10 @@ | ||
| #!/usr/bin/env ruby | ||
| # frozen_string_literal: true | ||
|
|
||
| $stdout.sync = true | ||
|
|
||
| require "rubygems" | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why is this needed now?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are right to question that. It should not be needed. It wasn't working without it on my machine, but I think it may just be an edge case of attempting to run it from the source checkout versus a real installed gem that has the benefit of the bin script wrapper (which already does Will remove. |
||
|
|
||
| if ENV.fetch('MIMIC_NEXT_MAJOR_VERSION', 'false').casecmp?('true') | ||
| require 'cyclonedx/ruby' | ||
| Cyclonedx::BomBuilder.build(ARGV[0]) | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| Feature: Custom Gem Server | ||
|
|
||
| The `cyclonedx-ruby` command should allow users to specify a custom gem server | ||
| to fetch gem metadata from, instead of using the default gem.coop server. | ||
|
|
||
| Scenario: Use default gem server (gem.coop) | ||
| Given I use a fixture named "simple" | ||
| And I run `cyclonedx-ruby --path .` | ||
| Then the output should contain: | ||
| """ | ||
| 5 gems were written to BOM located at ./bom.xml | ||
| """ | ||
| And a file named "bom.xml" should exist | ||
| And the generated XML BOM file "bom.xml" matches "bom.xml.expected" | ||
|
|
||
| Scenario: Use custom gem server | ||
| Given I use a fixture named "simple" | ||
| And I run `cyclonedx-ruby --path . --gem-server https://rubygems.org` | ||
| Then the output should contain: | ||
| """ | ||
| 5 gems were written to BOM located at ./bom.xml | ||
| """ | ||
| And a file named "bom.xml" should exist | ||
|
|
||
| Scenario: Use custom gem server with trailing slash | ||
| Given I use a fixture named "simple" | ||
| And I run `cyclonedx-ruby --path . --gem-server https://rubygems.org/` | ||
| Then the output should contain: | ||
| """ | ||
| 5 gems were written to BOM located at ./bom.xml | ||
| """ | ||
| And a file named "bom.xml" should exist | ||
|
|
||
| Scenario: Help shows gem-server option | ||
| Given I run `cyclonedx-ruby --help` | ||
| Then the output should contain: | ||
| """ | ||
| --gem-server URL Gem server URL to fetch gem metadata (default: https://gem.coop) | ||
| """ | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thats a copy of https://github.com/CycloneDX/.github/blob/master/CODE_OF_CONDUCT.md ?
Anyway, it is not needed, as the original one appliesalready - see https://github.com/CycloneDX/cyclonedx-ruby-gem?tab=coc-ov-file#readme
so, could this file be removed, then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like it!