commit | 731367a997b16c9718027c781ef0fb2ab6d82ec5 | [log] [tgz] |
---|---|---|
author | Mitchell Kember <mkember@google.com> | Mon Apr 27 17:31:06 2020 -0700 |
committer | Mitchell Kember <mkember@google.com> | Mon Apr 27 17:54:04 2020 -0700 |
tree | fca69b46dc1aea619b566b964a5459904122fe29 | |
parent | 206cc28cdfbd8007cd42fb8aefcb63dbad133266 [diff] |
Import zx from zircon/vdso, and various other fixes This CL enables `using zx` to work in fidlbolt. The zx library used to be a fidlc built-in, but as of Ib026655c3e8133bb14c92d0a5a68e730e26b746d it is an ordinary library. This means fidlbolt needs to search in //zircon/vdso so find its .fidl files. In addition, this CL: * Restructures the deployment/ directory to put all FIDL libraries under deployment/fuchsia/. This fixes the info tooltips which say where the library was found (library.go searches for "/fuchsia/" in the path). * Sources fx-env.sh in prepare_deployment.sh so that users with multiple checkouts can simply run `FUCHSIA_DIR=... ./prepare_deployment.sh`. * Changes the Makefile to use lowercase variable names, to distinguish them from user-configurable env variables which are in uppercase. * Improves the error message when the fidlbolt_deployment.json file cannot be read or fails to parse. * Updates the README to recommend installing npm instead of nodejs (both are required, and the former gets you both). * Changes the frontend to use <html lang="en">. Change-Id: I0ff7ebba77089e483a506e522f7fc5ba1b482e91
fidlbolt is web app for exploring FIDL code and bytes, inspired by Matt Godbolt's Compiler Explorer.
To run a local fidlbolt server:
fx build host_x64/{fidlc,fidlgen_{llcpp,hlcpp,rust,go,dart}} zircon/tools
.make run
.http://localhost:8080
.If you don't want changes in the Fuchsia tree (e.g. rebuilding fidlc or changing FIDL libraries) to affect the running fidlbolt, run ./prepare_deployment.sh
and use make run DEPLOYMENT=1
instead.
The backend is written in Go 1.13. It uses net/http to serve static files and handle POST requests.
The frontend is written in Elm and TypeScript. It uses webpack for bundling.
To set up the frontend:
sudo apt-get install npm
.cd frontend && npm ci
(using ci
instead of install
ensures a repeatable build).Then, use one of the commands listed in npm run
:
npm run dev
: build in development modenpm run watch
: rebuild in development mode on every file changenpm run tc
: typecheck TypeScript filesnpm run lint
: run eslint on TypeScript filesnpm run fix
: format and fix lint issues in TypeScript and Elm filesnpm run build
: build in production modeThe build commands read files in frontend/src/
and generate output in frontend/dist/
.
If you are developing on Linux, ./watch.sh
provides an easy workflow. It automatically watches code in the frontend (using npm run watch
) and backend (using inotifywait), rebuilding and restarting the server as necessary. It does not perform hot/live reloading: you still need to refresh the browser manually to see changes.
Before making a CL, always run make format
.
The project uses Docker for containerized deployment.
To build and run a new image locally:
sudo apt-get install docker-ce
../prepare_deployment.sh
docker image build -t fidlbolt .
docker container run --publish 8080:8080 --detach --name fb fidlbolt
You might need to use sudo
with the Docker commands.