Skip to content

Commit 94bbb7f

Browse files
committed
Unify edgezero.toml into one multi-adapter manifest
Rewrite the root edgezero.toml as a single EdgeZero manifest covering all four adapters (fastly, axum, cloudflare, spin), aligned with edgezero's canonical format: `[app]` with entry = crates/trusted-server-core, one `[adapters.<name>]` block each with real crate/manifest paths, build target/profile/features, and commands (Fastly's preserved verbatim). The locked edgezero schema has no per-adapter store overrides and rejects unknown fields, so stores declare the union of logical ids with `default` set to the primary id. This is safe: nothing in src/ or build.rs reads edgezero.toml — Fastly binds its real stores in fastly.toml, and core resolves store names from trusted-server.toml at runtime. The manifest ids are portable metadata consumed only by `ts config validate` and edgezero deploy tooling. The Spin adapter's regression test now loads this root manifest (include_str!("../../../edgezero.toml")), so the duplicate adapter-spin/edgezero.toml is deleted and spin.toml's watch glob repointed. Validated with `ts config validate` (strict); spin (29) and cli (8) tests pass.
1 parent 34ec9c1 commit 94bbb7f

4 files changed

Lines changed: 87 additions & 30 deletions

File tree

crates/trusted-server-adapter-spin/edgezero.toml

Lines changed: 0 additions & 18 deletions
This file was deleted.

crates/trusted-server-adapter-spin/spin.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,4 @@ v_active_x2dkids = "{{ v_active_x2dkids }}"
4646

4747
[component.trusted-server.build]
4848
command = "cargo build --target wasm32-wasip1 --release -p trusted-server-adapter-spin --features spin"
49-
watch = ["src/**/*.rs", "Cargo.toml", "edgezero.toml", "spin.toml"]
49+
watch = ["src/**/*.rs", "Cargo.toml", "../../edgezero.toml", "spin.toml"]

crates/trusted-server-adapter-spin/tests/routes.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ fn routes_build_without_panic() {
5757

5858
#[test]
5959
fn edgezero_manifest_loads_and_resolves_spin_stores() {
60-
let loader =
61-
edgezero_core::manifest::ManifestLoader::load_from_str(include_str!("../edgezero.toml"));
60+
let loader = edgezero_core::manifest::ManifestLoader::load_from_str(include_str!(
61+
"../../../edgezero.toml"
62+
));
6263
let manifest = loader.manifest();
6364

6465
assert!(

edgezero.toml

Lines changed: 83 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,48 @@
1+
# Unified EdgeZero manifest for Trusted Server.
2+
#
3+
# One portable app definition plus one `[adapters.<name>]` block per runtime
4+
# target (fastly, axum, cloudflare, spin). Store declarations are portable:
5+
# they list the logical store ids the app uses. Platform store names / bindings
6+
# are supplied out of band (fastly.toml service resources, the Spin runtime,
7+
# Cloudflare bindings, axum local files), so the ids here are the union across
8+
# adapters with `default` set to the primary (production Fastly) id.
9+
110
[app]
211
name = "trusted-server"
12+
entry = "crates/trusted-server-core"
13+
kind = "http"
14+
version = "0.1.0"
15+
16+
# -- Stores ------------------------------------------------------------------
17+
# Logical store ids only. The union covers every adapter's binding; `default`
18+
# names the primary id (Fastly production for kv/config/secrets). Runtime store
19+
# names resolve per platform outside this manifest.
20+
21+
[stores.kv]
22+
ids = ["trusted_server_kv", "ec_identity_store"]
23+
default = "trusted_server_kv"
24+
25+
[stores.config]
26+
ids = ["trusted_server_config"]
27+
default = "trusted_server_config"
28+
29+
# Secrets: axum/cloudflare/spin are Single-capable for secrets stores, so this
30+
# declares exactly one logical id. Runtime binds the platform secret store out
31+
# of band (fastly.toml secret stores, Spin runtime, Cloudflare bindings).
32+
[stores.secrets]
33+
ids = ["trusted_server_secrets"]
34+
default = "trusted_server_secrets"
35+
36+
# -- Fastly Compute (production) --------------------------------------------
337

438
[adapters.fastly.adapter]
39+
crate = "crates/trusted-server-adapter-fastly"
540
manifest = "fastly.toml"
641

42+
[adapters.fastly.build]
43+
target = "wasm32-wasip1"
44+
profile = "release"
45+
746
[adapters.fastly.commands]
847
auth-login = "fastly profile create"
948
auth-logout = "fastly profile delete"
@@ -12,14 +51,49 @@ build = "cargo build --bin trusted-server-adapter-fastly --release --target wasm
1251
serve = "fastly compute serve"
1352
deploy = "fastly compute publish"
1453

15-
[stores.config]
16-
ids = ["app_config"]
17-
default = "app_config"
54+
# -- Axum (native dev server) -----------------------------------------------
1855

19-
[stores.secrets]
20-
ids = ["secrets"]
21-
default = "secrets"
56+
[adapters.axum.adapter]
57+
crate = "crates/trusted-server-adapter-axum"
58+
manifest = "crates/trusted-server-adapter-axum/axum.toml"
2259

23-
[stores.kv]
24-
ids = ["ec_identity_store"]
25-
default = "ec_identity_store"
60+
[adapters.axum.build]
61+
target = "native"
62+
profile = "dev"
63+
64+
[adapters.axum.commands]
65+
build = "cargo build -p trusted-server-adapter-axum"
66+
serve = "cargo run -p trusted-server-adapter-axum"
67+
68+
# -- Cloudflare Workers ------------------------------------------------------
69+
70+
[adapters.cloudflare.adapter]
71+
crate = "crates/trusted-server-adapter-cloudflare"
72+
manifest = "crates/trusted-server-adapter-cloudflare/wrangler.toml"
73+
74+
[adapters.cloudflare.build]
75+
target = "wasm32-unknown-unknown"
76+
profile = "release"
77+
features = ["cloudflare"]
78+
79+
[adapters.cloudflare.commands]
80+
build = "cargo build -p trusted-server-adapter-cloudflare --target wasm32-unknown-unknown --features cloudflare"
81+
serve = "wrangler dev --cwd crates/trusted-server-adapter-cloudflare"
82+
deploy = "wrangler deploy --cwd crates/trusted-server-adapter-cloudflare"
83+
84+
# -- Fermyon Spin ------------------------------------------------------------
85+
86+
[adapters.spin.adapter]
87+
crate = "crates/trusted-server-adapter-spin"
88+
manifest = "crates/trusted-server-adapter-spin/spin.toml"
89+
component = "trusted-server"
90+
91+
[adapters.spin.build]
92+
target = "wasm32-wasip1"
93+
profile = "release"
94+
features = ["spin"]
95+
96+
[adapters.spin.commands]
97+
build = "cargo build --package trusted-server-adapter-spin --target wasm32-wasip1 --features spin --release"
98+
serve = "spin up --from crates/trusted-server-adapter-spin"
99+
deploy = "spin deploy --from crates/trusted-server-adapter-spin"

0 commit comments

Comments
 (0)