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
73 changes: 70 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,76 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 24
- env:
- run: npm ci
- run: npm run build
- run: npm test
- id: artifact
env:
GH_TOKEN: ${{ github.token }}
run: |
version="v$(node -p "require('./package.json').version")"
gh release view "$version" >/dev/null 2>&1 && exit 0
gh release create "$version" "$(npm pack --silent)" --title "$version" --notes "$version"
mkdir -p release-assets
gh release download "$version" --repo Lapxo/topos-github --pattern '0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-github --pattern '0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d' --dir release-assets
printf '%s %s\n' '0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d' 'release-assets/0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d' | sha256sum -c -
gh release download "$version" --repo Lapxo/topos-github --pattern '97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-github --pattern '97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01' --dir release-assets
printf '%s %s\n' '97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01' 'release-assets/97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01' | sha256sum -c -
gh release download "$version" --repo Lapxo/topos-github --pattern 'archive-profile.mjs' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-github --pattern 'archive-profile.mjs' --dir release-assets
printf '%s %s\n' 'b29b48db2b4d9633a095765ae65e99ca8c14aae10a76735f006fb728a23e5aaa' 'release-assets/archive-profile.mjs' | sha256sum -c -
npx --yes --package [email protected] esbuild src/index.ts --bundle --platform=node --format=esm --outfile="$RUNNER_TEMP/runtime-index.js"
printf '%s %s\n' 'c99a99e45f88b31979e57281cdf74ee695092724abb65553d95b51f4ed5fb890' "$RUNNER_TEMP/runtime-index.js" | sha256sum -c -
node release-assets/archive-profile.mjs 'release-assets/36e1f6822242625e745e5fb1611d8c74c2b769e39b902d1eff56e384bb3ae29e' 'sha256:36e1f6822242625e745e5fb1611d8c74c2b769e39b902d1eff56e384bb3ae29e' capsule.bound 'release-assets/97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01' dist/index.js "$RUNNER_TEMP/runtime-index.js" >&2
gh release download "$version" --repo Lapxo/topos-github --pattern 'ce09169123e270319fcd9cfb46c414d8693d6e28800e1cf58cc4716e531915cb' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-github --pattern 'ce09169123e270319fcd9cfb46c414d8693d6e28800e1cf58cc4716e531915cb' --dir release-assets
printf '%s %s\n' 'ce09169123e270319fcd9cfb46c414d8693d6e28800e1cf58cc4716e531915cb' 'release-assets/ce09169123e270319fcd9cfb46c414d8693d6e28800e1cf58cc4716e531915cb' | sha256sum -c -
gh release download "$version" --repo Lapxo/topos-github --pattern '1b6385f068b4d35d6688150e964694353c96c8ed027bac95cc5ef5d90e6035c0' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-github --pattern '1b6385f068b4d35d6688150e964694353c96c8ed027bac95cc5ef5d90e6035c0' --dir release-assets
printf '%s %s\n' '1b6385f068b4d35d6688150e964694353c96c8ed027bac95cc5ef5d90e6035c0' 'release-assets/1b6385f068b4d35d6688150e964694353c96c8ed027bac95cc5ef5d90e6035c0' | sha256sum -c -
asset="$(npm pack --silent)"
test -f "$asset"
expected="$(sha256sum "$asset")"
if ! gh release view "$version" >/dev/null 2>&1; then
gh release create "$version" "$asset" 'release-assets/0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d' 'release-assets/36e1f6822242625e745e5fb1611d8c74c2b769e39b902d1eff56e384bb3ae29e' 'release-assets/97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01' 'release-assets/archive-profile.mjs' 'release-assets/ce09169123e270319fcd9cfb46c414d8693d6e28800e1cf58cc4716e531915cb' 'release-assets/1b6385f068b4d35d6688150e964694353c96c8ed027bac95cc5ef5d90e6035c0' --title "$version" --notes "$version"
fi
gh release download "$version" --pattern "$(basename "$asset")" --dir "$RUNNER_TEMP/release-back"
actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$asset")")"
test "${expected%% *}" = "${actual%% *}"
extra='release-assets/0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d'
test -f "$extra"
test "$(basename "$extra")" != "$(basename "$asset")"
extra_expected="$(sha256sum "$extra")"
gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back"
extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")"
test "${extra_expected%% *}" = "${extra_actual%% *}"
extra='release-assets/36e1f6822242625e745e5fb1611d8c74c2b769e39b902d1eff56e384bb3ae29e'
test -f "$extra"
test "$(basename "$extra")" != "$(basename "$asset")"
extra_expected="$(sha256sum "$extra")"
gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back"
extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")"
test "${extra_expected%% *}" = "${extra_actual%% *}"
extra='release-assets/97190fb5e62ffd89940dc08bbbfc7ff865bd4f2096c1805e172297a4a441cb01'
test -f "$extra"
test "$(basename "$extra")" != "$(basename "$asset")"
extra_expected="$(sha256sum "$extra")"
gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back"
extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")"
test "${extra_expected%% *}" = "${extra_actual%% *}"
extra='release-assets/archive-profile.mjs'
test -f "$extra"
test "$(basename "$extra")" != "$(basename "$asset")"
extra_expected="$(sha256sum "$extra")"
gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back"
extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")"
test "${extra_expected%% *}" = "${extra_actual%% *}"
extra='release-assets/ce09169123e270319fcd9cfb46c414d8693d6e28800e1cf58cc4716e531915cb'
test -f "$extra"
test "$(basename "$extra")" != "$(basename "$asset")"
extra_expected="$(sha256sum "$extra")"
gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back"
extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")"
test "${extra_expected%% *}" = "${extra_actual%% *}"
extra='release-assets/1b6385f068b4d35d6688150e964694353c96c8ed027bac95cc5ef5d90e6035c0'
test -f "$extra"
test "$(basename "$extra")" != "$(basename "$asset")"
extra_expected="$(sha256sum "$extra")"
gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back"
extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")"
test "${extra_expected%% *}" = "${extra_actual%% *}"
17 changes: 17 additions & 0 deletions .github/workflows/tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: tag
on:
push:
branches: [main]
jobs:
tag:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: |
version="v$(node -p "require('./package.json').version")"
git tag --list "$version" | grep -q . && exit 0
git tag "$version" && git push origin "$version"
22 changes: 22 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: test
on:
push:
branches: [main]
pull_request:
jobs:
test:
strategy:
matrix:
node: [22, 24]
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- run: npm run build
- run: npm test
- run: npm pack --silent
27 changes: 1 addition & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,9 @@
# @lapxo/topos-github

![version 0.1.2](https://img.shields.io/badge/version-0.1.2-8c959f) ![license MIT](https://img.shields.io/badge/license-MIT-8c959f) ![node >=22.12](https://img.shields.io/badge/node-%3E%3D22.12-8c959f) ![dependencies 1](https://img.shields.io/badge/dependencies-1-8c959f) ![cases 0 hold](https://img.shields.io/badge/cases-0_hold-8c959f) ![verify none](https://img.shields.io/badge/verify-none-8c959f)
![license MIT](https://img.shields.io/badge/license-MIT-8c959f)

The forge a place asks for, rendered from its lines: the workflows that test, tag and release it, and what its repository never holds.

## Why a line

A workflow is a line of the place. A release is the tag that workflow cuts. A repository holds only what its ignore line allows.

## One repository

<p align="center"><img src="docs/img/world.svg" alt="declares , runs on , reaches, 3 regions, the longest of them 0 lines, 0 vector files, each held from the blob, pinned by topos-github and run by the host" width="640"></p>

## Line

Add to your lock:
sources/topos-github value=github:Lapxo/topos-github
uses/topos-github sha256:<release digest>
https://github.com/Lapxo/topos-github/releases
Fetch the release asset, verify its sha256 equals the uses/ line, place it in bound/cas/blobs/. Fold: its pages appear.
open: line/install needs=host/resolve — when bound resolves sources/ itself, the fetch line leaves the page by fold.

It rests on topos.

## Check

● 0 cases hold

● `npm ci && npm run build`

## Pointers

- [Reference](docs/reference.md)
Loading
Loading