mirror of
https://github.com/google/bumble.git
synced 2026-04-16 00:25:31 +00:00
Create inv web.build
This command will build a wheel, copy it in the web directory, and create a file `packageFile` with the name of the wheel. If the correct override param is given, bumble.js will read `packageFile` and load that package.
This commit is contained in:
3
web/.gitignore
vendored
Normal file
3
web/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# files created by invoke web.build
|
||||
*.whl
|
||||
packageFile
|
||||
@@ -24,9 +24,14 @@ controller using some other transport (ex: `python apps/hci_bridge.py ws-server:
|
||||
For HTTP, start an HTTP server with the `web` directory as its
|
||||
root. You can use the invoke task `inv web.serve` for convenience.
|
||||
|
||||
`inv web.build` will build the local copy of bumble and automatically copy the `.whl` file
|
||||
to the web directory. To use this build, include the param `?packageFile=true` to the URL.
|
||||
|
||||
In a browser, open either `scanner/scanner.html` or `speaker/speaker.html`.
|
||||
You can pass optional query parameters:
|
||||
|
||||
* `packageFile=true` will automatically use the bumble package built via the
|
||||
`inv web.build` command.
|
||||
* `package` may be set to point to a local build of Bumble (`.whl` files).
|
||||
The filename must be URL-encoded of course, and must be located under
|
||||
the `web` directory (the HTTP server won't serve files not under its
|
||||
|
||||
@@ -75,7 +75,6 @@ export class Bumble extends EventTarget {
|
||||
}
|
||||
|
||||
// Load the Bumble module
|
||||
bumblePackage ||= 'bumble';
|
||||
console.log('Installing micropip');
|
||||
this.log(`Installing ${bumblePackage}`)
|
||||
await this.pyodide.loadPackage('micropip');
|
||||
@@ -166,6 +165,20 @@ export class Bumble extends EventTarget {
|
||||
}
|
||||
}
|
||||
|
||||
async function getBumblePackage() {
|
||||
const params = (new URL(document.location)).searchParams;
|
||||
// First check the packageFile override param
|
||||
if (params.has('packageFile')) {
|
||||
return await (await fetch('/packageFile')).text()
|
||||
}
|
||||
// Then check the package override param
|
||||
if (params.has('package')) {
|
||||
return params.get('package')
|
||||
}
|
||||
// If no override params, default to the main package
|
||||
return 'bumble'
|
||||
}
|
||||
|
||||
export async function setupSimpleApp(appUrl, bumbleControls, log) {
|
||||
// Load Bumble
|
||||
log('Loading Bumble');
|
||||
@@ -173,8 +186,7 @@ export async function setupSimpleApp(appUrl, bumbleControls, log) {
|
||||
bumble.addEventListener('log', (event) => {
|
||||
log(event.message);
|
||||
})
|
||||
const params = (new URL(document.location)).searchParams;
|
||||
await bumble.loadRuntime(params.get('package'));
|
||||
await bumble.loadRuntime(await getBumblePackage());
|
||||
|
||||
log('Bumble is ready!')
|
||||
const app = await bumble.loadApp(appUrl);
|
||||
|
||||
Reference in New Issue
Block a user