blob: 1ec8dd4a78744b642e076e62d80bee579bd6c3c2 [file] [log] [blame] [view]
# Scripts for PolyGerrit local development against prod using MitmProxy.
## Installation (OSX)
1. Install Docker from http://docker.com
2. Start the proxy and create a new proxied browser instance
```
cd ~/gerrit
~/mitm-gerrit/mitm-serve-app-dev.sh
```
3. Make sure that the browser uses the proxy provided by the command line,
e.g. if you are a Googler check that the BeyondCorp extension uses the
"System/Alternative" proxy.
4. Install MITM certificates
- Open http://mitm.it in the proxied browser window
- Follow the instructions to install MITM certs
## Usage
### Add or replace a single plugin containing static content
To develop unminified plugin that loads multiple files, use this.
1. Create a new proxied browser window and start mitmproxy via Docker:
```
~/mitm-gerrit/mitm-single-plugin.sh ./path/to/static/plugin.html
```
2. Open any *.googlesource.com domain in proxied window
3. plugin.html and ./path/to/static/* will be served
### Add or replace a minified plugin for *.googlesource.com
This flow assumes no additional .html/.js are needed, i.e. the plugin is a single file.
1. Create a new proxied browser window and start mitmproxy via Docker:
```
~/mitm-gerrit/mitm-plugins.sh ./path/to/plugin.html,./maybe/one/more.js
```
2. Open any *.googlesource.com domain in proxied window
3. plugin.html and more.js are served
### Force or replace default site theme for *.googlesource.com
1. Create a new proxied browser window and start mitmproxy via Docker:
```
~/mitm-gerrit/mitm-theme.sh ./path/to/theme.html
```
2. Open any *.googlesource.com domain in proxied window
3. Default site themes are enabled.
4. Local `theme.html` content replaces `/static/gerrit-theme.html`
5. `/static/*` URLs are served from local theme directory, i.e. `./path/to/`
### Serve uncompiled PolyGerrit
1. Create a new proxied browser window and start mitmproxy via Docker:
```
cd ~/gerrit
~/mitm-gerrit/mitm-serve-app-dev.sh
```
2. Open any *.googlesource.com domain in proxied window
3. Instead of prod UI (gr-app.html, gr-app.js), local source files will be served