specification icon indicating copy to clipboard operation
specification copied to clipboard

JSON Schema HTML viewer generator script supports generating for one particular CDX version

Open Nicolas-Peiffer opened this issue 1 year ago • 0 comments

The JSON Schema HTML viewer generator script docgen/json/gen.sh supports generating only for one particular CycloneDX version, including the possibility of generating the HTML only for draft version of CycloneDX during dev time.

Use Case

I want to propose new objects in the CycloneDX Specification. And for checking the JSON Schema, I like to locally use the HTML view to check the content of the JSON Schema.

However, during dev time when I was modifying the JSON Schema, I found it not convenient that the script docgen/json/gen.sh regenerate the HTML doc for every version of CycloneDX each time I run it when I only need the version I am working on.

Proposition

I modified the script docgen/json/gen.sh to be able to run gen.sh only for a particular version of CycloneDX.

For example:

./gen.sh 1.6

But I also added a list DRAFT_CYCLONEDX_VERSIONS for when I am working on a draft proposition of CycloneDX spec. For example:

# I modify `docgen/json/gen.sh` to add the name of my draft file
DRAFT_CYCLONEDX_VERSIONS=(my_cdx_dev_draft)

I create a JSON schema draft file schema/bom-my_cdx_dev_draft.schema.json:

Then I run:

./gen.sh my_cdx_dev_draft

Which creates only the HTML for my_cdx_dev_draft

tree docgen/json/docs/my_cdx_dev_draft/
docgen/json/docs/my_cdx_dev_draft/
├── index.html
├── schema_doc.css
└── schema_doc.min.j

And in order not to disturb the way docgen/json/gen.sh works now, running it without argument generates the HTML for all the CDX versions:

./gen.sh
ls -1 docgen/json/docs/
1.2
1.3
1.4
1.5
1.6

I also added a small usage help message.

./gen.sh -h
Deleting folder /home/thedetective/Documents/dev-workspace/cyclonedx/cyclonedx-specification.thalesgroup/docgen/json/docs
Usage: Generate HTML JSON Schema navigator for CyccloneDX
Usage: ./gen.sh <version> : runs only for <version>
       ./gen.sh           : loops over all valid and draft CycloneDX versions

What about docgen/xml/gen.sh ?

I will probably propose the same kind of modification to the XML docgen/xml/gen.sh script to achieve the same results.

Conclusion

There are probably other way to achieve this result. I think this one is the cheapest in terms of how the gen.sh script is modified.

Nicolas-Peiffer avatar Aug 29 '24 12:08 Nicolas-Peiffer