wepub
A CLI to publish browser extensions to web stores.
Chrome Web Store, Firefox Add-ons and Edge Add-ons are supported.
Install
Requires Rust 1.88+.
Usage
Chrome Web Store
Follow the Chrome Web Store API setup guide to obtain an OAuth client ID, client secret and refresh token, then:
Alternatively, pass a pre-fetched OAuth access token via --access-token. Use this for service-account auth; see Google's docs for how to obtain the token. The two authentication modes are mutually exclusive.
Credentials and IDs can also be supplied via environment variables:
| Flag | Environment variable |
|---|---|
--publisher-id |
WEPUB_CHROME_PUBLISHER_ID |
--item-id |
WEPUB_CHROME_ITEM_ID |
--client-id |
WEPUB_CHROME_CLIENT_ID |
--client-secret |
WEPUB_CHROME_CLIENT_SECRET |
--refresh-token |
WEPUB_CHROME_REFRESH_TOKEN |
--access-token |
WEPUB_CHROME_ACCESS_TOKEN |
Run wepub chrome --help for the full list of flags (publish type, deploy percentage, skip review, etc.).
Note: Only existing items can be updated. New items must still be created through the Chrome Web Store Developer Dashboard.
Firefox Add-ons
Get a JWT credential pair from https://addons.mozilla.org/developers/addon/api/key/, then:
Credentials can also be supplied via environment variables:
| Flag | Environment variable |
|---|---|
--addon-id |
WEPUB_FIREFOX_ADDON_ID |
--api-key |
WEPUB_FIREFOX_API_KEY |
--api-secret |
WEPUB_FIREFOX_API_SECRET |
Run wepub firefox --help for the full list of flags (compatibility, release notes, approval notes, source archive, etc.).
Note: Only existing add-ons can be updated. The very first version of an add-on must still be uploaded through the Firefox Add-ons web UI.
Edge Add-ons
Enable the Update REST API at the Partner Center developer dashboard (Microsoft Edge → Publish API → Create API credentials) to obtain a Client ID and an API key, then:
The product ID is the GUID shown on the Extension overview page in Partner Center.
Credentials and IDs can also be supplied via environment variables:
| Flag | Environment variable |
|---|---|
--product-id |
WEPUB_EDGE_PRODUCT_ID |
--client-id |
WEPUB_EDGE_CLIENT_ID |
--api-key |
WEPUB_EDGE_API_KEY |
Run wepub edge --help for the full list of flags (notes for the certification team, etc.).
Note: Only existing products can be updated. The very first version of a product must still be created and published through Partner Center.
.env file
wepub reads a .env file from the current working directory at startup. Any KEY=VALUE lines populate the process environment for subsequent flag resolution, so the WEPUB_* variables documented above can live in .env alongside your project. Existing shell environment values take precedence over .env entries.
Logging
- Default:
INFOlevel (upload / validation progress visible) -v/--verbose:DEBUG-q/--quiet:WARN+onlyRUST_LOG: takes precedence (e.g.RUST_LOG=trace)
Development
This is a Cargo workspace with two crates:
crates/wepub-core— async library that talks to store APIs (built onreqwest+tokio)crates/wepub— CLI binary (#[tokio::main],clap)
Pre-commit hooks (prek) run cargo fmt --check and cargo clippy on Rust file changes.
License
Licensed under either of MIT or Apache-2.0, at your option.