summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-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, _) => {