README.md 2.66 KB
Newer Older
Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
1
2
# Fast Pastebin

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
3
4
5
[![Drone (self-hosted)](https://img.shields.io/drone/build/fastpastebin/fastpastebin?server=https%3A%2F%2Fci.dev.pztrn.name)](https://ci.dev.pztrn.name/fastpastebin/fastpastebin/) [![Discord](https://img.shields.io/discord/632359730089689128)](https://discord.gg/qHN6KsD) ![Keybase XLM](https://img.shields.io/keybase/xlm/pztrn)

Easy-to-use-and-install pastebin software written in Go. No bells or whistles, no websockets and even NO JAVASCRIPT!
6

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
7
## Current functionality
8

9
* Create and view public and private pastes.
10
* Syntax highlighting.
11
* Pastes expiration.
12
* Passwords for pastes.
Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
13
* Multiple storage backends. Currently: ``flatfiles``, ``mysql`` and ``postgresql``.
14

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
15
## Caveats
16

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
17
* No links at lines numbers. See [this Chroma bug](https://github.com/alecthomas/chroma/issues/132)
18

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
19
## Installation and updating
20
21
22

Just issue:

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
23
```bash
Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
24
CGO_ENABLED=0 go get -u -v go.dev.pztrn.name/fastpastebin/cmd/fastpastebin
25
26
27
28
```

This command can be used to update Fast Paste Bin.

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
29
## Configuration
30

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
31
Take a look at [example configuration file](examples/fastpastebin.yaml.dist) which contains all supported options and their descriptions.
32

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
33
Configuration file position is irrelevant, there is no hardcoded paths where Fast Paste Bin looking for it's configuration. Use ``-config`` CLI parameter or ``FASTPASTEBIN_CONFIG`` environment variable to specify path.
34

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
35
## Developing
36

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
37
Developers should install [fileb0x](https://github.com/UnnoTed/fileb0x/) which is used as replacement to go-bindata for embedding assets into binary. After changing assets they should be recompiled into Go code. At repository root execute this command and you'll be fine:
38

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
39
```bash
40
41
42
fileb0x fileb0x.yml
```

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
43
Also if you're changed list of assets (by creating or deleting them) be sure to fix files list in ``fileb0x.yml`` file!
44

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
45
46
The rest is default - use linters, formatters, etc. VSCode with Go plugin is recommended for developing as it will perform most of linting-formatting
actions automagically. Try to follow [Go's code review comments](https://github.com/golang/go/wiki/CodeReviewComments) with few exceptions:
47

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
48
49
* Imports should be organized in 3 groups: stdlib, local, other. See [this file](https://sources.dev.pztrn.name/fastpastebin/fastpastebin/src/branch/master/domains/pastes/paste_get.go) for example.
* We're not forcing any limits on line length for code, only for comments, they should be 72-76 chars long.
50

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
51
## ToDo
52

Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
53
This is a ToDo list which isn't sorted by any parameter at all. Just a list of tasks you can help with.
54
55
56

* User CP.
* Files uploading.
57
* Passwords for files.
58
* Pastes forking and revisioning (like git or github gists).
Stanislav N. aka pztrn's avatar
Stanislav N. aka pztrn committed
59
60
* Possibility to copy-paste-edit WYSIWYG content.
* CLI client for pastes and files uploading.