feat: implemented quiet flag

This took a fair amount of fiddeling with attempts at a more elegant
solution before I just accepted that it wasn't gonna be that fancy and
went with what is in this commit.

Signed-off-by: Christina Sørensen <christina@cafkafk.com>
This commit is contained in:
Christina Sørensen 2023-07-03 18:10:13 +02:00 committed by Christina Sørensen
parent b2a0caff02
commit f958739863
5 changed files with 49 additions and 34 deletions

View file

@ -3,7 +3,7 @@
* 0.2.0 (maybe) * 0.2.0 (maybe)
- [ ] Links in categories? - [ ] Links in categories?
* 0.1.2 * 0.1.2
- [ ] Implement Quiet flag - [X] Implement Quiet flag
* 0.1.1 * 0.1.1
- [X] Implement no-emoji flag - [X] Implement no-emoji flag
* 0.1.0 [100%] [5/5] * 0.1.0 [100%] [5/5]

View file

@ -25,6 +25,7 @@ use std::os::unix::fs::symlink;
use std::path::Path; use std::path::Path;
use std::{fs, process::Command}; use std::{fs, process::Command};
use crate::settings;
use crate::utils::strings::{failure_str, success_str}; use crate::utils::strings::{failure_str, success_str};
/// An enum containing flags that change behaviour of repos and categories /// An enum containing flags that change behaviour of repos and categories
@ -349,12 +350,16 @@ impl Config {
{ {
for category in self.categories.values() { for category in self.categories.values() {
for (_, repo) in category.repos.as_ref().expect("failed to get repos").iter() { for (_, repo) in category.repos.as_ref().expect("failed to get repos").iter() {
if !settings::QUIET.load(std::sync::atomic::Ordering::Relaxed) {
let mut sp = Spinner::new(Spinners::Dots10, format!("{}: {}", repo.name, op)); let mut sp = Spinner::new(Spinners::Dots10, format!("{}: {}", repo.name, op));
if f(repo) { if f(repo) {
sp.stop_and_persist(success_str(), format!("{}: {}", repo.name, op)); sp.stop_and_persist(success_str(), format!("{}: {}", repo.name, op));
} else { } else {
sp.stop_and_persist(failure_str(), format!("{}: {}", repo.name, op)); sp.stop_and_persist(failure_str(), format!("{}: {}", repo.name, op));
} }
} else {
f(repo);
}
} }
} }
} }
@ -405,13 +410,18 @@ impl Config {
for instruction in &closures { for instruction in &closures {
let f = &instruction.closure; let f = &instruction.closure;
let op = instruction.operation; let op = instruction.operation;
let mut sp = Spinner::new(Spinners::Dots10, format!("{}: {}", repo.name, op)); if !settings::QUIET.load(std::sync::atomic::Ordering::Relaxed) {
let mut sp =
Spinner::new(Spinners::Dots10, format!("{}: {}", repo.name, op));
if f(repo) { if f(repo) {
sp.stop_and_persist(success_str(), format!("{}: {}", repo.name, op)); sp.stop_and_persist(success_str(), format!("{}: {}", repo.name, op));
} else { } else {
sp.stop_and_persist(failure_str(), format!("{}: {}", repo.name, op)); sp.stop_and_persist(failure_str(), format!("{}: {}", repo.name, op));
break; break;
} }
} else {
f(repo);
}
} }
} }
} }
@ -451,12 +461,17 @@ impl Config {
for instruction in &closures { for instruction in &closures {
let f = &instruction.closure; let f = &instruction.closure;
let op = instruction.operation; let op = instruction.operation;
let mut sp = Spinner::new(Spinners::Dots10, format!("{}: {}", repo.name, op)); if !settings::QUIET.load(std::sync::atomic::Ordering::Relaxed) {
let mut sp =
Spinner::new(Spinners::Dots10, format!("{}: {}", repo.name, op));
if f(repo) { if f(repo) {
sp.stop_and_persist(success_str(), format!("{}: {}", repo.name, op)); sp.stop_and_persist(success_str(), format!("{}: {}", repo.name, op));
} else { } else {
sp.stop_and_persist(failure_str(), format!("{}: {}", repo.name, op)); sp.stop_and_persist(failure_str(), format!("{}: {}", repo.name, op));
} }
} else {
f(repo);
}
} }
} }
} }

View file

@ -66,8 +66,8 @@ fn main() {
args if args.license => println!("{}", utils::strings::INTERACTIVE_LICENSE), args if args.license => println!("{}", utils::strings::INTERACTIVE_LICENSE),
args if args.warranty => println!("{}", utils::strings::INTERACTIVE_WARRANTY), args if args.warranty => println!("{}", utils::strings::INTERACTIVE_WARRANTY),
args if args.code_of_conduct => println!("{}", utils::strings::INTERACTIVE_COC), args if args.code_of_conduct => println!("{}", utils::strings::INTERACTIVE_COC),
args if args.quiet => settings::EMOJIS.store(true, Ordering::Relaxed), args if args.quiet => settings::QUIET.store(true, Ordering::Relaxed),
args if args.no_emoji => settings::QUIET.store(true, Ordering::Relaxed), args if args.no_emoji => settings::EMOJI.store(true, Ordering::Relaxed),
_ => (), _ => (),
} }
match &mut args.command { match &mut args.command {

View file

@ -1,20 +1,4 @@
categories: categories:
utils:
repos:
gg:
name: gg
path: /home/ces/.dots/
url: git@github.com:cafkafk/gg.git
flags:
- Clone
- Push
li:
name: li
path: /home/ces/org/src/git/
url: git@github.com:cafkafk/li.git
flags:
- Clone
- Push
config: config:
flags: [] flags: []
repos: repos:
@ -43,6 +27,22 @@ categories:
name: gg name: gg
path: /home/ces/.dots/ path: /home/ces/.dots/
url: git@github.com:cafkafk/gg.git url: git@github.com:cafkafk/gg.git
utils:
repos:
gg:
name: gg
path: /home/ces/.dots/
url: git@github.com:cafkafk/gg.git
flags:
- Clone
- Push
li:
name: li
path: /home/ces/org/src/git/
url: git@github.com:cafkafk/li.git
flags:
- Clone
- Push
empty: {} empty: {}
links: links:
- name: gg - name: gg

View file

@ -77,7 +77,7 @@ pub const SUCCESS_STRING: &str = "SUCC";
pub const FAILURE_STRING: &str = "FAIL"; pub const FAILURE_STRING: &str = "FAIL";
pub fn success_str() -> &'static str { pub fn success_str() -> &'static str {
if settings::EMOJIS.load(Ordering::Relaxed) { if !settings::EMOJIS.load(Ordering::Relaxed) {
SUCCESS_EMOJI SUCCESS_EMOJI
} else { } else {
SUCCESS_STRING SUCCESS_STRING
@ -85,7 +85,7 @@ pub fn success_str() -> &'static str {
} }
pub fn failure_str() -> &'static str { pub fn failure_str() -> &'static str {
if settings::EMOJIS.load(Ordering::Relaxed) { if !settings::EMOJIS.load(Ordering::Relaxed) {
FAILURE_EMOJI FAILURE_EMOJI
} else { } else {
FAILURE_STRING FAILURE_STRING