From 19cf4f757250f92da5a4249c20781401c1750327 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 17 Jan 2021 18:32:24 +0100 Subject: extreload: Send extension IDs to extension Send hard-coded extension IDs to the companion extension to tell it to reload them. Start an event loop to keep the native host running indefinitely. We'll then be able to send extension IDs from a command line client to the native host over a Unix domain socket IPC. --- extreload/Cargo.lock | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++ extreload/Cargo.toml | 2 + extreload/src/main.rs | 23 +++++++++- 3 files changed, 144 insertions(+), 1 deletion(-) diff --git a/extreload/Cargo.lock b/extreload/Cargo.lock index fb2639e..baccb45 100644 --- a/extreload/Cargo.lock +++ b/extreload/Cargo.lock @@ -1,5 +1,125 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "byteorder" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" + +[[package]] +name = "chrome_native_messaging" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1aae81d5bec9e77da011beafb9b15af3895ea6d42e87d2f2f9af4f11013dcdc" +dependencies = [ + "byteorder", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "extreload" version = "0.0.1" +dependencies = [ + "chrome_native_messaging", + "serde", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "serde" +version = "1.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdd36f49e35b61d49efd8aa7fc068fd295961fd2286d0b2ee9a4c7a14e99cc3" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552954ce79a059ddd5fd68c271592374bd15cab2274970380c000118aeffe1cd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc60a3d73ea6594cd712d830cc1f0390fd71542d8c8cd24e70cc54cdfd5e05d5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "thiserror" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" diff --git a/extreload/Cargo.toml b/extreload/Cargo.toml index 7bc9ee3..c5a64b7 100644 --- a/extreload/Cargo.toml +++ b/extreload/Cargo.toml @@ -4,3 +4,5 @@ version = "0.0.1" edition = "2018" [dependencies] +chrome_native_messaging = "0.2.0" +serde = "1.0.119" diff --git a/extreload/src/main.rs b/extreload/src/main.rs index e7a11a9..2d98de8 100644 --- a/extreload/src/main.rs +++ b/extreload/src/main.rs @@ -1,3 +1,24 @@ +use chrome_native_messaging; +use serde::Serialize; + +use std::io; + +#[derive(Serialize)] +struct ExtensionIdMessage<'a> { + ids: &'a[&'a str] +} + fn main() { - println!("Hello, world!"); + let ids = vec!["extension_id"]; + + chrome_native_messaging::send_message( + io::stdout(), + &ExtensionIdMessage { ids: &ids } + ).expect("TODO: handle error"); + + chrome_native_messaging::event_loop(|value| -> Result<(), &str> { + match value { + _ => Ok(()), + } + }); } -- cgit v1.2.3