add json string support to the cli's print command
this let's you print a json string.
This commit is contained in:
parent
e93b201d77
commit
f37034b8d8
3 changed files with 27 additions and 1 deletions
|
@ -23,6 +23,15 @@ pub(crate) enum Commands {
|
||||||
requires = "name"
|
requires = "name"
|
||||||
)]
|
)]
|
||||||
seperator: Option<char>,
|
seperator: Option<char>,
|
||||||
|
#[arg(
|
||||||
|
long,
|
||||||
|
short,
|
||||||
|
conflicts_with = "url",
|
||||||
|
conflicts_with = "name",
|
||||||
|
conflicts_with = "seperator",
|
||||||
|
help = "print the data out as a json string"
|
||||||
|
)]
|
||||||
|
json: bool,
|
||||||
},
|
},
|
||||||
#[command(about = "add a site to the webring")]
|
#[command(about = "add a site to the webring")]
|
||||||
Add {
|
Add {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
use shared::errors::ErrorStatus;
|
||||||
use shared::names;
|
use shared::names;
|
||||||
use shared::{errors::Error, names::Site};
|
use shared::{errors::Error, names::Site};
|
||||||
|
|
||||||
|
@ -24,15 +25,31 @@ fn group_printing(seperator: &Option<char>, site: Site, group: &PrintGroup) {
|
||||||
log::info!("{}", string);
|
log::info!("{}", string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn json_printing(site: Site) -> Result<(), Error> {
|
||||||
|
match serde_json::to_string(&site) {
|
||||||
|
Ok(json) => {
|
||||||
|
log::info!("{}", json);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Err(err) => Err(Error { status: ErrorStatus::ParsingError, data: err.to_string() }),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn print(
|
pub(crate) fn print(
|
||||||
path: &Path,
|
path: &Path,
|
||||||
group: &PrintGroup,
|
group: &PrintGroup,
|
||||||
seperator: &Option<char>,
|
seperator: &Option<char>,
|
||||||
|
json: bool,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let names_file = names::read_names_file(path)?;
|
let names_file = names::read_names_file(path)?;
|
||||||
let names = names::load_names(names_file)?;
|
let names = names::load_names(names_file)?;
|
||||||
|
|
||||||
for site in names {
|
for site in names {
|
||||||
|
if json {
|
||||||
|
json_printing(site)?;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if !group.url && !group.name {
|
if !group.url && !group.name {
|
||||||
log::info!("{:?}", site);
|
log::info!("{:?}", site);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -20,7 +20,7 @@ fn main() -> Result<(), Error> {
|
||||||
};
|
};
|
||||||
|
|
||||||
match &args.command {
|
match &args.command {
|
||||||
Commands::Print { group, seperator } => print(path, group, seperator)?,
|
Commands::Print { group, seperator, json } => print(path, group, seperator, *json)?,
|
||||||
Commands::Add { url, name } => add(path, url, name)?,
|
Commands::Add { url, name } => add(path, url, name)?,
|
||||||
Commands::Remove { url } => remove(path, url)?,
|
Commands::Remove { url } => remove(path, url)?,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue