Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ on:
branches: [master, main]
paths:
- simplicio.exe
- simplicio-windows-x64.exe
- simplicio
- simplicio-darwin-x64
- simplicio-linux-x64
- simplicio-update-manifest.json
- distribution/targets.json
- .github/workflows/release.yml
workflow_dispatch: {}

Expand All @@ -27,13 +29,18 @@ jobs:
shell: pwsh
run: echo "version=$((Get-Content simplicio-update-manifest.json | ConvertFrom-Json).version)" >> $env:GITHUB_OUTPUT
- name: Stage release assets
# Asset names MUST match distribution/targets.json (the canonical
# target-triplet table) so that install.sh, install.ps1 and
# simplicio-update-manifest.json all resolve the same URLs.
# scripts/verify_distribution_consistency.py enforces this in CI.
run: |
mkdir -p dist
cp simplicio.exe dist/simplicio-windows-x86_64.exe
cp simplicio-windows-x64.exe dist/simplicio-windows-x64.exe
cp simplicio dist/simplicio-macos-arm64
if (Test-Path simplicio-darwin-x64) { cp simplicio-darwin-x64 dist/simplicio-darwin-x64 }
if (Test-Path simplicio-darwin-x64) { cp simplicio-darwin-x64 dist/simplicio-macos-x64 }
if (Test-Path simplicio-linux-x64) { cp simplicio-linux-x64 dist/simplicio-linux-x64 }
cp simplicio-update-manifest.json dist/
cp distribution/targets.json dist/
cp SHA256SUMS dist/ || true
- name: Create or update release
uses: softprops/action-gh-release@v2
Expand All @@ -51,9 +58,10 @@ jobs:
prerelease: false
make_latest: "true"
files: |
dist/simplicio-windows-x86_64.exe
dist/simplicio-windows-x64.exe
dist/simplicio-macos-arm64
dist/simplicio-darwin-x64
dist/simplicio-macos-x64
dist/simplicio-linux-x64
dist/simplicio-update-manifest.json
dist/targets.json
dist/SHA256SUMS
43 changes: 35 additions & 8 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,43 @@ powershell -c "irm https://raw.githubusercontent.com/wesleysimplicio/simplicio/m
### Manual Download

Download the binary for your platform from the
[releases](https://github.com/wesleysimplicio/simplicio/releases):
[releases](https://github.com/wesleysimplicio/simplicio/releases). Asset names
are canonical — see [`distribution/targets.json`](distribution/targets.json),
the single source of truth used by the release workflow, both installers and
`simplicio-update-manifest.json`:

| Platform | File |
|----------|------|
| macOS (Apple Silicon) | `simplicio` |
| macOS (Intel) | `simplicio` |
| Linux x86_64 | `simplicio` |
| Windows x86_64 | `simplicio.exe` |
| Target id | Platform | Asset |
|----------------|------------------------|------------------------------|
| `macos-arm64` | macOS (Apple Silicon) | `simplicio-macos-arm64` |
| `macos-x64` | macOS (Intel) | `simplicio-macos-x64` |
| `linux-x64` | Linux x86_64 | `simplicio-linux-x64` |
| `windows-x64` | Windows x86_64 | `simplicio-windows-x64.exe` |

Place it somewhere on your `PATH` (e.g. `/usr/local/bin` or `~/.local/bin`).
Verify the SHA256 checksum against the `sha256` field for your target in
`simplicio-update-manifest.json` (published alongside each release) before
running the binary. Then place it somewhere on your `PATH` (e.g.
`/usr/local/bin` or `~/.local/bin`), naming it `simplicio` (or `simplicio.exe`
on Windows).

## Doctor / Uninstall

Both installers are idempotent and expose a health check and a clean,
data-preserving uninstall — safe to re-run at any time:

```bash
# macOS / Linux
sh install.sh --doctor
sh install.sh --uninstall
```

```powershell
# Windows
pwsh install.ps1 -Doctor
pwsh install.ps1 -Uninstall
```

Uninstall only removes the installed binary; it never deletes user data or
config under `~/.simplicio`.

## Verify Installation

Expand Down
43 changes: 43 additions & 0 deletions distribution/targets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"schema": "simplicio.target-triplets/v1",
"$comment": "Single source of truth for platform naming across the ecosystem. Any script, workflow or manifest that needs an asset name for a platform MUST derive it from this table (id -> asset) instead of hard-coding its own convention. scripts/verify_distribution_consistency.py enforces that release.yml, install.sh, install.ps1 and simplicio-update-manifest.json all agree with this table.",
"targets": [
{
"id": "windows-x64",
"os": "windows",
"arch": "x64",
"rust_triple": "x86_64-pc-windows-msvc",
"asset": "simplicio-windows-x64.exe",
"installer": "install.ps1",
"manifest_target": "windows-x64"
},
{
"id": "macos-arm64",
"os": "macos",
"arch": "arm64",
"rust_triple": "aarch64-apple-darwin",
"asset": "simplicio-macos-arm64",
"installer": "install.sh",
"manifest_target": "macos-arm64"
},
{
"id": "macos-x64",
"os": "macos",
"arch": "x64",
"rust_triple": "x86_64-apple-darwin",
"asset": "simplicio-macos-x64",
"installer": "install.sh",
"manifest_target": "macos-x64",
"legacy_aliases": ["simplicio-darwin-x64"]
},
{
"id": "linux-x64",
"os": "linux",
"arch": "x64",
"rust_triple": "x86_64-unknown-linux-gnu",
"asset": "simplicio-linux-x64",
"installer": "install.sh",
"manifest_target": "linux-x64"
}
]
}
Loading
Loading