Browse Source

use SmartStrings in more places

edition-2021
Lynne Megido 3 months ago
parent
commit
a800be63f7
Signed by: lynnesbian
GPG Key ID: F0A184B5213D9F90
  1. 5
      src/formats.rs
  2. 12
      src/utils.rs

5
src/formats.rs

@ -7,12 +7,13 @@ use std::os::unix::ffi::OsStrExt;
use std::path::Path;
use cfg_if::cfg_if;
use itertools::{Either, Itertools};
use snailquote::escape;
use crate::findings::ScanError;
use crate::utils::clap_long_version;
use crate::Findings;
use itertools::{Either, Itertools};
use crate::String;
/// A macro for creating an array of `Writable`s without needing to pepper your code with `into()`s.
/// # Usage
@ -73,7 +74,7 @@ impl<'a> From<&'a OsStr> for Writable<'a> {
fn from(p: &'a OsStr) -> Writable<'a> { Writable::Path(p.as_ref()) }
}
fn generated_by() -> String { format!("Generated by fif {}", clap_long_version()) }
fn generated_by() -> String { format!("Generated by fif {}", clap_long_version()).into() }
pub fn smart_write<W: Write>(f: &mut W, writeables: &[Writable]) -> io::Result<()> {
// ehhhh

12
src/utils.rs

@ -1,6 +1,8 @@
use cfg_if::cfg_if;
use once_cell::sync::OnceCell;
use crate::String;
/// The current version of fif, as defined in Cargo.toml.
pub const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
@ -28,23 +30,23 @@ pub fn clap_version() -> &'static str { CLAP_VERSION.get_or_init(|| String::from
/// Sets [`CLAP_LONG_VERSION`] to be similar to [`CLAP_VERSION`], followed by the chosen backend in parentheses (e.g.
/// "v0.3.1 (XDG-Mime backend)"), then returns it as a String.
pub fn clap_long_version() -> &'static str {
CLAP_LONG_VERSION.get_or_init(|| format!("v{} ({} backend)", VERSION.unwrap_or("???"), BACKEND))
CLAP_LONG_VERSION.get_or_init(|| format!("v{} ({} backend)", VERSION.unwrap_or("???"), BACKEND).into())
}
/// Returns the name of the target operating system with proper casing, like "Windows" or "macOS".
#[allow(clippy::option_map_unit_fn)]
pub fn os_name() -> String {
use std::env::consts::OS;
match OS {
match std::env::consts::OS {
// special cases: "ios" should not be capitalised into "Ios", for example
"ios" => "iOS".into(),
"macos" => "macOS".into(),
"freebsd" => "FreeBSD".into(),
"openbsd" => "OpenBSD".into(),
"netbsd" => "NetBSD".into(),
"vxworks" => "VxWorks".into(),
_ => {
os => {
// generic case: return consts::OS with the first letter in uppercase ("linux" -> "Linux")
let mut os_upper = String::from(OS);
let mut os_upper = String::from(os);
os_upper.get_mut(0..1).map(|first| first.make_ascii_uppercase());
os_upper
}

Loading…
Cancel
Save