summaryrefslogtreecommitdiffstats
path: root/adenosine-cli
diff options
context:
space:
mode:
Diffstat (limited to 'adenosine-cli')
-rw-r--r--adenosine-cli/Cargo.toml33
-rw-r--r--adenosine-cli/README.md5
-rw-r--r--adenosine-cli/plan.txt65
-rw-r--r--adenosine-cli/src/main.rs3
4 files changed, 106 insertions, 0 deletions
diff --git a/adenosine-cli/Cargo.toml b/adenosine-cli/Cargo.toml
new file mode 100644
index 0000000..8d42961
--- /dev/null
+++ b/adenosine-cli/Cargo.toml
@@ -0,0 +1,33 @@
+[package]
+name = "adenosine-cli"
+version = "0.1.0-dev.0"
+edition = "2021"
+authors = ["Bryan Newbold <bnewbold@robocracy.org>"]
+license = "AGPLv3"
+description = "Informal implementation of atproto.com"
+readme = "../README.md"
+repository = "https://gitlab.com/bnewbold/adenosine"
+keywords = ["atproto"]
+#categories = []
+
+[dependencies]
+structopt = "*"
+# NOTE: could try 'rustls-tls' feature instead of default native TLS?
+reqwest = { version = "0.11", features = ["blocking", "json"] }
+serde_json = "*"
+
+# uncertain about these...
+anyhow = "1.0"
+atty = "0.2"
+colored_json = "*"
+
+[package.metadata.deb]
+maintainer = "Bryan Newbold <bnewbold@robocracy.org>"
+depends = "$auto"
+section = "utility"
+priority = "optional"
+extended-description = """"TODO"""
+assets = [
+ ["target/release/adenosine", "usr/bin/", "755"],
+ #["../extra/adenosine.1", "usr/share/man/man1/", "644"],
+]
diff --git a/adenosine-cli/README.md b/adenosine-cli/README.md
new file mode 100644
index 0000000..a5a692c
--- /dev/null
+++ b/adenosine-cli/README.md
@@ -0,0 +1,5 @@
+
+`adenosine-cli`: atproto command-line client
+============================================
+
+
diff --git a/adenosine-cli/plan.txt b/adenosine-cli/plan.txt
new file mode 100644
index 0000000..fc7b6dc
--- /dev/null
+++ b/adenosine-cli/plan.txt
@@ -0,0 +1,65 @@
+
+CLI name is `adenosine`.
+
+This is (for now) a "light" or "delegated" client which has no local state and
+just talks to the remote.
+
+config variables:
+
+ ATP_SERVICE: prefix, eg http://localhost:1234
+ ATP_AUTH_TOKEN: JWT string
+
+at-uri can be either a global `at://` URI string, or a user-local referene of
+the form <collection>/<TID>.
+
+like in httpie, params can be '=' for a JSON field assignment; '==' for query
+parameters (though there are usually CLI args instead); '@' to import a JSON
+file; '-' to read a JSON file from stdin.
+
+ get <at-uri>
+ ls <at-uri>?
+
+ create <collection> <params>+
+ update <at-uri> <params>+
+ delete <at-uri>
+
+ describe <name|did>
+ resolve <name|did> => output DID doc (optionally do this directly?)
+
+ validate <nsid> <params>+
+
+ status
+ => status of configuration, registration, logged in, current did/username (from JWT?), etc
+
+ account
+ register
+ delete
+ login
+ logout
+ info <name>?
+ create-revocation-key
+
+ repo
+ root
+ export <at-uri>?
+ import <in-cbor-filename> [--from <cid>]
+
+ xrpc get|post <nsid> [<params>]+
+ => generic method
+
+ bsky
+ feed <name>?
+ notifications
+
+ post [<params>]+
+ repost <at-uri>
+ like <at-uri>
+ unlike <at-uri>
+ follow <name|did>
+ unfollow <name|did>
+
+ follows <name|did>?
+ followers <name|did>?
+ profile <name>?
+ search-users <query>
+
diff --git a/adenosine-cli/src/main.rs b/adenosine-cli/src/main.rs
new file mode 100644
index 0000000..e7a11a9
--- /dev/null
+++ b/adenosine-cli/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}