Run cargo fmt

This commit is contained in:
Maximilian Bosch 2023-07-09 11:36:01 +02:00
parent 0396dfc096
commit 05abc5bdad
No known key found for this signature in database
GPG Key ID: 9A6EEA275CA5BE0A
2 changed files with 62 additions and 55 deletions

View File

@ -10,7 +10,7 @@ use reqwest_cookie_store::CookieStoreMutex;
use scraper::{ElementRef, Html, Selector};
use serde_json::json;
use crate::{cli::Opt, queue, util::wrap_html, ILIAS_URL, iliasignore::IliasIgnore};
use crate::{cli::Opt, iliasignore::IliasIgnore, queue, util::wrap_html, ILIAS_URL};
pub mod course;
pub mod exercise;
@ -285,7 +285,13 @@ impl ILIAS {
} else {
None
};
Ok((ILIAS::get_items(&html), main_text, html.select(&LINKS).flat_map(|x| x.value().attr("href").map(|x| x.to_owned())).collect()))
Ok((
ILIAS::get_items(&html),
main_text,
html.select(&LINKS)
.flat_map(|x| x.value().attr("href").map(|x| x.to_owned()))
.collect(),
))
}
pub async fn get_course_content_tree(&self, ref_id: &str, cmd_node: &str) -> Result<Vec<Object>> {

View File

@ -1,66 +1,67 @@
use std::{path::{Path, PathBuf, Component}, ffi::OsString};
use std::{
ffi::OsString,
path::{Component, Path, PathBuf},
};
use anyhow::Result;
use ignore::gitignore::Gitignore;
#[derive(Clone, Debug)]
pub struct IliasIgnore {
ignores: Vec<IgnoreFile>
ignores: Vec<IgnoreFile>,
}
impl IliasIgnore {
pub fn load(mut path: PathBuf) -> Result<Self> {
let mut ignores = Vec::new();
let mut prefix = Vec::new();
// example scenario:
// path = /KIT/ILIAS/SS 23/Next Generation Internet
// iliasignore in ILIAS/.iliasignore: prefix = SS 23/Next Generation Internet/
// iliasignore in Next Generation Internet/.iliasignore: prefix = ""
loop {
let (ignore, error) = Gitignore::new(path.join(".iliasignore"));
if let Some(err) = error {
warning!(err);
}
if ignore.len() > 0 {
ignores.push(IgnoreFile {
ignore,
prefix: prefix.iter().fold(OsString::new(), |mut acc, el| {
acc.push(el);
acc.push("/");
acc
})
});
}
if let Some(last) = path.components().last() {
match last {
Component::Normal(name) => prefix.insert(0, name.to_owned()),
_ => break
}
}
path.pop();
}
Ok(IliasIgnore {
ignores
})
}
pub fn load(mut path: PathBuf) -> Result<Self> {
let mut ignores = Vec::new();
let mut prefix = Vec::new();
// example scenario:
// path = /KIT/ILIAS/SS 23/Next Generation Internet
// iliasignore in ILIAS/.iliasignore: prefix = SS 23/Next Generation Internet/
// iliasignore in Next Generation Internet/.iliasignore: prefix = ""
loop {
let (ignore, error) = Gitignore::new(path.join(".iliasignore"));
if let Some(err) = error {
warning!(err);
}
if ignore.len() > 0 {
ignores.push(IgnoreFile {
ignore,
prefix: prefix.iter().fold(OsString::new(), |mut acc, el| {
acc.push(el);
acc.push("/");
acc
}),
});
}
if let Some(last) = path.components().last() {
match last {
Component::Normal(name) => prefix.insert(0, name.to_owned()),
_ => break,
}
}
path.pop();
}
Ok(IliasIgnore { ignores })
}
pub fn should_ignore(&self, path: &Path, is_dir: bool) -> bool {
for ignore_file in &self.ignores {
let mut full_path = ignore_file.prefix.clone();
full_path.push(path.as_os_str());
let matched = ignore_file.ignore.matched(&full_path, is_dir);
if matched.is_whitelist() {
return false;
} else if matched.is_ignore() {
return true;
}
}
false
}
pub fn should_ignore(&self, path: &Path, is_dir: bool) -> bool {
for ignore_file in &self.ignores {
let mut full_path = ignore_file.prefix.clone();
full_path.push(path.as_os_str());
let matched = ignore_file.ignore.matched(&full_path, is_dir);
if matched.is_whitelist() {
return false;
} else if matched.is_ignore() {
return true;
}
}
false
}
}
#[derive(Clone, Debug)]
struct IgnoreFile {
ignore: Gitignore,
prefix: OsString
ignore: Gitignore,
prefix: OsString,
}