diff --git a/README.md b/README.md index f5fb28063f..42a4d0bde5 100644 --- a/README.md +++ b/README.md @@ -80,18 +80,26 @@ Connect to your mail server (if already configured): > connect ``` -Create a contact: +Export your public key to a vCard file: + +``` +> make-vcard my.vcard 1 +``` + +Create contacts by address or vCard file: ``` > addcontact yourfriends@email.org +> import-vcard key-contact.vcard ``` List contacts: ``` > listcontacts +Contact#Contact#11: key-contact@email.org Contact#Contact#Self: Me √ -1 key contacts. +2 key contacts. Contact#Contact#10: yourfriends@email.org 1 address contacts. ``` diff --git a/deltachat-repl/src/cmdline.rs b/deltachat-repl/src/cmdline.rs index a01c16a06c..29f11c20fb 100644 --- a/deltachat-repl/src/cmdline.rs +++ b/deltachat-repl/src/cmdline.rs @@ -403,6 +403,8 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu block \n\ unblock \n\ listblocked\n\ + import-vcard \n\ + make-vcard [contact-id ...]\n\ ======================================Misc.==\n\ getqr []\n\ getqrsvg []\n\ @@ -1218,6 +1220,24 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu log_contactlist(&context, &contacts).await?; println!("{} blocked contacts.", contacts.len()); } + "import-vcard" => { + ensure!(!arg1.is_empty(), "Argument missing."); + let vcard_content = fs::read_to_string(&arg1.to_string()).await?; + let contacts = import_vcard(&context, &vcard_content).await?; + println!("vCard contacts imported:"); + log_contactlist(&context, &contacts).await?; + } + "make-vcard" => { + ensure!(!arg1.is_empty(), "Argument missing."); + ensure!(!arg2.is_empty(), "Argument missing."); + let mut contact_ids = vec![]; + for x in arg2.split_whitespace() { + contact_ids.push(ContactId::new(x.parse()?)) + } + let vcard_content = make_vcard(&context, &contact_ids).await?; + fs::write(&arg1.to_string(), vcard_content).await?; + println!("vCard written to: {arg1}"); + } "checkqr" => { ensure!(!arg1.is_empty(), "Argument missing."); let qr = check_qr(&context, arg1).await?; diff --git a/deltachat-repl/src/main.rs b/deltachat-repl/src/main.rs index 1cca2aad2e..8b06cc558e 100644 --- a/deltachat-repl/src/main.rs +++ b/deltachat-repl/src/main.rs @@ -232,7 +232,7 @@ const MESSAGE_COMMANDS: [&str; 10] = [ "delmsg", "react", ]; -const CONTACT_COMMANDS: [&str; 7] = [ +const CONTACT_COMMANDS: [&str; 9] = [ "listcontacts", "addcontact", "contactinfo", @@ -240,6 +240,8 @@ const CONTACT_COMMANDS: [&str; 7] = [ "block", "unblock", "listblocked", + "import-vcard", + "make-vcard", ]; const MISC_COMMANDS: [&str; 14] = [ "getqr",