From 92e10988543635ac9e009f63b39c7526584571e5 Mon Sep 17 00:00:00 2001 From: Rafael Madriz Date: Sat, 14 Aug 2021 21:41:51 +0200 Subject: [PATCH] added basic config parsing, not fully finished yet, reads config from hardcoded string. added check if flatpak is installed and return with error if not --- Cargo.toml | 4 +++- src/main.rs | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d0af7b1..d27bf15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,4 +10,6 @@ description = "a fast and efficient aur helper." [dependencies] git2 = "*" raur = "2.0.2" -runas = "*" \ No newline at end of file +runas = "*" +toml = "*" +serde = "*" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index e8e7bc8..b34b994 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,15 +1,58 @@ mod mods; +use toml; +use serde; use mods::{clearcache::clearcache, clone::clone, help::help, install::install, search::{a_search, r_search}, uninstall::uninstall, upgrade::upgrade, flatpak::flatpak}; use std::{env, process::exit, process::Command}; +#[derive(serde::Deserialize)] +struct General { + cache: Option, + backends: Backends, + pacman: Pacman, + aur: AUR, +} + +#[derive(serde::Deserialize)] +struct Backends { + pacman: Option, + flatpak: Option, + snap: Option, + aur: Option, +} + +#[derive(serde::Deserialize)] +struct Pacman { + noconfirm: Option, +} + +#[derive(serde::Deserialize)] +struct AUR { + clone_path: Option, +} + fn main() { let args: Vec = env::args().collect(); + let configfile: General = toml::from_str(r#" + cache = "/home/user/.cache/ame" + + [backends] + pacman = true + flatpak = false + snap = false + aur = true + + [pacman] + noconfirm = false + + [aur] + clone_path = "/home/user/.cache/ame" + "#).unwrap(); + if args.len() <= 1 { help(); exit(1); } - let oper = &args[1]; if oper == "-S" { for arg in env::args().skip(2) { @@ -42,8 +85,19 @@ fn main() { } else if oper == "-Cc" { clearcache(); } else if oper == "-f" { - for arg in env::args().skip(2) { - flatpak(&arg); + if configfile.backends.flatpak.unwrap() == true { + let b = std::path::Path::new("/usr/bin/flatpak").exists(); + if b == true { + for arg in env::args().skip(2) { + flatpak(&arg); + } + } else { + println!("ERROR: flatpak not found, please install flatpak and try again!"); + println!("If you do have flatpak installed, please open an issue on the ame github repo!"); + } + } else { + println!("ERROR: flatpak support is disabled in your ame config!"); + println!("Enable flatpak support in your configuration and try again!"); } } else { help();