* feat(script): generate a source file x teams manifest from CODEOWNERS * feat(script): unit tests + coverage report only for files owned by team * feat(script): calculate CODEOWNERS metadata * refactor(script): export a pure codeowners manifest generation function * refactor(script): export a pure test coverage by team function * refactor(script): generate raw JSONL codeowners data from Node.js script * feat(script): put codeowners manifest all together in one script * refactor(scripts): group consistently with NPM script name * refactor(scripts): deduplicate constants for file paths etc. * refactor(scripts): make console output cute 💅✨ * refactor(tests): make coverage by "owner" directory more human readable * refactor(scripts): use consistent naming "codeowner" instead of "team" * chore(codeowners): mark DataViz as owners of scripts for now * chore(todo): leave a note where coverage metrics should be emitted later * fix(gitignore): ignore root codeowners-manifest directory not scripts/* * refactor(script): rename manifest to generate for clarity * docs(readme): add a brief README describing new scrips * chore(linter): ignore temporary files in prettier, fix whitespace format * refactor(script): simplify Jest config by using team files list directly * refactor(script): simplify script, partition sourceFiles and testFiles * refactor(script): simplify and parallelize manifest write operations * fix(script): handle errors for JSONL line reader * refactor(script): use Map instead of POJOs * fix(script): handle errors when streaming raw JSONL output * fix(script): add error handling, and use promise API for metadata check * fix(reporter): suppress duplicate Jest CLI coverage report output * refactor(script): simplify with fs promises API for consistency * fix(script): error handling for cp spawn-ed process * refactor(script): use Promise API for mkdir + exists * refactor(script): use fs Promise API * refactor(script): use fs Promise API * fix(script): same allow list for sourceFilter and all Jest config rules Co-authored-by: Paul Marbach <paul.marbach@grafana.com> * fix(script): bust cache when new files are created also --------- Co-authored-by: Paul Marbach <paul.marbach@grafana.com>
1.4 KiB
1.4 KiB
Codeowners Manifest Scripts
Scripts for generating and caching CODEOWNERS manifest data.
Each of these scripts can be run individually if needed, but index.js is most useful because it combines them all.
Usage
# Combined script
node index.js # Generate complete manifest with caching
# Individual scripts
node metadata.js # Generate metadata with hashes
node raw.js # Generate raw audit data
node generate.js # Process raw data into manifest files
Control flow of index.js
flowchart TD
A[index.js] --> B[metadata.js: Generate new metadata]
B --> C{Existing metadata exists?}
C -->|No| D[Generate all files]
C -->|Yes| E{Hashes match?}
E -->|No| D
E -->|Yes| F[Skip generation]
D --> G[raw.js: Generate audit data]
G --> H[generate.js: Process into JSON files]
H --> I[Save new metadata]
I --> J[Complete]
F --> J
style F fill:#e1f5fe
style J fill:#e8f5e8
Default output
By default these scripts will write the following files to the /codeowners-manifest/* directory.
audit-raw.jsonl- Raw CODEOWNERS audit data in JSONL format (for fast stream processing)teams.json- List of all codeowners (for validating codeowner names)teams-by-filename.json- Files mapped to their respective codeownersfilenames-by-team.json- Codeowners mapped to their respective filesmetadata.json- Hashes for cache validation