A CLI tool for [**rustypaste**](https://github.com/orhun/rustypaste).
![demo](img/demo.gif)
## Installation
### crates.io
```sh
cargo install rustypaste-cli
```
#### Features
- `use-native-certs`: makes the default TLS implementation use the OS' trust store. [\*](https://github.com/algesten/ureq#https--tls--ssl) (disabled)
To enable crate features, use the `--features` flag as follows:
```sh
cargo install rustypaste-cli --features use-native-certs
```
### Arch Linux
```
pacman -S rustypaste-cli
```
### Alpine Linux
`rustypaste-cli` is available for [Alpine Edge](https://pkgs.alpinelinux.org/packages?name=rustypaste-cli&branch=edge). It can be installed via [apk](https://wiki.alpinelinux.org/wiki/Alpine_Package_Keeper) after enabling the [testing repository](https://wiki.alpinelinux.org/wiki/Repositories).
```sh
apk add rustypaste-cli
```
### Binary releases
See the available binaries on [releases](https://github.com/orhun/rustypaste-cli/releases/) page.
### Build from source
```sh
git clone https://github.com/orhun/rustypaste-cli.git
cd rustypaste-cli/
cargo build --release
```
## Usage
`rpaste [options] `
```
-h, --help prints help information
-v, --version prints version information
-V, --server-version retrieves the server version
-l, --list lists files on the server
-d, --delete delete files from server
-o, --oneshot generates one shot links
-p, --pretty prettifies the output
-c, --config CONFIG sets the configuration file
-s, --server SERVER sets the address of the rustypaste server
-a, --auth TOKEN sets the authentication or delete token
-u, --url URL sets the URL to shorten
-r, --remote URL sets the remote URL for uploading
-e, --expire TIME sets the expiration time for the link
-n, --filename NAME sets and overrides the filename
```
### Set credentials
Either set the credentials on the command line (not recommended):
```sh
rpaste -s "https://paste.example.com" -a ""
```
or specify them in the [configuration file](#configuration).
### Upload files
```sh
rpaste awesome.txt other.txt
```
### Upload from stdin
```sh
echo "Hello World" | rpaste -
```
### Shorten URLs
```sh
rpaste -u https://example.com/some/long/url
```
### Paste from URL
```sh
rpaste -r https://example.com/file.txt
```
### One shot
```sh
rpaste -o disappear_after_seen.txt
```
### One shot URL
```sh
rpaste -ou https://example.com/some/long/url
```
### Expiration
```sh
rpaste -e 10min expires_in_10_minutes.txt
```
```sh
rpaste -e 1hour -u https://example.com/expire/1hour
```
\* Supported units: `ns`, `us`, `ms`, `sec`, `min`, `hours`, `days`, `weeks`, `months`, `years`
### List uploaded files
```sh
rpaste -l
```
\* Use `-p` for table output instead of JSON.
### Delete files from server
```sh
rpaste -d awesome.UA86.txt other.JSNI.txt
```
### Override the filename
```sh
rpaste -n filename-on-server.txt awesome.txt
```
\* rustypaste >=0.15.0 is required for this argument to work, otherwise the filename will not be overridden.
### Extras
- Show a _prettier_ output: `rpaste -p [...]`
- [Disable colors](https://no-color.org/) in the output: `NO_COLOR=1 rpaste -p [...]`
## Configuration
The configuration file can be specified via `--config` argument and `RPASTE_CONFIG` environment variable or it can be placed to the following global locations:
- `` `/` `rustypaste/config.toml`
- `` `/` `.rustypaste/config.toml`
`` depends on the platform as shown in the following table:
| Platform | Value | Example |
| -------- | ------------------------------------- | ---------------------------------------- |
| Linux | `$XDG_CONFIG_HOME` or `$HOME`/.config | /home/alice/.config |
| macOS | `$HOME`/Library/Application Support | /Users/Alice/Library/Application Support |
| Windows | `{FOLDERID_RoamingAppData}` | C:\Users\Alice\AppData\Roaming |
See [config.toml](./config.toml) for configuration options.
## Contributing
Pull requests are welcome!
#### License
All code is licensed under The MIT License.