feat: use rust to ship metadata directly
This commit is contained in:
79
Cargo.lock
generated
79
Cargo.lock
generated
@@ -2163,8 +2163,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1706dc14a2e140dec0a7a07109d9a3d5890b81e85bd6c60b906b249a77adf0ca"
|
||||
dependencies = [
|
||||
"mime",
|
||||
"phf",
|
||||
"phf_shared",
|
||||
"phf 0.11.3",
|
||||
"phf_shared 0.11.3",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
@@ -2780,8 +2780,19 @@ version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
|
||||
dependencies = [
|
||||
"phf_macros",
|
||||
"phf_shared",
|
||||
"phf_macros 0.11.3",
|
||||
"phf_shared 0.11.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
|
||||
dependencies = [
|
||||
"phf_macros 0.13.1",
|
||||
"phf_shared 0.13.1",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2790,24 +2801,47 @@ version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
|
||||
dependencies = [
|
||||
"phf_shared",
|
||||
"phf_shared 0.11.3",
|
||||
"rand 0.8.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_generator"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"phf_shared 0.13.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_macros"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
|
||||
dependencies = [
|
||||
"phf_generator",
|
||||
"phf_shared",
|
||||
"phf_generator 0.11.3",
|
||||
"phf_shared 0.11.3",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_macros"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
|
||||
dependencies = [
|
||||
"phf_generator 0.13.1",
|
||||
"phf_shared 0.13.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_shared"
|
||||
version = "0.11.3"
|
||||
@@ -2818,6 +2852,15 @@ dependencies = [
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_shared"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
|
||||
dependencies = [
|
||||
"siphasher",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project"
|
||||
version = "1.1.10"
|
||||
@@ -3322,12 +3365,6 @@ version = "1.0.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea"
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.6"
|
||||
@@ -3392,19 +3429,6 @@ dependencies = [
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.146"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
"ryu",
|
||||
"serde",
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_repr"
|
||||
version = "0.1.20"
|
||||
@@ -5205,9 +5229,8 @@ dependencies = [
|
||||
"egui_alignments",
|
||||
"egui_extras",
|
||||
"env_logger",
|
||||
"phf 0.13.1",
|
||||
"rusb",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -10,6 +10,5 @@ egui = "0.33.2"
|
||||
egui_alignments = "0.3.6"
|
||||
egui_extras = "0.33.2"
|
||||
env_logger = "0.11.8"
|
||||
phf = { version = "0.13.1", features = ["macros"] }
|
||||
rusb = "0.9.4"
|
||||
serde = { version = "1.0.228", features = ["serde_derive"] }
|
||||
serde_json = "1.0.146"
|
||||
|
||||
36
src/main.rs
36
src/main.rs
@@ -15,7 +15,7 @@ use egui::{
|
||||
TopBottomPanel, text::LayoutJob,
|
||||
};
|
||||
use egui_alignments::{center_horizontal, column};
|
||||
use serde::Deserialize;
|
||||
mod metadata;
|
||||
|
||||
const WORKER_THREAD_POLL: Duration = Duration::from_secs(5);
|
||||
const LABEL_EXTRACTOR: &[u8; 2124] = include_bytes!("./extractor.dex");
|
||||
@@ -37,7 +37,6 @@ struct App {
|
||||
|
||||
have_device: bool,
|
||||
busy: bool,
|
||||
metadata: BTreeMap<String, Metadata>,
|
||||
}
|
||||
|
||||
type PackageIdentifier = String;
|
||||
@@ -55,7 +54,7 @@ struct Entry {
|
||||
expand_triggered: bool,
|
||||
enabled: bool,
|
||||
selected: bool,
|
||||
description: String,
|
||||
metadata: Option<&'static Metadata>,
|
||||
}
|
||||
|
||||
struct PackageDiff {
|
||||
@@ -73,11 +72,10 @@ pub enum ShellRunError {
|
||||
RevertFailed(PackageIdentifier),
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[derive(Debug)]
|
||||
pub struct Metadata {
|
||||
// list: String,
|
||||
description: String,
|
||||
removal: String,
|
||||
description: &'static str,
|
||||
removal: &'static str,
|
||||
}
|
||||
|
||||
mod categories {
|
||||
@@ -110,8 +108,6 @@ fn main() -> eframe::Result {
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let metadata: BTreeMap<String, Metadata> = serde_json::from_str(include_str!("metadata.json"))
|
||||
.map_err(|e| eframe::Error::AppCreation(Box::new(e)))?;
|
||||
eframe::run_native(
|
||||
"Zilch",
|
||||
options,
|
||||
@@ -145,7 +141,6 @@ fn main() -> eframe::Result {
|
||||
action_tx,
|
||||
categories: categories::RECOMMENDED,
|
||||
action_done_rx,
|
||||
metadata,
|
||||
}))
|
||||
}),
|
||||
)
|
||||
@@ -262,14 +257,12 @@ impl eframe::App for App {
|
||||
self.have_device = true;
|
||||
|
||||
for package in package_diff.added {
|
||||
let maybe_meta = self.metadata.get(&package.id);
|
||||
let maybe_meta = metadata::STORE.get(&package.id);
|
||||
self.entries.insert(
|
||||
package.id.clone(),
|
||||
Entry {
|
||||
package,
|
||||
description: maybe_meta
|
||||
.map(|s| s.description.to_string())
|
||||
.unwrap_or("Description unavailable.".to_string()),
|
||||
metadata: maybe_meta,
|
||||
expand_triggered: false,
|
||||
enabled: true,
|
||||
selected: false,
|
||||
@@ -540,7 +533,10 @@ fn render_entry(ui: &mut egui::Ui, entry: &mut Entry) {
|
||||
let header_res = ui.horizontal(|ui| {
|
||||
ui.style_mut().spacing.button_padding = egui::vec2(20.0, 10.0);
|
||||
ui.with_layout(Layout::top_down_justified(egui::Align::LEFT), |ui| {
|
||||
let response = ui.add(create_button(entry));
|
||||
let response = ui.add(
|
||||
create_button(entry)
|
||||
.right_text(entry.metadata.map(|m| m.removal).unwrap_or("Unidentified")),
|
||||
);
|
||||
let id = ui.make_persistent_id(format!("{}_interact", entry.package.id));
|
||||
if ui
|
||||
.interact(response.rect, id, Sense::click())
|
||||
@@ -556,7 +552,15 @@ fn render_entry(ui: &mut egui::Ui, entry: &mut Entry) {
|
||||
|
||||
state.show_body_indented(&header_res.response, ui, |ui| {
|
||||
ui.add_space(4.0);
|
||||
ui.label(RichText::new(&entry.description).size(12.0));
|
||||
ui.label(
|
||||
RichText::new(
|
||||
entry
|
||||
.metadata
|
||||
.map(|m| m.description)
|
||||
.unwrap_or("Description unavailable."),
|
||||
)
|
||||
.size(12.0),
|
||||
);
|
||||
ui.add_space(4.0);
|
||||
});
|
||||
}
|
||||
|
||||
35833
src/metadata.json
35833
src/metadata.json
File diff suppressed because it is too large
Load Diff
5094
src/metadata.rs
Normal file
5094
src/metadata.rs
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user