experimental-cli/README.md

3.2 KiB

Pigeon CLI

A single executable to manage a Pigeon node.

Project Status

Don't use the Go version yet. If you want something stable, there is a Ruby version that is feature complete.

Setup

By default, data is stored in ~/.pigeon. You can override this value by specifying a PIGEON_PATH ENV var.

Help Wanted

Want to get involved? Below are a few things I need help with.

Email contact@vaporsoft.xyz if you have any questions.

  • Writing a BNF grammar for message parsing
  • Test coverage increases
  • Manual QA of features and edge cases
  • Providing constructive feedback on documentation
  • Cross-compiling windows binaries
  • Security auditing and vulnerability discovery. Please send security concerns to contact@vaporsoft.xyz privately.

TODO

  • Add forgery protection tests
  • Add a real testing lib to DRY things up.
  • Validate and scrutinize depth, prev fields when ingesting message bundles to account for poorly written peer clients.
  • Get a good CI system going? Run tests at PR time, provide prebuilt binaries, prevent coverage slips, etc..
  • Add a transact() helper to ensure all transactions are closed out.
  • Switch to SQLX for extra sanity.
  • Write docs for all CLI commands / args AFTER completion.
  • Start using the check helper instead of error != nil.
  • Update spec to only allow UPPERCASE MULTIHASHES
  • Implement query.pgn protocol, as outlined here and here.
  • Add a note about "shallow" vs. "deep" verification.
  • Finish all the things below
Done? Noun Verb Flag / arg 1 Flag 2
bundle ingest
message show message mhash
message find --all
blob remove mhash
message find --last
draft create
draft publish
draft show
draft update --key=? --value=?
bundle create
X blob find
X blob add file path
X blob add STDIO pipe
X peer untrack peer mhash
X peers list
X peer block peer mhash
X peer follow peer mhash
X identity show
X identity create
X help
X version

Run Tests

Without coverage:

./tests.sh

With coverage:

./coverage.sh

Build Project

./build.sh