From 65320498becd3e869dc563b48141485555918d6a Mon Sep 17 00:00:00 2001 From: Kenny Levinsen Date: Fri, 15 May 2020 20:50:12 +0200 Subject: [PATCH] Share inish with agreety, kill last rust-ini use This removes several dependencies, and results in a compile task decrease from 88 to 66 units. --- Cargo.lock | 148 +----------------- Cargo.toml | 2 +- agreety/Cargo.toml | 3 +- agreety/src/main.rs | 29 ++-- greetd/Cargo.toml | 1 + greetd/src/config/mod.rs | 2 - inish/Cargo.toml | 6 + .../src/config/inish.rs => inish/src/lib.rs | 0 8 files changed, 34 insertions(+), 157 deletions(-) create mode 100644 inish/Cargo.toml rename greetd/src/config/inish.rs => inish/src/lib.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 84d34c1..c1c9b6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,19 +4,12 @@ name = "agreety" version = "0.5.0" dependencies = [ + "enquote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", "greetd_ipc 0.5.1", + "inish 0.1.0", "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", "rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-ini 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ahash" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -34,11 +27,6 @@ dependencies = [ "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "autocfg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bitflags" version = "1.2.1" @@ -59,32 +47,6 @@ name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "const-random" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "const-random-macro" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "dlv-list" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "enquote" version = "1.0.3" @@ -127,16 +89,6 @@ dependencies = [ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "getrandom" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "greetd" version = "0.5.0" @@ -145,6 +97,7 @@ dependencies = [ "enquote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", "greetd_ipc 0.5.1", + "inish 0.1.0", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", "pam-sys 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -167,13 +120,8 @@ dependencies = [ ] [[package]] -name = "hashbrown" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ahash 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] +name = "inish" +version = "0.1.0" [[package]] name = "iovec" @@ -313,15 +261,6 @@ dependencies = [ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ordered-multimap" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "dlv-list 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "pam-sys" version = "0.5.6" @@ -335,16 +274,6 @@ name = "pin-project-lite" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ppv-lite86" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "proc-macro-hack" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "proc-macro2" version = "1.0.8" @@ -361,43 +290,6 @@ dependencies = [ "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "redox_syscall" version = "0.1.56" @@ -412,15 +304,6 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rust-ini" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "ordered-multimap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "ryu" version = "1.0.2" @@ -561,11 +444,6 @@ name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.2.8" @@ -605,24 +483,17 @@ dependencies = [ ] [metadata] -"checksum ahash 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0989268a37e128d4d7a8028f1c60099430113fdbc70419010601ce51a228e4fe" "checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" "checksum async-trait 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c8df72488e87761e772f14ae0c2480396810e51b2c2ade912f97f0f7e5b95e3c" -"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" "checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum const-random 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" -"checksum const-random-macro 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" -"checksum dlv-list 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1b391911b9a786312a10cb9d2b3d0735adfd5a8113eb3648de26a75e91b0826c" "checksum enquote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ec878a5d2f3b6e9eaee72373dd23414cfc7d353104741471bec712ef241a66e" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" -"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -"checksum hashbrown 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "479e9d9a1a3f8c489868a935b557ab5710e3e223836da2ecd52901d88935cb56" "checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" "checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" @@ -638,20 +509,12 @@ dependencies = [ "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd0eaf8df8bab402257e0a5c17a254e4cc1f72a93588a1ddfb5d356c801aa7cb" "checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" -"checksum ordered-multimap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e88f947c6799d5eff50e6cf8a2365c17ac4aa8f8f43aceeedc29b616d872a358" "checksum pam-sys 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cd4858311a097f01a0006ef7d0cd50bca81ec430c949d7bf95cbefd202282434" "checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" -"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)" = "0d659fe7c6d27f25e9d80a1a094c223f5246f6a6596453e09d7229bf42750b63" "checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" -"checksum rust-ini 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c609fa8151080b18c38d39e09d1e55d6301d5610428ff804d0d59c4bac15cf7" "checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" "checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" "checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" @@ -668,7 +531,6 @@ dependencies = [ "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum users 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c72f4267aea0c3ec6d07eaabea6ead7c5ddacfafc5e22bcf8d186706851fb4cf" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/Cargo.toml b/Cargo.toml index dcbea84..6ce029c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,4 +9,4 @@ incremental = false codegen-units = 1 [workspace] -members = ["greetd_ipc", "greetd", "agreety", "fakegreet"] +members = ["inish", "greetd_ipc", "greetd", "agreety", "fakegreet"] diff --git a/agreety/Cargo.toml b/agreety/Cargo.toml index 22003c0..22f2a75 100644 --- a/agreety/Cargo.toml +++ b/agreety/Cargo.toml @@ -9,7 +9,8 @@ repository = "https://git.sr.ht/~kennylevinsen/greetd/" [dependencies] greetd_ipc = { path = "../greetd_ipc", features = ["sync-codec"]} -rust-ini = "0.15" +inish = { path = "../inish"} rpassword = "4.0" getopts = "0.2" +enquote = "1.0.3" nix = "0.17" \ No newline at end of file diff --git a/agreety/src/main.rs b/agreety/src/main.rs index a5502b8..d0c2806 100644 --- a/agreety/src/main.rs +++ b/agreety/src/main.rs @@ -4,13 +4,20 @@ use std::{ os::unix::net::UnixStream, }; +use enquote::unquote; use getopts::Options; -use ini::Ini; use nix::sys::utsname::uname; use rpassword::prompt_password_stderr; use greetd_ipc::{codec::SyncCodec, AuthMessageType, ErrorType, Request, Response}; +fn maybe_unquote(s: &str) -> Result> { + Ok(match s.chars().next() { + Some('"') | Some('\'') => unquote(s)?, + _ => s.to_string(), + }) +} + fn prompt_stderr(prompt: &str) -> Result> { let stdin = io::stdin(); let mut stdin_iter = stdin.lock().lines(); @@ -18,14 +25,13 @@ fn prompt_stderr(prompt: &str) -> Result> { Ok(stdin_iter.next().unwrap()?) } -fn get_distro_name() -> String { - let config = match Ini::load_from_file("/etc/os-release") { - Ok(c) => c, - Err(_) => return "Linux".to_string(), - }; - - let section = config.general_section(); - section.get("PRETTY_NAME").unwrap_or("Linux").to_string() +fn get_distro_name() -> Result> { + let os_release = fs::read_to_string("/etc/os-release")?; + let parsed = inish::parse(&os_release)?; + let general = parsed.get("").ok_or("no general section")?; + Ok(maybe_unquote( + general.get("PRETTY_NAME").ok_or("no pretty name")?, + )?) } fn get_issue() -> Result> { @@ -35,7 +41,10 @@ fn get_issue() -> Result> { .expect("unable to parse VTNR"); let uts = uname(); Ok(fs::read_to_string("/etc/issue")? - .replace("\\S", &get_distro_name()) + .replace( + "\\S", + &get_distro_name().unwrap_or_else(|_| "Linux".to_string()), + ) .replace("\\l", &format!("tty{}", vtnr)) .replace("\\s", &uts.sysname()) .replace("\\r", &uts.release()) diff --git a/greetd/Cargo.toml b/greetd/Cargo.toml index 1ece054..677b270 100644 --- a/greetd/Cargo.toml +++ b/greetd/Cargo.toml @@ -17,6 +17,7 @@ users = "0.9.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" greetd_ipc = { path = "../greetd_ipc", features = ["tokio-codec"] } +inish = { path = "../inish" } libc = "0.2" tokio = { version = "0.2", features = ["net", "sync", "macros", "signal", "rt-util", "io-util", "time"] } getopts = "0.2" diff --git a/greetd/src/config/mod.rs b/greetd/src/config/mod.rs index ec5837e..89c83e4 100644 --- a/greetd/src/config/mod.rs +++ b/greetd/src/config/mod.rs @@ -5,8 +5,6 @@ use getopts::Options; use super::error::Error; -mod inish; - #[derive(Debug, Eq, PartialEq)] pub enum VtSelection { Next, diff --git a/inish/Cargo.toml b/inish/Cargo.toml new file mode 100644 index 0000000..92c570c --- /dev/null +++ b/inish/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "inish" +version = "0.1.0" +authors = ["Kenny Levinsen"] +edition = "2018" +license = "GPL-3.0" diff --git a/greetd/src/config/inish.rs b/inish/src/lib.rs similarity index 100% rename from greetd/src/config/inish.rs rename to inish/src/lib.rs