args: allow filter files and raw filters on cli
Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
37
src/app.rs
37
src/app.rs
@@ -635,13 +635,46 @@ impl Damus {
|
|||||||
) -> Self {
|
) -> Self {
|
||||||
let mut timelines: Vec<Timeline> = vec![];
|
let mut timelines: Vec<Timeline> = vec![];
|
||||||
let mut is_mobile: Option<bool> = None;
|
let mut is_mobile: Option<bool> = None;
|
||||||
|
let mut i = 0;
|
||||||
|
|
||||||
if args.len() > 1 {
|
if args.len() > 1 {
|
||||||
for arg in &args[1..] {
|
for arg in &args[1..] {
|
||||||
if arg == "--mobile" {
|
if arg == "--mobile" {
|
||||||
is_mobile = Some(true);
|
is_mobile = Some(true);
|
||||||
} else if let Ok(filter) = serde_json::from_str(arg) {
|
} else if arg == "--filter" {
|
||||||
timelines.push(Timeline::new(filter));
|
let next_args = &args[1 + i + 1..];
|
||||||
|
if next_args.len() == 0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let filter = &next_args[0];
|
||||||
|
|
||||||
|
if let Ok(filter) = serde_json::from_str(filter) {
|
||||||
|
timelines.push(Timeline::new(filter));
|
||||||
|
} else {
|
||||||
|
error!("failed to parse filter '{}'", filter);
|
||||||
|
}
|
||||||
|
} else if arg == "--filter-file" || arg == "-f" {
|
||||||
|
let next_args = &args[1 + i + 1..];
|
||||||
|
if next_args.len() == 0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let filter_file = &next_args[0];
|
||||||
|
|
||||||
|
let data = if let Ok(data) = std::fs::read(filter_file) {
|
||||||
|
data
|
||||||
|
} else {
|
||||||
|
error!("failed to read filter file '{}'", filter_file);
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Ok(filter) = serde_json::from_slice(&data) {
|
||||||
|
timelines.push(Timeline::new(filter));
|
||||||
|
} else {
|
||||||
|
error!("failed to parse filter in '{}'", filter_file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i += 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let filter = serde_json::from_str(include_str!("../queries/timeline.json")).unwrap();
|
let filter = serde_json::from_str(include_str!("../queries/timeline.json")).unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user