duplicate_code 0.8.1

A tool for parsing directories scanning all the files within to find duplicate segments of code across files.
#[macro_use]
extern crate log;
extern crate pretty_env_logger;

use structopt::StructOpt;

mod cli;
mod duplicate_detection;
mod hashing_utilities;
mod model;
mod regex_utilities;
mod reporter;

const ERROR_EXIT_CODE: i32 = 1;

fn main() {
    pretty_env_logger::init();
    let arguments = cli::Arguments::from_args();
    debug!("The command line arguments provided are {:?}.", arguments);

    let raw_files = crate::model::raw_file::get_raw_files(arguments.ignore_file_regex);
    let indexed_files =
        crate::model::indexed_file::to_indexed_files(arguments.ignore_line_regex, raw_files);
    let hashed_files = crate::model::hashed_file::to_hashed_files(&indexed_files);
    let duplicates = crate::duplicate_detection::get_all_duplicates(
        arguments.minimum_successive_lines,
        hashed_files,
    );

    if arguments.json {
        crate::reporter::json_print_duplicates(duplicates);
    } else {
        crate::reporter::pretty_print_duplicates(indexed_files, duplicates);
    }
}