Hamelin
A pipe-based query language for security event analytics. Yay!
Installation
[]
= "0.3"
Features
trino- Trino backend support
Documentation
Adding a New Crate
When adding a new publishable crate to the workspace:
-
Add required metadata to the crate's
Cargo.toml:[] = "hamelin_newcrate" = "Description of the crate" = true = true = true = true = true = true = true -
Publish an initial version below the current workspace version. For example, if the workspace is at
0.3.9, publish0.3.8:# Temporarily set version to 0.3.8 in root Cargo.toml, then: # Revert the version change after publishing -
Configure trusted publishing on crates.io:
- Go to the crate's settings page on crates.io
- Click "Add" under Trusted Publishing
- Configure with:
- Repository:
perpetualsystems/hamelin - Workflow:
hamelin-release.yaml - Environment:
release
- Repository:
- Enable "Require trusted publishing for all new versions"

-
Add to workspace in root
Cargo.toml:- Add to
memberslist - Add to
[workspace.dependencies]with the current workspace version
- Add to
The CI will verify that all publishable crates exist on crates.io before allowing PRs to merge.
Releasing a New Version
To cut a new release of Hamelin:
- Update the Cargo version - Update the version in the root
Cargo.tomlunder[workspace.package], along with each[workspace.dependencies] - Update the pnpm version - Update the version in the root
package.json - Sync pnpm package versions - Run
pnpm version:syncto update all@hamelin.sh/*package versions - Merge to main - Create a PR and merge to main to trigger the release workflows