This commit is contained in:
Robin Appelman 2026-08-13 01:50:53 +02:00
commit db71d66600
5 changed files with 48 additions and 46 deletions

View file

@ -2,11 +2,11 @@
Thanks for taking the time !
Please ensure that some basic checks are passed before creating this Pull Request:
Please ensure that some basic checks are passed before creating this Pull
Request:
- [ ] Cargo Format
- Run `cargo fmt` on the project.
- [ ] Clippy lints
- Run `cargo clippy -- -Dwarnings` on the project to check for suggestions
- Run `cargo clippy --fix` to let clippy apply the suggestions itself, if any.
@ -14,5 +14,5 @@ Please ensure that some basic checks are passed before creating this Pull Reques
This can be tiresome for frequent contributors, so it might would be better if
you used a git pre-push hook as mentioned in the [readme](readme.md#hacking).
The [Build CI](.github/workflow/buildci.yaml) will also check whether the project can be compiled and
cross-compiled to arm64 without any errors.
The [Build CI](.github/workflow/buildci.yaml) will also check whether the
project can be compiled and cross-compiled to arm64 without any errors.

View file

@ -15,7 +15,6 @@ jobs:
- name: Clippy
run: cargo clippy -- -Dwarnings
build:
needs: pre-build-checks
strategy:

View file

@ -9,15 +9,15 @@ edition = "2021"
build = "build.rs"
[dependencies]
rand ="0.10.1"
rocket = "0.5.1"
tree_magic = "0.2.3"
syntect = "5.3.0"
rust-embed="8.11.0"
clap = { version = "4.6.1", features = ["derive", "env"] }
once_cell = "1"
rand = "0.10.1"
rocket = "0.5.1"
rust-embed = "8.11.0"
sha256 = "1"
syntect = "5.3.0"
time = { version = "0.3", features = ["formatting"] }
tree_magic = "0.2.3"
[dependencies.rocket_dyn_templates]
version = "0.2.0"

View file

@ -1,4 +1,4 @@
version: '3.3'
version: "3.3"
services:
pastebin:
image: wantguns/bin

View file

@ -1,4 +1,5 @@
# Bin
A minimal pastebin which also accepts binary files like Images, PDFs and ships
multiple clients.
@ -25,7 +26,8 @@ You can paste
#### Installation
Get the client from [this repository](contrib/cli/client) or from my deployed paste:
Get the client from [this repository](contrib/cli/client) or from my deployed
paste:
```bash
curl -o pst https://bin.noracodes.dev/r/client && chmod +x pst
@ -51,10 +53,9 @@ PASTELINK="$URL$RESPONSE"
echo "$PASTELINK.$EXTENSION"
```
You have the option to remove the `/client` description / help in the
landing page. To show the `/client` description, run the `bin` binary
with either `BIN_CLIENT_DESC` env variable or a `-c` flag. More on
arguments later
You have the option to remove the `/client` description / help in the landing
page. To show the `/client` description, run the `bin` binary with either
`BIN_CLIENT_DESC` env variable or a `-c` flag. More on arguments later
#### Usage
@ -75,23 +76,27 @@ $ cat someimage.png | pst
```vim
nnoremap <leader>p :!pst %<CR>
```
#### Usage
Use `<leader> + p` paste.
## Server Deployment
The [main fork](https://github.com/wantguns/bin) ships Docker and binary releases.
The [main fork](https://github.com/wantguns/bin) ships Docker and binary
releases.
### Manual
- Build on your own:
```bash
# A statically linked build
$ cargo build --release
```
- Execute the binary as is, no extra shenanigans needed:
```bash
$ ./bin
```
@ -131,9 +136,10 @@ This pastebin utilizes a custom configuration provider from Rocket. Apart from
the essential arguments, you can also use environment variables, which have the
highest preference in order.
Everything from the [official Rocket
doc](https://rocket.rs/v0.5-rc/guide/configuration/#overview) is supported,
just that you have to prefix the env variable with "BIN_":
Everything from the
[official Rocket doc](https://rocket.rs/v0.5-rc/guide/configuration/#overview)
is supported, just that you have to prefix the env variable with "BIN\_":
```txt
BIN_PORT=6163
BIN_ADDRESS=0.0.0.0
@ -145,20 +151,17 @@ BIN_IDENT=false
## API
`GET /r/<id>[.<ext>]`
Get raw pastes
`GET /r/<id>[.<ext>]` Get raw pastes
`GET /p/<id>`
Get pastes with a pretty UI
`GET /p/<id>.<ext> `
Get syntax highlighted pastes in the pretty UI.
E.g. https://bin.nora.codes/p/foobaz.cpp should return a C++ syntax
highlighted paste
Get syntax highlighted pastes in the pretty UI. E.g.
https://bin.nora.codes/p/foobaz.cpp should return a C++ syntax highlighted paste
`POST /`
Post binary data, get object ID
`POST /` Post binary data, get object ID
## Design Decisions
@ -170,13 +173,13 @@ This pastebin:
deploying it easier.
- uses server sided highlighting, which ensures that everything stays light and
snappy at the client side.
- uses very minimal frontend because a pastebin does not need it. It focuses
(or atleast tries to) on getting things done in minimum amount of clicks.
- uses very minimal frontend because a pastebin does not need it. It focuses (or
atleast tries to) on getting things done in minimum amount of clicks.
## Hacking
- If you want to ensure your pushed refs will pass CI, add the prepush script
to your Git hooks:
- If you want to ensure your pushed refs will pass CI, add the prepush script to
your Git hooks:
```bash
$ cp -a tools/prepush .git/hooks/pre-push