// 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", // Walked in order, and the order is the point: the backend is built and // delivered first, so a failing APK build leaves the phone the APK it // already had rather than half of a matched pair. components: [ Server( name: "backend", build: "cargo build --release", cwd: "server", // Installs into whichever user-service manager is here, and is how // ai-server is started, stopped and asked about. See the script. service: "server/service", ), Apk( name: "app", // 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", ), ],