Skip to content

Commit

Permalink
CLI: add readme with install instructions
Browse files Browse the repository at this point in the history
The text in this readme is based largely on the one from the old Go CLI.

Some sections have been removed since support for the thing being
mentioned was not carried forward (e.g. `--data-*` flags and also piping
json bodies in which apparently our new clap-based parser doesn't do).

Installer instructions are limited to the initial set offered via
#1593

More sections will be added to describe `homebrew`/`cargo` installation
once available.
  • Loading branch information
svix-onelson committed Dec 31, 2024
1 parent 66042cd commit 6aa61ac
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 4 deletions.
157 changes: 157 additions & 0 deletions svix-cli/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<h1 align="center">
<a href="https://www.svix.com">
<img width="120" src="https://avatars.githubusercontent.com/u/80175132?s=200&v=4" />
<p align="center">Svix - Webhooks as a service</p>
</a>
</h1>

# Svix CLI

[![GitHub release (latest by date)][release-img]][release]



A CLI to interact with the Svix API.

**With the Svix CLI, you can:**

- Interact with the Svix CLI
- Validate Webhook payloads


## Installation

### Pre-built executables

#### Via installer scripts

Pre-build binaries are available for Linux, macOS via shell script installers.

```
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/svix/svix-webhooks/releases/download/v1.44.0/svix-cli-installer.sh | sh
```

For Windows users, installation can be done via powershell:

```
powershell -ExecutionPolicy ByPass -c "irm https://github.com/svix-onelson/svix-webhooks/releases/download/v1.54.0/svix-cli-installer.ps1 | iex"
```

These scripts will install the binaries to `~/.svix/bin` and also add this directory to your `PATH` by default.

#### Manually

Additionally, you can select executables to download directly from [our releases page](https://github.com/svix/svix-cli/releases), and use them as is without
having to install anything.

1. Download and extract the archive for your operating system.
2. Run the `svix-cli` executable from the command line: `./svix-cli help`.

> ![Note]
> You may need to allow execution by running `chmod +x svix-cli`.

You can also put the binaries anywhere in your `PATH` so you can run the command from anywhere without needing to provide its full path. On macOS or Linux you can achieve this by moving the executable to `/usr/local/bin` or `/usr/bin`.


## Usage

Installing the Svix CLI provides access to the `svix` command.

```sh
svix-cli [command]

# Run `svix-cli help` for information about the available commands
svix-cli help

# or add the `--help` flag to any command for a more detailed description and list of flags
svix-cli [command] --help
```


## Using the `listen` command

The `listen` command creates an on-the-fly publicly accessible URL for use when testing webhooks.

> ![Note]
> You don't need a Svix account when using the `listen` command.
The cli then acts as a proxy, forwarding any requests to the given local URL.
This is useful for testing your webhook server locally without having to open a port or
change any NAT configuration on your network.

Example:

```sh
svix-cli listen http://localhost:8000/webhook/
```

Output:

```sh
Webhook Relay is now listening at:
https://play.svix.com/in/c_WKSAVmtHJrohMmgvhF14Mv8FBnM/

All requests on this endpoint will be forwarded to your local URL:
http://localhost:8888/
View logs and debug information at:
https://play.svix.com/view/c_WKSAVmtHJrohMmgvhF14Mv8FBnM/
To disable logging, run `svix-cli listen --no-logging`
```

The above command will return you a unique URL and forward any POST requests it receives
to `http://localhost:8000/webhook/`.

## Interacting with the Svix Server

```sh
# Set your Auth Token temporarily via the SVIX_AUTH_TOKEN environment variable
export SVIX_AUTH_TOKEN=<MY-AUTH-TOKEN>
# or to persistently store your auth token in a config file run
svix-cli login # interactively configure your Svix API credentials

# Create an Application with the name "Demo"
svix-cli application create '{ "name": "demo" }'

# List Applications
svix-cli application list --limit 2 --iterator some_iterator
```

## Commands

The Svix CLI supports the following commands:
| Command | Description |
| --------------- | ---------------------------------------------------------- |
| login | Interactively configure your Svix API credentials |
| application | List, create & modify applications |
| authentication | Manage authentication tasks such as getting dashboard URLs |
| endpoint | List, create & modify endpoints |
| event-type | List, create & modify event types |
| message | List & create messages |
| message-attempt | List, lookup & resend message attempts |
| signature | Sign or Verify the signature of a webhook message |
| listen | Forward webhook requests a local url |
| integration | List, create & modify integrations |
| open | Quickly open Svix pages in your browser |
| completion | Generate completion script |
| version | Get the version of the Svix CLI |
| help | Help about any command |


## Shell Completions

Shell completion scripts are provided for `bash`, `elvish`, `fish`, `powershell`, and `zsh`.

To generate a script for your shell type `svix-cli completion <SHELL NAME>`.

For detailed instructions on configuring completions for your shell run `svix-cli completion --help`.


## Documentation

For a more information, checkout our [API reference](https://docs.svix.com).



[release-img]: https://img.shields.io/github/v/release/svix/svix-cli
[release]: https://github.com/svix/svix-cli/releases
5 changes: 4 additions & 1 deletion svix-cli/src/cmds/login.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ pub fn prompt() -> Result<()> {
"All Set! Your config has been written to `{}`",
fp.as_os_str().to_str().unwrap_or_default()
);
println!("Type `svix --help` to print the Svix CLI documentation!");
println!(
"Type `{} --help` to print the Svix CLI documentation!",
crate::BIN_NAME
);
Ok(())
}
2 changes: 1 addition & 1 deletion svix-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ async fn main() -> Result<()> {

fn get_client(cfg: &Config) -> Result<svix::api::Svix> {
let token = cfg.auth_token.clone().ok_or_else(|| {
anyhow::anyhow!("No auth token set. Try running `svix login` to get started.")
anyhow::anyhow!("No auth token set. Try running `{BIN_NAME} login` to get started.")
})?;
let opts = get_client_options(cfg)?;
Ok(svix::api::Svix::new(token, Some(opts)))
Expand Down
5 changes: 3 additions & 2 deletions svix-cli/src/relay/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,9 +183,10 @@ impl Client {
r#"
View logs and debug information at:
{}
To disable logging, run `svix listen --no-logging`
To disable logging, run `{} listen --no-logging`
"#,
view_url(&self.token)
view_url(&self.token),
crate::BIN_NAME,
);
}
} else {
Expand Down

0 comments on commit 6aa61ac

Please sign in to comment.