Allow setting thread number in CLI
This commit is contained in:
parent
4b6cf4bc9d
commit
1ee54c899f
2 changed files with 62 additions and 3 deletions
|
@ -85,6 +85,8 @@ pub enum Commands {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct DuplicatesArgs {
|
pub struct DuplicatesArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -163,6 +165,8 @@ pub struct DuplicatesArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct EmptyFoldersArgs {
|
pub struct EmptyFoldersArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -180,6 +184,8 @@ pub struct EmptyFoldersArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct BiggestFilesArgs {
|
pub struct BiggestFilesArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -205,6 +211,8 @@ pub struct BiggestFilesArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct EmptyFilesArgs {
|
pub struct EmptyFilesArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -226,6 +234,8 @@ pub struct EmptyFilesArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct TemporaryArgs {
|
pub struct TemporaryArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -245,6 +255,8 @@ pub struct TemporaryArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct SimilarImagesArgs {
|
pub struct SimilarImagesArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -313,6 +325,8 @@ pub struct SimilarImagesArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct SameMusicArgs {
|
pub struct SameMusicArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -359,6 +373,8 @@ pub struct SameMusicArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct InvalidSymlinksArgs {
|
pub struct InvalidSymlinksArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -380,6 +396,8 @@ pub struct InvalidSymlinksArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct BrokenFilesArgs {
|
pub struct BrokenFilesArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -401,6 +419,8 @@ pub struct BrokenFilesArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct SimilarVideosArgs {
|
pub struct SimilarVideosArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -449,6 +469,8 @@ pub struct SimilarVideosArgs {
|
||||||
|
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct BadExtensionsArgs {
|
pub struct BadExtensionsArgs {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub thread_number: ThreadNumber,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub directories: Directories,
|
pub directories: Directories,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
|
@ -517,6 +539,12 @@ pub struct NotRecursive {
|
||||||
pub not_recursive: bool,
|
pub not_recursive: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, clap::Args)]
|
||||||
|
pub struct ThreadNumber {
|
||||||
|
#[clap(short = 'T', long, default_value = "0", help = "Limits thread number, 0(default) will use all available threads")]
|
||||||
|
pub thread_number: usize,
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(target_family = "unix")]
|
#[cfg(target_family = "unix")]
|
||||||
#[derive(Debug, clap::Args)]
|
#[derive(Debug, clap::Args)]
|
||||||
pub struct ExcludeOtherFilesystems {
|
pub struct ExcludeOtherFilesystems {
|
||||||
|
|
|
@ -6,7 +6,7 @@ use clap::Parser;
|
||||||
|
|
||||||
use commands::Commands;
|
use commands::Commands;
|
||||||
use czkawka_core::big_file::SearchMode;
|
use czkawka_core::big_file::SearchMode;
|
||||||
use czkawka_core::common::{get_number_of_threads, set_default_number_of_threads};
|
use czkawka_core::common::{get_number_of_threads, set_default_number_of_threads, set_number_of_threads};
|
||||||
#[allow(unused_imports)] // It is used in release for print_results().
|
#[allow(unused_imports)] // It is used in release for print_results().
|
||||||
use czkawka_core::common_traits::*;
|
use czkawka_core::common_traits::*;
|
||||||
use czkawka_core::similar_images::test_image_conversion_speed;
|
use czkawka_core::similar_images::test_image_conversion_speed;
|
||||||
|
@ -34,8 +34,6 @@ mod commands;
|
||||||
fn main() {
|
fn main() {
|
||||||
let command = Args::parse().command;
|
let command = Args::parse().command;
|
||||||
|
|
||||||
set_default_number_of_threads();
|
|
||||||
println!("Set thread number to {}", get_number_of_threads());
|
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
println!("{command:?}");
|
println!("{command:?}");
|
||||||
|
|
||||||
|
@ -59,6 +57,7 @@ fn main() {
|
||||||
|
|
||||||
fn duplicates(duplicates: DuplicatesArgs) {
|
fn duplicates(duplicates: DuplicatesArgs) {
|
||||||
let DuplicatesArgs {
|
let DuplicatesArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -78,6 +77,8 @@ fn duplicates(duplicates: DuplicatesArgs) {
|
||||||
case_sensitive_name_comparison,
|
case_sensitive_name_comparison,
|
||||||
} = duplicates;
|
} = duplicates;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut df = DuplicateFinder::new();
|
let mut df = DuplicateFinder::new();
|
||||||
|
|
||||||
df.set_included_directory(directories.directories);
|
df.set_included_directory(directories.directories);
|
||||||
|
@ -113,6 +114,7 @@ fn duplicates(duplicates: DuplicatesArgs) {
|
||||||
|
|
||||||
fn empty_folders(empty_folders: EmptyFoldersArgs) {
|
fn empty_folders(empty_folders: EmptyFoldersArgs) {
|
||||||
let EmptyFoldersArgs {
|
let EmptyFoldersArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
delete_folders,
|
delete_folders,
|
||||||
file_to_save,
|
file_to_save,
|
||||||
|
@ -122,6 +124,8 @@ fn empty_folders(empty_folders: EmptyFoldersArgs) {
|
||||||
exclude_other_filesystems,
|
exclude_other_filesystems,
|
||||||
} = empty_folders;
|
} = empty_folders;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut ef = EmptyFolder::new();
|
let mut ef = EmptyFolder::new();
|
||||||
|
|
||||||
ef.set_included_directory(directories.directories);
|
ef.set_included_directory(directories.directories);
|
||||||
|
@ -147,6 +151,7 @@ fn empty_folders(empty_folders: EmptyFoldersArgs) {
|
||||||
|
|
||||||
fn biggest_files(biggest_files: BiggestFilesArgs) {
|
fn biggest_files(biggest_files: BiggestFilesArgs) {
|
||||||
let BiggestFilesArgs {
|
let BiggestFilesArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -160,6 +165,8 @@ fn biggest_files(biggest_files: BiggestFilesArgs) {
|
||||||
smallest_mode,
|
smallest_mode,
|
||||||
} = biggest_files;
|
} = biggest_files;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut bf = BigFile::new();
|
let mut bf = BigFile::new();
|
||||||
|
|
||||||
bf.set_included_directory(directories.directories);
|
bf.set_included_directory(directories.directories);
|
||||||
|
@ -193,6 +200,7 @@ fn biggest_files(biggest_files: BiggestFilesArgs) {
|
||||||
|
|
||||||
fn empty_files(empty_files: EmptyFilesArgs) {
|
fn empty_files(empty_files: EmptyFilesArgs) {
|
||||||
let EmptyFilesArgs {
|
let EmptyFilesArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -204,6 +212,8 @@ fn empty_files(empty_files: EmptyFilesArgs) {
|
||||||
exclude_other_filesystems,
|
exclude_other_filesystems,
|
||||||
} = empty_files;
|
} = empty_files;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut ef = EmptyFiles::new();
|
let mut ef = EmptyFiles::new();
|
||||||
|
|
||||||
ef.set_included_directory(directories.directories);
|
ef.set_included_directory(directories.directories);
|
||||||
|
@ -234,6 +244,7 @@ fn empty_files(empty_files: EmptyFilesArgs) {
|
||||||
|
|
||||||
fn temporary(temporary: TemporaryArgs) {
|
fn temporary(temporary: TemporaryArgs) {
|
||||||
let TemporaryArgs {
|
let TemporaryArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -244,6 +255,8 @@ fn temporary(temporary: TemporaryArgs) {
|
||||||
not_recursive,
|
not_recursive,
|
||||||
} = temporary;
|
} = temporary;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut tf = Temporary::new();
|
let mut tf = Temporary::new();
|
||||||
|
|
||||||
tf.set_included_directory(directories.directories);
|
tf.set_included_directory(directories.directories);
|
||||||
|
@ -273,6 +286,7 @@ fn temporary(temporary: TemporaryArgs) {
|
||||||
|
|
||||||
fn similar_images(similar_images: SimilarImagesArgs) {
|
fn similar_images(similar_images: SimilarImagesArgs) {
|
||||||
let SimilarImagesArgs {
|
let SimilarImagesArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -288,6 +302,8 @@ fn similar_images(similar_images: SimilarImagesArgs) {
|
||||||
hash_size,
|
hash_size,
|
||||||
} = similar_images;
|
} = similar_images;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut sf = SimilarImages::new();
|
let mut sf = SimilarImages::new();
|
||||||
|
|
||||||
sf.set_included_directory(directories.directories);
|
sf.set_included_directory(directories.directories);
|
||||||
|
@ -320,6 +336,7 @@ fn similar_images(similar_images: SimilarImagesArgs) {
|
||||||
|
|
||||||
fn same_music(same_music: SameMusicArgs) {
|
fn same_music(same_music: SameMusicArgs) {
|
||||||
let SameMusicArgs {
|
let SameMusicArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -333,6 +350,8 @@ fn same_music(same_music: SameMusicArgs) {
|
||||||
music_similarity,
|
music_similarity,
|
||||||
} = same_music;
|
} = same_music;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut mf = SameMusic::new();
|
let mut mf = SameMusic::new();
|
||||||
|
|
||||||
mf.set_included_directory(directories.directories);
|
mf.set_included_directory(directories.directories);
|
||||||
|
@ -365,6 +384,7 @@ fn same_music(same_music: SameMusicArgs) {
|
||||||
|
|
||||||
fn invalid_symlinks(invalid_symlinks: InvalidSymlinksArgs) {
|
fn invalid_symlinks(invalid_symlinks: InvalidSymlinksArgs) {
|
||||||
let InvalidSymlinksArgs {
|
let InvalidSymlinksArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -376,6 +396,8 @@ fn invalid_symlinks(invalid_symlinks: InvalidSymlinksArgs) {
|
||||||
delete_files,
|
delete_files,
|
||||||
} = invalid_symlinks;
|
} = invalid_symlinks;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut ifs = InvalidSymlinks::new();
|
let mut ifs = InvalidSymlinks::new();
|
||||||
|
|
||||||
ifs.set_included_directory(directories.directories);
|
ifs.set_included_directory(directories.directories);
|
||||||
|
@ -405,6 +427,7 @@ fn invalid_symlinks(invalid_symlinks: InvalidSymlinksArgs) {
|
||||||
|
|
||||||
fn broken_files(broken_files: BrokenFilesArgs) {
|
fn broken_files(broken_files: BrokenFilesArgs) {
|
||||||
let BrokenFilesArgs {
|
let BrokenFilesArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -416,6 +439,8 @@ fn broken_files(broken_files: BrokenFilesArgs) {
|
||||||
exclude_other_filesystems,
|
exclude_other_filesystems,
|
||||||
} = broken_files;
|
} = broken_files;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut br = BrokenFiles::new();
|
let mut br = BrokenFiles::new();
|
||||||
|
|
||||||
br.set_included_directory(directories.directories);
|
br.set_included_directory(directories.directories);
|
||||||
|
@ -446,6 +471,7 @@ fn broken_files(broken_files: BrokenFilesArgs) {
|
||||||
|
|
||||||
fn similar_videos(similar_videos: SimilarVideosArgs) {
|
fn similar_videos(similar_videos: SimilarVideosArgs) {
|
||||||
let SimilarVideosArgs {
|
let SimilarVideosArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -459,6 +485,8 @@ fn similar_videos(similar_videos: SimilarVideosArgs) {
|
||||||
allowed_extensions,
|
allowed_extensions,
|
||||||
} = similar_videos;
|
} = similar_videos;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut vr = SimilarVideos::new();
|
let mut vr = SimilarVideos::new();
|
||||||
|
|
||||||
vr.set_included_directory(directories.directories);
|
vr.set_included_directory(directories.directories);
|
||||||
|
@ -488,6 +516,7 @@ fn similar_videos(similar_videos: SimilarVideosArgs) {
|
||||||
|
|
||||||
fn bad_extensions(bad_extensions: BadExtensionsArgs) {
|
fn bad_extensions(bad_extensions: BadExtensionsArgs) {
|
||||||
let BadExtensionsArgs {
|
let BadExtensionsArgs {
|
||||||
|
thread_number,
|
||||||
directories,
|
directories,
|
||||||
excluded_directories,
|
excluded_directories,
|
||||||
excluded_items,
|
excluded_items,
|
||||||
|
@ -498,6 +527,8 @@ fn bad_extensions(bad_extensions: BadExtensionsArgs) {
|
||||||
allowed_extensions,
|
allowed_extensions,
|
||||||
} = bad_extensions;
|
} = bad_extensions;
|
||||||
|
|
||||||
|
set_number_of_threads(thread_number.thread_number);
|
||||||
|
|
||||||
let mut be = BadExtensions::new();
|
let mut be = BadExtensions::new();
|
||||||
|
|
||||||
be.set_included_directory(directories.directories);
|
be.set_included_directory(directories.directories);
|
||||||
|
|
Loading…
Reference in a new issue