diff --git a/.github/workflows/chocolatey.yml b/.github/workflows/chocolatey.yml
index 47d5097..0bdffb2 100644
--- a/.github/workflows/chocolatey.yml
+++ b/.github/workflows/chocolatey.yml
@@ -1,19 +1,53 @@
name: chocolatey
+
on:
- push:
- tags: ["v*.*.*"]
+ release:
+ types: [published]
+
+permissions:
+ contents: read
jobs:
chocolatey:
runs-on: windows-latest
steps:
- - uses: actions/checkout@v4
- - name: Install Chocolatey
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ # Pull the repo just so scripts are available
+ fetch-depth: 1
+
+ - name: Set VERSION from release tag
+ shell: pwsh
+ run: |
+ $tag = "${{ github.event.release.tag_name }}"
+ $ver = $tag -replace '^v',''
+ "VERSION=$ver" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
+ Write-Host "Resolved VERSION=$ver"
+
+ # Do NOT install Chocolatey; it already exists on the GitHub Windows runner
+
+ - name: Wait for checksums.txt to be available (max ~90s)
+ shell: pwsh
run: |
- Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- - name: Extract version
- run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $env:GITHUB_ENV
- - name: Run gen-choco.ps1
- run: .\scripts\gen-choco.ps1 -Version $env:VERSION
+ $tag = "${{ github.event.release.tag_name }}"
+ $url = "https://github.com/${{ github.repository }}/releases/download/$tag/checksums.txt"
+ $ok = $false
+ for ($i=0; $i -lt 30; $i++) {
+ try {
+ $resp = Invoke-WebRequest -Uri $url -UseBasicParsing -Method Head -TimeoutSec 10
+ if ($resp.StatusCode -eq 200) { $ok = $true; break }
+ } catch { Start-Sleep -Seconds 3 }
+ Start-Sleep -Seconds 3
+ }
+ if (-not $ok) {
+ Write-Error "checksums.txt not found at $url after waiting."
+ exit 1
+ }
+
+ - name: Generate & push Chocolatey package
+ shell: pwsh
env:
CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }}
+ run: |
+ .\scripts\gen-choco.ps1 -Version $env:VERSION
diff --git a/.goreleaser.yaml b/.goreleaser.yaml
index 2f9ef94..d7fc500 100644
--- a/.goreleaser.yaml
+++ b/.goreleaser.yaml
@@ -1,85 +1,97 @@
version: 2
+
project_name: hottgo
+before:
+ hooks:
+ - go mod tidy
+
builds:
- - id: cli
+ - id: hottgo
main: ./cmd/hottgo
+ binary: hottgo
env:
- CGO_ENABLED=0
goos: [linux, windows, darwin]
goarch: [amd64, arm64]
- binary: hottgo
ldflags:
- -s -w
- - -X github.com/watchthelight/HypergraphGo/internal/version.Version={{.Version}}
- - -X github.com/watchthelight/HypergraphGo/internal/version.Commit={{.Commit}}
- - -X github.com/watchthelight/HypergraphGo/internal/version.Date={{.Date}}
+ mod_timestamp: "{{ .CommitDate }}"
archives:
- - id: tgz
- builds: [cli]
+ - id: unix-tarballs
+ builds: [hottgo]
format: tar.gz
+ # linux/darwin end up here
+ wrap_in_directory: false
+ files:
+ - LICENSE
+ - README.md
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
+
+ - id: windows-zips
+ builds: [hottgo]
+ format: zip
+ # windows ends up here automatically
+ wrap_in_directory: false
files:
- LICENSE
- README.md
+ name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
-checksums:
- name_template: 'checksums.txt'
+checksum:
+ name_template: "checksums.txt"
+changelog:
+ use: github
+ sort: asc
+ filters:
+ exclude:
+ - "^ci:"
+ - "^docs:"
+ - "^test:"
+
+release:
+ draft: false
+ prerelease: false
+
+# Generate deb/rpm via nfpm (optional but useful for apt/yum repos)
nfpms:
- - id: packages
- builds: [cli]
- formats:
- - deb
- - rpm
- - apk
- - archlinux
+ - id: linux-packages
+ package_name: hottgo
+ file_name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Arch }}"
+ builds: [hottgo]
vendor: watchthelight
- homepage: https://github.com/watchthelight/HypergraphGo
- maintainer: watchthelight
- description: HypergraphGo is a tool for working with hypergraphs.
+ maintainer: "watchthelight "
license: MIT
- file_name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
+ homepage: "https://github.com/watchthelight/HypergraphGo"
+ description: "Hypergraph & HoTT tooling in Go"
+ formats: [deb, rpm]
+ bindir: /usr/bin
+
+# Homebrew (formula in your tap)
+brews:
+ - name: hottgo
+ repository:
+ owner: watchthelight
+ name: homebrew-hottgo
+ token: "{{ .Env.TAP_GITHUB_TOKEN }}"
+ commit_author:
+ name: watchthelight-bot
+ email: admin@watchthelight.org
+ description: "Hypergraph & HoTT tooling in Go"
+ homepage: "https://github.com/watchthelight/HypergraphGo"
+ license: "MIT"
+ install: |
+ bin.install "hottgo"
-publish:
+# Upload built artifacts + packages to Cloudsmith
+publishers:
- name: cloudsmith
- ids: [packages]
- cloudsmiths:
- - organization: watchthelight
- repository: hottgo
- distributions:
- - deb: ubuntu/noble
- - deb: ubuntu/jammy
- - deb: debian/bookworm
- - rpm: el/9
- - rpm: fedora/40
- - alpine: alpine/v3.20
- - name: homebrew
- homebrew:
- name: hottgo
- repository:
- owner: watchthelight
- name: homebrew-hottgo
- cask: true
- commit_author:
- name: goreleaserbot
- email: goreleaser@carlosbecker.com
- - name: scoop
- scoop:
- name: hottgo
- repository:
- owner: watchthelight
- name: scoop-bucket
- commit_author:
- name: goreleaserbot
- email: goreleaser@carlosbecker.com
- - name: winget
- winget:
- name: hottgo
- repository:
- owner: watchthelight
- name: winget-pkgs
- commit_author:
- name: goreleaserbot
- email: goreleaser@carlosbecker.com
+ # Requires CLOUDSMITH_TOKEN env set in CI
+ cmd: >
+ cloudsmith push raw watchthelight/hottgo
+ --name "{{ .ArtifactName }}"
+ --version "{{ .Version }}"
+ "{{ .ArtifactPath }}"
+ ids: ["all"]
diff --git a/README.md b/README.md
index f4ab994..8ebb3c0 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,130 @@
-# HypergraphGo
-
-[](https://github.com/watchthelight/HypergraphGo/actions/workflows/ci-linux.yml)
-[](https://github.com/watchthelight/HypergraphGo/actions/workflows/ci-windows.yml)
-
-
-
-A work-in-progress implementation of a **native HoTT kernel in Go**. This project began as a hypergraph library and is expanding into a full proof kernel with dependent types.
-
----
-
-## Project Status
-
-- ✅ **Phase 1:** Core AST, raw AST, resolver, pretty-printer, ctx + capture-avoiding subst with tests
-- ✅ **CI:** Cross-OS matrix (Ubuntu + Windows) running `go vet` and `go test`
-- 🚧 **Phase 2:** Definitional equality via NbE; normalization and α-equivalence; tests and golden NFs
-- ⏭ Future: inductives, paths, univalence, HITs, elaborator, stdlib
-
-See [`TODO.txt`](./TODO.txt) for the detailed roadmap.
-
----
-
-## Repo Layout
-
-internal/ast/ # Core & Raw AST, printer, resolver, tests
-internal/core/ # Definitional equality (Conv) and tests
-internal/eval/ # NbE evaluator + tests/bench
-internal/util/ # Utilities
-kernel/ctx/ # Bindings/ctx utilities + tests
-kernel/subst/ # Shift/Subst (de Bruijn) + tests
-cmd/hg/ # CLI entry point (WIP)
-docs/ # DESIGN.md, CONTRIBUTING.md
-
----
-
-## Screenshots
-
-*Placeholder for demo screenshots of the HoTT kernel in action, CLI output, etc.*
-
----
-
-## Install
-
-**Option A: Go users**
-```bash
-go install github.com/watchthelight/HypergraphGo/cmd/hg@latest
-hottgo -version
-```
-
-**Option B: Download a release**
-Grab the latest binaries from the [Releases](https://github.com/watchthelight/HypergraphGo/releases) page. Each archive includes a checksum and SBOM.
-
-**Versioning:** we use SemVer. Pre-1.0 versions may contain breaking changes in minor bumps.
-
----
-
-## Building & Testing
-
-You’ll need **Go 1.22+**.
-
-```bash
-git clone https://github.com/watchthelight/HypergraphGo.git
-cd HypergraphGo
-go test ./...
-```
-
-Useful variants:
-
-```bash
-# Vet + test with coverage output
-go vet ./... && go test ./... -count=1 -v -coverprofile=coverage.out
-go tool cover -func=coverage.out # show totals
-go tool cover -html=coverage.out # open HTML report
-```
-
-CI publishes `coverage.out` as a build artifact for each run.
+
+
+
GoReleaser
+ Deliver Go binaries as fast and easily as possible.
+
---
-## Contributing
-
-Keep the kernel (`internal/*`, `kernel/*`) panic-free and minimal.
+GoReleaser builds Go binaries for several platforms, creates a GitHub release and then
+pushes a Homebrew formula to a tap repository. All that wrapped in your favorite CI.
-Any sugar/tactics live outside and are checked again at the kernel boundary.
-
-See [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) for invariants and hygiene.
+
---
-## License
-
-MIT. See LICENSE.
+## Get GoReleaser
+
+- [On your machine](https://goreleaser.com/install/);
+- [On CI/CD systems](https://goreleaser.com/ci/).
+
+## Documentation
+
+Documentation is hosted live at https://goreleaser.com
+
+## Community
+
+You have questions, need support and or just want to talk about GoReleaser?
+
+Here are ways to get in touch with the GoReleaser community:
+
+[](https://discord.gg/RGEBtg8vQ6)
+[](https://twitter.com/goreleaser)
+[](https://github.com/goreleaser/goreleaser/discussions)
+
+You can find the links above and all others [here](https://goreleaser.com/links/).
+
+### Code of Conduct
+
+This project adheres to the Contributor Covenant [code of conduct](https://github.com/goreleaser/.github/blob/main/CODE_OF_CONDUCT.md).
+By participating, you are expected to uphold this code.
+We appreciate your contribution.
+Please refer to our [contributing guidelines](CONTRIBUTING.md) for further information.
+
+## Badges
+
+[](https://github.com/goreleaser/goreleaser/releases/latest)
+[](/LICENSE.md)
+[](https://github.com/goreleaser/goreleaser/actions?workflow=build)
+[](https://codecov.io/gh/goreleaser/goreleaser)
+[](https://artifacthub.io/packages/search?repo=goreleaser)
+[](http://godoc.org/github.com/goreleaser/goreleaser)
+[](https://github.com/goreleaser)
+[](https://opencollective.com/goreleaser/backers/)
+[](https://opencollective.com/goreleaser/sponsors/)
+[](https://conventionalcommits.org)
+[](https://bestpractices.coreinfrastructure.org/projects/5420)
+
+## GitHub Sponsors
+
+High-tier sponsors of [@caarlos0](https://github.com/sponsors/caarlos0/) on GitHub:
+
+
+
+## OpenCollective
+
+### Sponsors
+
+Does your company use goreleaser? Help keep the project bug-free and feature rich by [sponsoring the project](https://opencollective.com/goreleaser#sponsor).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Backers
+
+Love our work and community? [Become a backer](https://opencollective.com/goreleaser).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Contributors
+
+This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
+
+
+## Stargazers over time
+
+[](https://starchart.cc/goreleaser/goreleaser)