2 stable releases

1.0.1 Jan 22, 2022

#21 in #companion

GPL-3.0-or-later

32KB
357 lines

pmis

builds.sr.ht status built with nix

crates.io

Packaging status

About

What

This is a CLI companion tool for paste.misterio.me, allowing you to easily upload and manage your pastes, as well as download any pastes you want.

Where

The source code (licensed under GPLv3) for this app can be found (together with paste.misterio.me's) at sourcehut or github. Feel free to contribute wherever you feel more confortable.

How

The CLI is handled by clap, the API requests are made through reqwest, and the output is formatted using bat.

Installation

pmis is available on crates.io, on the AUR, and there's also a nix flake in the repo for usage with nix.

Cargo

Use cargo install pmis.

You can generate completions using pmis completions <SHELL> (check your distro docs on where to install them).

Nix/NixOS/home-manager

You can get a shell with pmis using nix shell github:misterio77/pmis.

For a more permanent solution, you should add pmis to your flake inputs, add the overlay, and put it wherever you usually put packages (i recommend using home-manager, we even have a module you can import).

If you want to avoid compiling, pmis is cached on cachix: cachix use misterio.

Completions are provided through the derivation.

Arch Linux

Use your favorite AUR helper: paru -S pmis.

Completions are provided through the package.

Usage

The default API URL is https://paste.misterio.me, you can switch to another (if you're self hosting an instance, for example) using --api.

All commands and options are fully documented through --help

Downloading pastes

Use pmis download <ID>. The output is pretty printed using bat (unless it is piped, or if you use --raw).

Do keep in mind pastes can easily be downloaded using many utilities, such as curl: curl https://paste.misterio.me/p/ID/raw. This makes it easy to get them on any barebones system or to share with friends that don't use pmis.

Listing pastes

You can list a users public pastes (or all of them, if you're authenticated and the user is you) using pmis list [OWNER]. You can ommit OWNER if you're authentiucated. If you just want the IDs, add --ids-only.

Authenticating

You should generate a key, and then use pmis auth.

Uploading pastes

Use pmis upload [FILE]. The title of the paste is the filename, by default. You can ommit FILE to read from stdin. Use --description to add a description, and --unlisted if you don't want it to appear on your profile. When the upload is complete the link and ID will be output, you can get just the link by piping or using --link-only.

Deleting pastes

You can delete your pastes by using pmis delete <ID>.

Dependencies

~26–41MB
~617K SLoC