modes: [release, debug], release first as the default; build-apk.sh already takes the mode as its last argument, which is how Dev Updater passes it. enroll: goes through server/enroll-link.sh rather than the binary directly, because the command is handed the app's mode too and because the server may have been built in either profile -- the wrapper ignores the word and takes whichever ai-server exists, release first. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
59 lines
2.9 KiB
Plaintext
59 lines
2.9 KiB
Plaintext
// Read by Dev Updater. Structured as the body of the config: no outer
|
|
// parentheses, so nothing here is indented for the sake of a wrapper.
|
|
//
|
|
// This file sits at the checkout root because the project Dev Updater
|
|
// serves is the whole repository -- one checkout producing two things.
|
|
// Each component says where it lives with `cwd`, relative to this
|
|
// directory, rather than one of them reaching out of the other with `../`.
|
|
|
|
// What to call this project before there is a build to read a label from.
|
|
// A built APK wins: it is the authority on what will actually install.
|
|
label: "AI Sessions",
|
|
|
|
// Where this project's own state lives, said rather than guessed: it is
|
|
// what the Uninstall dialog offers to delete, and a plausible-looking
|
|
// path it worked out would read as "this component keeps nothing here"
|
|
// when it was wrong. `Ron` rather than `Script` because the answer is
|
|
// three constants -- there is nothing here worth spawning a process for.
|
|
resources: Ron("resources.ron"),
|
|
|
|
// The two halves this checkout produces: the server a phone talks to, and
|
|
// the app that talks to it. They are built in parallel -- this list is the
|
|
// set, not a sequence, so nothing here should be read as an order.
|
|
components: [
|
|
Server(
|
|
name: "server",
|
|
build: "cargo build --release",
|
|
cwd: "server",
|
|
// Dev Updater's own built-in service implementation, generated
|
|
// into its data directory and driven through the same interface a
|
|
// project-supplied script would be. ai-app carried a script of its
|
|
// own until 2026-08-28; it ran `target/release/ai-server` with no
|
|
// arguments and no environment, which is the generic case exactly,
|
|
// so it was two copies of one thing and the copy that could not be
|
|
// tested from here -- the OpenRC branch -- was duplicated with it.
|
|
//
|
|
// Resolved against this component's `cwd`, so this is
|
|
// `server/target/release/ai-server`.
|
|
service: Managed("target/release/ai-server"),
|
|
),
|
|
Apk(
|
|
name: "app",
|
|
// Release first: the first mode is the default, and the phone runs
|
|
// the release build -- a debuggable one runs Compose at a fraction
|
|
// of the speed. Each command below is run with the chosen mode as
|
|
// its last argument, which is exactly build-apk.sh's interface.
|
|
modes: ["release", "debug"],
|
|
// Resolved against this directory, and run in `app/` -- the script
|
|
// cds to its own directory anyway, so the cwd is here to say where
|
|
// the app is rather than because the build needs it.
|
|
build: "app/build-apk.sh",
|
|
cwd: "app",
|
|
// The Enroll button in this component's settings: prints the link
|
|
// that enrols the phone against the server built here, for the
|
|
// reinstalls -- a signing change, a new phone -- where nobody is at
|
|
// the terminal the QR would be printed on.
|
|
enroll: "server/enroll-link.sh",
|
|
),
|
|
],
|