wepub 0.4.0

CLI to publish browser extensions to Chrome Web Store, Firefox Add-ons, and Edge Add-ons
wepub-0.4.0 is not a library.

wepub

Crates.io CI License

A CLI to publish browser extensions to web stores.

Chrome Web Store, Firefox Add-ons and Edge Add-ons are supported.

Install

cargo install wepub

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:

wepub chrome ./my-extension.zip \
  --publisher-id  "12345678-90ab-cdef-1234-567890abcdef" \
  --item-id       "abcdefghijklmnopabcdefghijklmnop" \
  --client-id     "...apps.googleusercontent.com" \
  --client-secret "..." \
  --refresh-token "1//0..."

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:

wepub firefox ./my-addon.zip \
  --addon-id   "myaddon@example.com" \
  --api-key    "user:1234567:89" \
  --api-secret "abcdef..." \
  --channel    listed

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:

wepub edge ./my-extension.zip \
  --product-id "12345678-90ab-cdef-1234-567890abcdef" \
  --client-id  "..." \
  --api-key    "..."

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: INFO level (upload / validation progress visible)
  • -v / --verbose: DEBUG
  • -q / --quiet: WARN+ only
  • RUST_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 on reqwest + tokio)
  • crates/wepub — CLI binary (#[tokio::main], clap)
cargo build
cargo test
cargo clippy --all-targets -- -D warnings

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.