aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2021-01-17 18:32:24 +0100
committerTeddy Wing2021-01-17 18:32:24 +0100
commit19cf4f757250f92da5a4249c20781401c1750327 (patch)
tree4b3570630c5628c0608c6b60543e27ef72f67747
parent2a504ce2a50f381a54562979eebf8e08a55e0786 (diff)
downloadextreload-19cf4f757250f92da5a4249c20781401c1750327.tar.bz2
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.
-rw-r--r--extreload/Cargo.lock120
-rw-r--r--extreload/Cargo.toml2
-rw-r--r--extreload/src/main.rs23
3 files changed, 144 insertions, 1 deletions
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(()),
+ }
+ });
}