1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
use std::path::PathBuf; use structopt::clap::ArgMatches; #[derive(Debug)] pub struct InstallPaths { pub destdir: PathBuf, pub prefix: PathBuf, pub libdir: PathBuf, pub includedir: PathBuf, pub bindir: PathBuf, pub pkgconfigdir: PathBuf, } impl InstallPaths { pub fn from_matches(args: &ArgMatches<'_>) -> Self { let destdir = args .value_of("destdir") .map(PathBuf::from) .unwrap_or_else(|| PathBuf::from("/")); let prefix = args .value_of("prefix") .map(PathBuf::from) .unwrap_or_else(|| "/usr/local".into()); let libdir = args .value_of("libdir") .map(PathBuf::from) .unwrap_or_else(|| prefix.join("lib")); let includedir = args .value_of("includedir") .map(PathBuf::from) .unwrap_or_else(|| prefix.join("include")); let bindir = args .value_of("bindir") .map(PathBuf::from) .unwrap_or_else(|| prefix.join("bin")); let pkgconfigdir = args .value_of("pkgconfigdir") .map(PathBuf::from) .unwrap_or_else(|| libdir.join("pkgconfig")); InstallPaths { destdir, prefix, libdir, includedir, bindir, pkgconfigdir, } } }