pub struct Strategy {}
-use std::path::PathBuf;
use std::fs::{copy, create_dir_all};
+use std::path::Path;
-use crate::file_handler::{File, FileType, FileHandlerStrategy};
+use crate::file_handler::{File, FileType, Strategy as FileHandlerStrategy};
impl Strategy {
- fn handle(&self, source: &PathBuf, destination: &PathBuf, file: &File) {
- let relative_path = file.path.strip_prefix(&source).unwrap();
+ fn handle(source: &Path, destination: &Path, file: &File) {
+ let relative_path = file.path.strip_prefix(source).unwrap();
let complete_destination = destination.join(relative_path);
let destination_parent = complete_destination.parent().unwrap();
create_dir_all(destination_parent).unwrap();
}
impl FileHandlerStrategy for Strategy {
- fn is(&self, path: &PathBuf) -> bool {
+ fn is(&self, path: &Path) -> bool {
!path.is_dir()
}
}
fn can_handle(&self, file_type: &FileType) -> bool {
- match file_type {
- FileType::File => true,
- _ => false,
- }
+ matches!(file_type, FileType::File)
}
- fn handle_html(&self, source: &PathBuf, destination: &PathBuf, file: &File, _l: &str) {
- return self.handle(source, destination, file);
+ fn handle_html(&self, source: &Path, destination: &Path, file: &File, _l: &str) {
+ Strategy::handle(source, destination, file);
}
- fn handle_gemini(&self, source: &PathBuf, destination: &PathBuf, file: &File) {
- return self.handle(source, destination, file);
+ fn handle_gemini(&self, source: &Path, destination: &Path, file: &File) {
+ Strategy::handle(source, destination, file);
}
}
let test_dir = setup_test_dir();
let source_dir = test_dir.join("source");
let output_dir = test_dir.join("output");
- create_dir_all(&source_dir)
- .expect("Could not create source test directory");
- create_dir_all(&output_dir)
- .expect("Could not create output test directory");
+ create_dir_all(&source_dir).expect("Could not create source test directory");
+ create_dir_all(&output_dir).expect("Could not create output test directory");
create_test_file(&source_dir.join("image.png"), "A fish playing the banjo");
let strategy = Strategy {};
// Verify file contents are identical
let original = fs::read(&file.path).unwrap();
- let copied = fs::read(&copied_path).unwrap();
+ let copied = fs::read(copied_path).unwrap();
assert_eq!(original, copied);
}
let test_dir = setup_test_dir();
let source_dir = test_dir.join("source");
let output_dir = test_dir.join("output");
- create_dir_all(&source_dir)
- .expect("Could not create source test directory");
- create_dir_all(&output_dir)
- .expect("Could not create output test directory");
- create_dir_all(&source_dir.join("nested"))
- .expect("Could not create source test directory");
- create_test_file(&source_dir.join("nested/style.css"), "* { margin: 0; padding: 0 }");
+ create_dir_all(&source_dir).expect("Could not create source test directory");
+ create_dir_all(&output_dir).expect("Could not create output test directory");
+ create_dir_all(source_dir.join("nested")).expect("Could not create source test directory");
+ create_test_file(
+ &source_dir.join("nested/style.css"),
+ "* { margin: 0; padding: 0 }",
+ );
let strategy = Strategy {};
let file = File {
let test_dir = setup_test_dir();
let source_dir = test_dir.join("source");
let output_dir = test_dir.join("output");
- create_dir_all(&source_dir)
- .expect("Could not create source test directory");
- create_dir_all(&output_dir)
- .expect("Could not create output test directory");
+ create_dir_all(&source_dir).expect("Could not create source test directory");
+ create_dir_all(&output_dir).expect("Could not create output test directory");
create_test_file(&source_dir.join("image.png"), "A fish playing the banjo");
let strategy = Strategy {};
// Verify file contents are identical
let original = fs::read(&file.path).unwrap();
- let copied = fs::read(&copied_path).unwrap();
+ let copied = fs::read(copied_path).unwrap();
assert_eq!(original, copied);
}
let test_dir = setup_test_dir();
let source_dir = test_dir.join("source");
let output_dir = test_dir.join("output");
- create_dir_all(&source_dir)
- .expect("Could not create source test directory");
- create_dir_all(&output_dir)
- .expect("Could not create output test directory");
+ create_dir_all(&source_dir).expect("Could not create source test directory");
+ create_dir_all(&output_dir).expect("Could not create output test directory");
create_test_file(&source_dir.join("image.png"), "A fish playing the banjo");
let strategy = Strategy {};
// Verify file contents are identical
let original = fs::read(&file.path).unwrap();
- let copied = fs::read(&copied_path).unwrap();
+ let copied = fs::read(copied_path).unwrap();
assert_eq!(original, copied);
}
}