summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-05-23 08:45:57 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-05-23 08:45:57 +0200
commit857fb9e9c4a90fd7ec5eddef22f25da63048f31d (patch)
treead6992090fcb01d9f90d265ab42efb187cb2cfb2
parent4216fe15db7d2bfa43ceef6ac939157353a312c8 (diff)
Impl post subcommand
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--src/main.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 145a3d9..fd14adc 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,4 +1,5 @@
use std::path::PathBuf;
+use std::str::FromStr;
use anyhow::Result;
use daglib::DagBackend;
@@ -79,7 +80,25 @@ async fn main() -> Result<()> {
},
("post", Some(mtch)) => {
- unimplemented!()
+ let payload = mtch
+ .value_of("content")
+ .map(String::from)
+ .map(crate::backend::Payload::now_from_text)
+ .unwrap(); // Safe by clap
+ let parent = mtch
+ .value_of("head")
+ .map(cid::Cid::from_str)
+ .transpose()?
+ .map(crate::backend::Id::from)
+ .unwrap(); // Safe by clap
+
+ let payload_cid = backend.write_payload(&payload).await?;
+ let node = crate::backend::Node::new(crate::consts::v1(), vec![parent], payload_cid);
+
+ let id = backend.put(node).await?;
+
+ println!("id = {:?}", id);
+ Ok(())
},
(other, _) => {