Skip to content

Commit

Permalink
Split cli and read files
Browse files Browse the repository at this point in the history
  • Loading branch information
WGUNDERWOOD committed Oct 14, 2024
1 parent 380380d commit 0dcbc93
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 55 deletions.
50 changes: 1 addition & 49 deletions src/parse.rs → src/cli.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
//! Utilities for reading the command line arguments

use crate::logging::*;
use crate::regexes::*;
use clap::Parser;
use log::Level::{Error, Trace};
use log::Level::Error;
use log::LevelFilter;
use std::fs;
use std::io::Read;

/// Command line arguments
#[allow(missing_docs)]
Expand Down Expand Up @@ -112,48 +109,3 @@ impl Cli {
}
}
}

/// Add a missing extension and read the file
pub fn read(file: &str, logs: &mut Vec<Log>) -> Option<(String, String)> {
// check if file has an accepted extension
let has_ext = EXTENSIONS.iter().any(|e| file.ends_with(e));
// if no valid extension, try adding .tex
let mut new_file = file.to_owned();
if !has_ext {
new_file.push_str(".tex");
};
if let Ok(text) = fs::read_to_string(&new_file) {
return Some((new_file, text));
}
if has_ext {
record_file_log(logs, Error, file, "Could not open file.");
} else {
record_file_log(logs, Error, file, "File type invalid.");
}
None
}

/// Attempt to read from STDIN, return filename `<STDIN>` and text
pub fn read_stdin(logs: &mut Vec<Log>) -> Option<(String, String)> {
let mut text = String::new();
match std::io::stdin().read_to_string(&mut text) {
Ok(bytes) => {
record_file_log(
logs,
Trace,
"<STDIN>",
&format!("Read {bytes} bytes."),
);
Some((String::from("<STDIN>"), text))
}
Err(e) => {
record_file_log(
logs,
Error,
"<STDIN>",
&format!("Could not read from STDIN: {e}"),
);
None
}
}
}
2 changes: 1 addition & 1 deletion src/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use crate::ignore::*;
use crate::indent::*;
use crate::logging::*;
use crate::parse::*;
use crate::cli::*;
use crate::regexes::{ENV_BEGIN, ENV_END, ITEM};
use crate::subs::*;
use crate::verbatim::*;
Expand Down
2 changes: 1 addition & 1 deletion src/indent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::comments::*;
use crate::format::*;
use crate::ignore::*;
use crate::logging::*;
use crate::parse::*;
use crate::cli::*;
use crate::regexes::*;
use crate::verbatim::*;
use core::cmp::max;
Expand Down
6 changes: 4 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,17 @@ mod format;
mod ignore;
mod indent;
mod logging;
mod parse;
mod cli;
mod read;
mod regexes;
mod subs;
mod verbatim;
mod wrap;
mod write;
use crate::format::*;
use crate::logging::*;
use crate::parse::*;
use crate::cli::*;
use crate::read::*;
use crate::write::*;

#[cfg(test)]
Expand Down
50 changes: 50 additions & 0 deletions src/read.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
use crate::logging::*;
use crate::regexes::*;
use log::Level::{Error, Trace};
use std::io::Read;
use std::fs;

/// Add a missing extension and read the file
pub fn read(file: &str, logs: &mut Vec<Log>) -> Option<(String, String)> {
// check if file has an accepted extension
let has_ext = EXTENSIONS.iter().any(|e| file.ends_with(e));
// if no valid extension, try adding .tex
let mut new_file = file.to_owned();
if !has_ext {
new_file.push_str(".tex");
};
if let Ok(text) = fs::read_to_string(&new_file) {
return Some((new_file, text));
}
if has_ext {
record_file_log(logs, Error, file, "Could not open file.");
} else {
record_file_log(logs, Error, file, "File type invalid.");
}
None
}

/// Attempt to read from STDIN, return filename `<STDIN>` and text
pub fn read_stdin(logs: &mut Vec<Log>) -> Option<(String, String)> {
let mut text = String::new();
match std::io::stdin().read_to_string(&mut text) {
Ok(bytes) => {
record_file_log(
logs,
Trace,
"<STDIN>",
&format!("Read {bytes} bytes."),
);
Some((String::from("<STDIN>"), text))
}
Err(e) => {
record_file_log(
logs,
Error,
"<STDIN>",
&format!("Could not read from STDIN: {e}"),
);
None
}
}
}
2 changes: 1 addition & 1 deletion src/wrap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use crate::comments::*;
use crate::format::*;
use crate::logging::*;
use crate::parse::*;
use crate::cli::*;
use log::Level::{Trace, Warn};

/// Check if a line needs wrapping
Expand Down
2 changes: 1 addition & 1 deletion src/write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

use crate::fs;
use crate::logging::*;
use crate::parse::*;
use crate::cli::*;
use log::Level::Error;
use std::path;

Expand Down

0 comments on commit 0dcbc93

Please sign in to comment.