commit a5e2478cfcfa286ad787650dc0d9073dc09a2641
parent ba7acb85a043a7285cb9e55b3050ed8b8d212f86
Author: William Casarin <jb55@jb55.com>
Date: Thu, 17 Nov 2022 13:21:07 -0800
Release v0.1.0
Diffstat:
7 files changed, 161 insertions(+), 89 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -9,8 +9,16 @@ configurator
.buildcmd
config.h
tags
-
-
-# Added by cargo
-
+libsecp256k1.a
/target
+
+Cargo.lock
+Cargo.toml
+doc/nostril.1
+*.json
+scripts/jb55-post
+scripts/nostr-follows
+scripts/nostr-req
+scripts/subnote
+/dist
+/version
diff --git a/CHANGELOG b/CHANGELOG
@@ -0,0 +1,4 @@
+
+# 0.1.0
+
+Initial release
diff --git a/Makefile b/Makefile
@@ -7,7 +7,25 @@ ARS = libsecp256k1.a
SUBMODULES = deps/secp256k1
-all: nostril
+all: nostril docs
+
+docs: doc/nostril.1
+
+doc/nostril.1: README.txt
+ scdoc < $^ > $@
+
+version: nostril.c
+ grep '^#define VERSION' $< | sed -En 's,.*"([^"]+)".*,\1,p' > $@
+
+dist: docs version
+ @mkdir -p dist
+ git archive HEAD --format tar.gz --prefix nostril-$(shell cat version)/ -o dist/nostril-$(shell cat version).tar.gz
+ @ls -dt dist/* | head -n1 | xargs echo "tgz "
+ cd dist;\
+ sha256sum *.tar.gz > SHA256SUMS.txt;\
+ gpg -u 0x8A478B64FFE30F1095A8736BF5F27EFD1B38DABB --sign --armor --detach-sig --output SHA256SUMS.txt.asc SHA256SUMS.txt
+ rsync -avzP dist/ charon:/www/cdn.jb55.com/tarballs/nostril/
+ scp CHANGELOG charon:/www/cdn.jb55.com/tarballs/nostril/CHANGELOG.txt
deps/secp256k1/.git:
@devtools/refresh-submodules.sh $(SUBMODULES)
@@ -36,9 +54,9 @@ libsecp256k1.a: deps/secp256k1/.libs/libsecp256k1.a
nostril: $(HEADERS) $(OBJS) $(ARS)
$(CC) $(CFLAGS) $(OBJS) $(ARS) -o $@
-install: nostril
- mkdir -p $(PREFIX)/bin
- cp nostril $(PREFIX)/bin
+install: all
+ install -Dm644 doc/nostril.1 $(PREFIX)/share/man/man1/nostril.1
+ install -Dm755 nostril $(PREFIX)/bin/nostril
config.h: configurator
./configurator > $@
diff --git a/README.md b/README.md
@@ -1,81 +0,0 @@
-
-# nostril
-
-A cli util for creating nostr events
-
-## Installation
-
-### Fedora
-
-```bash
-$ sudo dnf install libtool automake
-$ make
-
-# Optional - install to system PATH
-
-$ sudo make install
-```
-
-## Usage
-
- usage: nostril [OPTIONS]
-
- OPTIONS
-
- --content the content of the note
- --dm <hex pubkey> make an encrypted dm to said pubkey. sets kind and tags.
- --envelope wrap in ["EVENT",...] for easy relaying
- --kind <number> set kind
- --created-at <unix timestamp> set a specific created-at time
- --sec <hex seckey> set the secret key for signing, otherwise one will be randomly generated
- --pow <difficulty> number of leading 0 bits of the id to mine
- --tag <key> <value> add a tag
- -e <event_id> shorthand for --tag e <event_id>
- -p <pubkey> shorthand for --tag p <pubkey>
-
-## Examples
-
-Generate an event:
-
- $ ./nostril --sec <key> --content "this is a message"
- {
- "id": "da9c36bb8206e748cf136af2a43613a5ee113cb5906a09a8d3df5386039d53ab",
- "pubkey": "4f6fa8547cf2888415522918175ea0bc0eb473287c5bd7cc459ca440bdf87d97",
- "created_at": 1660750302,
- "kind": 1,
- "tags": [],
- "content": "this is a message",
- "sig": "3e4d7d93522e54f201a22944d4d37eb4505ef1cf91c278a3f7d312b772a6c6509d1e11f146d5a003265ae10411a20057bade2365501872d2f2f24219730eed87"
- }
-
-Wrap event to send to a relay:
-
- $ ./nostril --envelope --sec <key> --content "hello"
- [
- "EVENT",
- {
- "id": "ed378d3fdda785c091e9311c6e6eeb075db349a163c5e38de95946f6013a8001",
- "pubkey": "fd3fdb0d0d8d6f9a7667b53211de8ae3c5246b79bdaf64ebac849d5148b5615f",
- "created_at": 1649948103,
- "kind": 1,
- "tags": [],
- "content": "hello",
- "sig": "9d9a49bbc66d4782030b24c71416965e790214d02a54ab132d960c2b02def0371c3d93e5a60a285c55e99721599d1332450731e2c6bb1114b96b591c6967f872"
- }
- ]
-
-Send to a relay:
-
- $ ./nostril --envelope --sec <key> --content "this is a message" | websocat wss://relay.damus.io
-
-Send a nip04 DM:
-
- $ ./nostril --envelope --dm <pubkey> --sec <key> --content "this is a secret" | websocat wss://relay.damus.io
-
-Mine a pubkey:
-
- $ ./nostril --mine-pubkey --pow <difficulty>
-
-Reply to an event. nip10 compliant, includes the `thread_id`:
-
- $ ./nostril --envelope --sec <key> --content "this is reply message" --tag e <thread_id> --tag e <note_id> | websocat wss://relay.damus.io
diff --git a/README.txt b/README.txt
@@ -0,0 +1,107 @@
+nostril(1)
+
+# NAME
+
+nostril - generate nostr events
+
+# SYNPOSIS
+
+*nostril* [OPTIONS...]
+
+# DESCRIPTION
+
+*nostril* is a tool that creates and signs nostr events.
+
+# OPTIONS
+
+*--content*
+ The text contents of the note
+
+*--dm* <hex pubkey>
+ Create a direct message. This will create a kind-4 note with the
+ contents encrypted>
+
+*--envelope*
+ Wrap the event with `["EVENT", ... ]` for easy relaying
+
+*--kind* <number>
+ Set the kind of the note
+
+*--created-at* <unix timestamp>
+ Set the created at. Optional, this is set automatically.
+
+*--mine-pubkey*
+ Mine a pubkey. This may or may not be cryptographically dubious.
+
+*--pow* <difficulty>
+ Number of leading 0 bits of the id the mine for proof-of-work.
+
+*--tag* <key> <value>
+ Add a tag with a single value
+
+*-t*
+ Shorthand for --tag t <hashtag>
+
+*-p*
+ Shorthand for --tag p <hex pubkey>
+
+*-e*
+ Shorthand for --tag e <note id>
+
+
+# Examples
+
+*Generate an event*
+
+```
+$ ./nostril --sec <key> --content "this is a message"
+{
+ "id": "da9c36bb8206e748cf136af2a43613a5ee113cb5906a09a8d3df5386039d53ab",
+ "pubkey": "4f6fa8547cf2888415522918175ea0bc0eb473287c5bd7cc459ca440bdf87d97",
+ "created_at": 1660750302,
+ "kind": 1,
+ "tags": [],
+ "content": "this is a message",
+ "sig": "3e4d7d93522e54f201a22944d4d37eb4505ef1cf91c278a3f7d312b772a6c6509d1e11f146d5a003265ae10411a20057bade2365501872d2f2f24219730eed87"
+}
+```
+
+*Wrap event to send to a relay*
+
+```
+$ ./nostril --envelope --sec <key> --content "hello"
+[ "EVENT",
+{
+ "id": "ed378d3fdda785c091e9311c6e6eeb075db349a163c5e38de95946f6013a8001",
+ "pubkey": "fd3fdb0d0d8d6f9a7667b53211de8ae3c5246b79bdaf64ebac849d5148b5615f",
+ "created_at": 1649948103,
+ "kind": 1,
+ "tags": [],
+ "content": "hello",
+ "sig": "9d9a49bbc66d4782030b24c71416965e790214d02a54ab132d960c2b02def0371c3d93e5a60a285c55e99721599d1332450731e2c6bb1114b96b591c6967f872"
+} ]
+```
+
+*Send to a relay*
+
+```
+nostril --envelope --sec <key> --content "this is a message" | websocat wss://relay.damus.io
+```
+
+*Send a nip04 DM*
+
+```
+nostril --envelope --dm <pubkey> --sec <key> --content "this is a secret" | websocat wss://relay.damus.io
+```
+
+*Mine a pubkey*
+
+```
+nostril --mine-pubkey --pow <difficulty>
+```
+
+*Reply to an event. nip10 compliant, includes the `thread_id`*
+
+```
+./nostril --envelope --sec <key> --content "this is reply message" --tag e <thread_id> --tag e <note_id> | websocat wss://relay.damus.io
+```
diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt
@@ -0,0 +1,9 @@
+Fedora
+------
+
+$ sudo dnf install libtool automake
+$ make
+
+# Optional - install to system PATH
+
+$ sudo make install
diff --git a/nostril.c b/nostril.c
@@ -18,6 +18,8 @@
#include "random.h"
#include "proof.h"
+#define VERSION "0.1.0"
+
#define MAX_TAGS 32
#define MAX_TAG_ELEMS 16
@@ -425,6 +427,11 @@ static int parse_args(int argc, const char *argv[], struct args *args, struct no
argv++; argc--;
for (; argc; ) {
arg = *argv++; argc--;
+
+ if (!strcmp(arg, "--help")) {
+ usage();
+ }
+
if (!argc) {
fprintf(stderr, "expected argument: '%s'\n", arg);
return 0;