hahwul/spdx.cr

GitHub: hahwul/spdx.cr

Stars: 1 | Forks: 0

# spdx.cr SPDX license expression parser and SPDX 2.3 document toolkit for Crystal. Includes 727 embedded SPDX licenses with zero external dependencies. ## Installation Add the dependency to your `shard.yml`: dependencies: spdx: github: hahwul/spdx.cr Then run `shards install`. ## Usage ### Library require "spdx" # Parse license expression ast = Spdx.parse("MIT AND Apache-2.0") # Validate expression Spdx.valid_expression?("MIT OR GPL-2.0-only") # => true # Lookup license license = Spdx.find_license("MIT") license.name # => "MIT License" license.osi_approved? # => true # Check license existence Spdx.license?("MIT") # => true ### CLI # License expression spdx expression parse "MIT AND Apache-2.0" spdx expression validate "GPL-2.0-only WITH Classpath-exception-2.0" # License lookup spdx license list --osi spdx license info MIT spdx license search apache # SPDX document spdx validate document.spdx.json spdx convert document.spdx --format json ## Examples Runnable examples live in [`examples/`](./examples): crystal run examples/basic.cr # parse, valid_expression?, validate_expression crystal run examples/license_lookup.cr # SPDX license & exception lookup with metadata crystal run examples/document_io.cr # JSON ↔ Tag-Value document conversion ## Features - License expression parser with full operator precedence (AND, OR, WITH, +) - 727 SPDX licenses embedded at compile time - SPDX 2.3 document model with validation - JSON and Tag-Value format support (parse / generate / convert) - CLI tool