# 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](https://tildegit.org/PigeonProtocolConsortium/Pigeon-Ruby). # 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](https://github.com/jmoiron/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](%CSBzyskUxqbFSgOBh8OkVLn18NqX3zu3CF58mm2JHok=.sha256) and [here](%KWETmo1cmlfYK4N6FVL9BHYfFcKMy49E94XGuZSPGCw=.sha256). - [ ] 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 ```